当前位置: 首页>>代码示例>>Java>>正文


Java SourcePosition.createFromLine方法代码示例

本文整理汇总了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;
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:23,代码来源:JSR45PositionManager.java

示例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());
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:23,代码来源:CompoundPositionManager.java

示例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;
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:9,代码来源:PositionManagerImpl.java

示例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;
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:41,代码来源:JavaLineBreakpointType.java

示例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);
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:15,代码来源:GroovyPositionManager.java

示例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;
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:35,代码来源:GroovyPositionManager.java


注:本文中的com.intellij.debugger.SourcePosition.createFromLine方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。