本文整理汇总了Java中com.intellij.debugger.SourcePosition.createFromLine方法的典型用法代码示例。如果您正苦于以下问题:Java SourcePosition.createFromLine方法的具体用法?Java SourcePosition.createFromLine怎么用?Java SourcePosition.createFromLine使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类com.intellij.debugger.SourcePosition
的用法示例。
在下文中一共展示了SourcePosition.createFromLine方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: getSourcePosition
import com.intellij.debugger.SourcePosition; //导入方法依赖的package包/类
@Override
public SourcePosition getSourcePosition(final Location location) throws NoDataException {
SourcePosition sourcePosition = null;
try {
String sourcePath = getRelativeSourcePathByLocation(location);
PsiFile file = mySourcesFinder.findSourceFile(sourcePath, myDebugProcess.getProject(), myScope);
if(file != null) {
int lineNumber = getLineNumber(location);
sourcePosition = SourcePosition.createFromLine(file, lineNumber - 1);
}
}
catch (AbsentInformationException ignored) { // ignored
}
catch (Throwable e) {
LOG.info(e);
}
if(sourcePosition == null) {
throw NoDataException.INSTANCE;
}
return sourcePosition;
}
示例2: locationsOfLine
import com.intellij.debugger.SourcePosition; //导入方法依赖的package包/类
@Override
@NotNull
public List<Location> locationsOfLine(@NotNull final ReferenceType type, @NotNull SourcePosition position) {
VirtualFile file = position.getFile().getVirtualFile();
if (file != null) {
LineNumbersMapping mapping = file.getUserData(LineNumbersMapping.LINE_NUMBERS_MAPPING_KEY);
if (mapping != null) {
int line = mapping.sourceToBytecode(position.getLine() + 1);
if (line > -1) {
position = SourcePosition.createFromLine(position.getFile(), line - 1);
}
}
}
final SourcePosition finalPosition = position;
return iterate(new Processor<List<Location>>() {
@Override
public List<Location> process(PositionManager positionManager) throws NoDataException {
return positionManager.locationsOfLine(type, finalPosition);
}
}, Collections.<Location>emptyList());
}
示例3: calcLineMappedSourcePosition
import com.intellij.debugger.SourcePosition; //导入方法依赖的package包/类
@Nullable
private static SourcePosition calcLineMappedSourcePosition(PsiFile psiFile, int originalLine) {
int line = bytecodeToSourceLine(psiFile, originalLine);
if (line > -1) {
return SourcePosition.createFromLine(psiFile, line - 1);
}
return null;
}
示例4: computeVariants
import com.intellij.debugger.SourcePosition; //导入方法依赖的package包/类
@NotNull
@Override
public List<JavaBreakpointVariant> computeVariants(@NotNull Project project, @NotNull XSourcePosition position) {
PsiFile file = PsiManager.getInstance(project).findFile(position.getFile());
if (file == null) {
return Collections.emptyList();
}
SourcePosition pos = SourcePosition.createFromLine(file, position.getLine());
List<PsiLambdaExpression> lambdas = DebuggerUtilsEx.collectLambdas(pos, true);
if (lambdas.isEmpty()) {
return Collections.emptyList();
}
PsiElement startMethod = DebuggerUtilsEx.getContainingMethod(pos);
//noinspection SuspiciousMethodCalls
if (lambdas.contains(startMethod) && lambdas.size() == 1) {
return Collections.emptyList();
}
Document document = PsiDocumentManager.getInstance(file.getProject()).getDocument(file);
if (document == null) {
return Collections.emptyList();
}
List<JavaBreakpointVariant> res = new SmartList<JavaBreakpointVariant>();
res.add(new JavaBreakpointVariant(position)); //all
if (startMethod instanceof PsiMethod) {
res.add(new ExactJavaBreakpointVariant(position, startMethod, -1)); // base method
}
int ordinal = 0;
for (PsiLambdaExpression lambda : lambdas) { //lambdas
PsiElement firstElem = DebuggerUtilsEx.getFirstElementOnTheLine(lambda, document, position.getLine());
res.add(new ExactJavaBreakpointVariant(XSourcePositionImpl.createByElement(firstElem), lambda, ordinal++));
}
return res;
}
示例5: getSourcePosition
import com.intellij.debugger.SourcePosition; //导入方法依赖的package包/类
@Override
public SourcePosition getSourcePosition(final Location location) throws NoDataException {
if (location == null) throw NoDataException.INSTANCE;
if (LOG.isDebugEnabled()) {
LOG.debug("getSourcePosition: " + location);
}
PsiFile psiFile = getPsiFileByLocation(getDebugProcess().getProject(), location);
if (psiFile == null) throw NoDataException.INSTANCE;
int lineNumber = calcLineIndex(location);
if (lineNumber < 0) throw NoDataException.INSTANCE;
return SourcePosition.createFromLine(psiFile, lineNumber);
}
示例6: findNested
import com.intellij.debugger.SourcePosition; //导入方法依赖的package包/类
@Nullable
private ReferenceType findNested(ReferenceType fromClass, final GroovyPsiElement toFind, SourcePosition classPosition) {
final VirtualMachineProxy vmProxy = myDebugProcess.getVirtualMachineProxy();
if (fromClass.isPrepared()) {
final List<ReferenceType> nestedTypes = vmProxy.nestedTypes(fromClass);
for (ReferenceType nested : nestedTypes) {
final ReferenceType found = findNested(nested, toFind, classPosition);
if (found != null) {
return found;
}
}
try {
final int lineNumber = classPosition.getLine() + 1;
if (!fromClass.locationsOfLine(lineNumber).isEmpty()) {
return fromClass;
}
//noinspection LoopStatementThatDoesntLoop
for (Location location : fromClass.allLineLocations()) {
final SourcePosition candidateFirstPosition = SourcePosition.createFromLine(toFind.getContainingFile(), location.lineNumber() - 1)
;
if (toFind.equals(findReferenceTypeSourceImage(candidateFirstPosition))) {
return fromClass;
}
break; // isApplicable only the first location
}
}
catch (AbsentInformationException ignored) {
}
}
return null;
}