com.sun.source.util.TreePath.getLeaf()方法的使用及代码示例

x33g5p2x  于2022-01-29 转载在 其他  
字(10.5k)|赞(0)|评价(0)|浏览(65)

本文整理了Java中com.sun.source.util.TreePath.getLeaf()方法的一些代码示例,展示了TreePath.getLeaf()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。TreePath.getLeaf()方法的具体详情如下:
包路径:com.sun.source.util.TreePath
类名称:TreePath
方法名:getLeaf

TreePath.getLeaf介绍

[英]Get the leaf node for this path.
[中]获取此路径的叶节点。

代码示例

代码示例来源:origin: google/error-prone

@Nullable
 private static JCMethodDecl findSurroundingMethod(TreePath path) {
  while (path.getLeaf().getKind() != Kind.METHOD) {
   if (path.getLeaf().getKind() == Kind.LAMBDA_EXPRESSION) {
    // Ignore return statements in lambda expressions. There's no method declaration to suggest
    // annotations for anyway.
    return null;
   }
   path = path.getParentPath();
  }
  return (JCMethodDecl) path.getLeaf();
 }
}

代码示例来源:origin: google/error-prone

/**
 * Given a TreePath, finds the first enclosing node of the given type and returns the path from
 * the enclosing node to the top-level {@code CompilationUnitTree}.
 */
public static <T> TreePath findPathFromEnclosingNodeToTopLevel(TreePath path, Class<T> klass) {
 if (path != null) {
  do {
   path = path.getParentPath();
  } while (path != null && !(klass.isInstance(path.getLeaf())));
 }
 return path;
}

代码示例来源:origin: google/error-prone

private static boolean isInPrivateScope(VisitorState state) {
  TreePath treePath = state.getPath();
  do {
   Tree currentLeaf = treePath.getLeaf();
   if (currentLeaf instanceof ClassTree) {
    ClassTree currentClassTree = (ClassTree) currentLeaf;
    if (currentClassTree.getModifiers().getFlags().contains(PRIVATE)) {
     return true;
    }
   }
   treePath = treePath.getParentPath();
  } while (treePath != null);

  return false;
 }
}

代码示例来源:origin: google/error-prone

@Override
public IdentifierTree visitIdentifier(IdentifierTree node, Void aVoid) {
 Symbol nodeSymbol = ASTHelpers.getSymbol(node);
 if (symbols.contains(nodeSymbol) && !isSuppressed(node)) {
  if (getCurrentPath().getParentPath().getLeaf().getKind() != Kind.CASE) {
   builder.prefixWith(node, enclosingReplacement);
   moveTypeAnnotations(node);
   return node;
  }
 }
 return super.visitIdentifier(node, aVoid);
}

代码示例来源:origin: uber/NullAway

private boolean relevantInitializerMethodOrBlock(
  TreePath enclosingBlockPath, VisitorState state) {
 Tree methodLambdaOrBlock = enclosingBlockPath.getLeaf();
 if (methodLambdaOrBlock instanceof LambdaExpressionTree) {
  return false;
 } else if (methodLambdaOrBlock instanceof MethodTree) {
  MethodTree methodTree = (MethodTree) methodLambdaOrBlock;
  if (isConstructor(methodTree) && !constructorInvokesAnother(methodTree, state)) return true;
  if (ASTHelpers.getSymbol(methodTree).isStatic()) {
   Set<MethodTree> staticInitializerMethods =
     class2Entities.get(enclosingClassSymbol(enclosingBlockPath)).staticInitializerMethods();
   return staticInitializerMethods.size() == 1
     && staticInitializerMethods.contains(methodTree);
  } else {
   Set<MethodTree> instanceInitializerMethods =
     class2Entities
       .get(enclosingClassSymbol(enclosingBlockPath))
       .instanceInitializerMethods();
   return instanceInitializerMethods.size() == 1
     && instanceInitializerMethods.contains(methodTree);
  }
 } else {
  // initializer or field declaration
  return true;
 }
}

代码示例来源:origin: org.netbeans.modules/org-netbeans-modules-java-editor-base

private void typeUsed(Element decl, TreePath expr, boolean methodInvocation) {
  if (decl != null && (expr == null || expr.getLeaf().getKind() == Kind.IDENTIFIER || expr.getLeaf().getKind() == Kind.PARAMETERIZED_TYPE)) {
    if (!isErroneous(decl)) {
      ImportTree imp = element2Import.get(decl);
      if (imp != null) {
        addUsage(imp);
        if (isStar(imp)) {
          //TODO: explain
          handleUnresolvableImports(decl, methodInvocation, false);
        }
      }
    } else {
      handleUnresolvableImports(decl, methodInvocation, true);
      
      for (Entry<Element, ImportTree> e : element2Import.entrySet()) {
        if (importedBySingleImport.contains(e.getKey())) continue;
        
        if (e.getKey().getSimpleName().equals(decl.getSimpleName())) {
          import2Highlight.remove(e.getValue());
        }
      }
    }
  }
}

代码示例来源:origin: uber/NullAway

@Override
public void onMatchReturn(NullAway analysis, ReturnTree tree, VisitorState state) {
 // Figure out the enclosing method node
 TreePath enclosingMethodOrLambda =
   NullabilityUtil.findEnclosingMethodOrLambdaOrInitializer(state.getPath());
 if (enclosingMethodOrLambda == null) {
  throw new RuntimeException("no enclosing method, lambda or initializer!");
 }
 if (!(enclosingMethodOrLambda.getLeaf() instanceof MethodTree
   || enclosingMethodOrLambda.getLeaf() instanceof LambdaExpressionTree)) {
  throw new RuntimeException(
    "return statement outside of a method or lambda! (e.g. in an initializer block)");
 }
 Tree leaf = enclosingMethodOrLambda.getLeaf();
 if (filterMethodOrLambdaSet.contains(leaf)) {
  returnToEnclosingMethodOrLambda.put(tree, leaf);
  // We need to manually trigger the dataflow analysis to run on the filter method,
  // this ensures onDataflowVisitReturn(...) gets called for all return statements in this
  // method before
  // onDataflowInitialStore(...) is called for all successor methods in the observable chain.
  // Caching should prevent us from re-analyzing any given method.
  AccessPathNullnessAnalysis nullnessAnalysis = analysis.getNullnessAnalysis(state);
  nullnessAnalysis.forceRunOnMethod(new TreePath(state.getPath(), leaf), state.context);
 }
}

代码示例来源:origin: org.netbeans.modules/org-netbeans-modules-java-testrunner-ui

public static ErrorDescription computeWarning(HintContext context) {
  final TreePath tp = context.getPath();
  final MethodTree method = (MethodTree) tp.getLeaf();
if (method.getModifiers().getFlags().contains(Modifier.PRIVATE)) {
  return null;
  SourcePositions sourcePositions = info.getTrees().getSourcePositions();
  int startPos = (int) sourcePositions.getStartPosition(tp.getCompilationUnit(), method);
  int caret = context.getCaretLocation();

代码示例来源:origin: org.netbeans.modules/org-netbeans-modules-visualweb-insync

private boolean canSkip(TreePath path) {
  if (cinfo.getTreeUtilities().isSynthetic(path)) {
    return false;
  }
  Element el = cinfo.getTrees().getElement(path);
  if (el != null && elementAndNames.containsKey(el)) {
    TreePath declPath = cinfo.getTrees().getPath(el);
    if(declPath.getLeaf().equals(path.getLeaf())) {
      return true;
    }
  }
  return false;
}

代码示例来源:origin: google/error-prone

path = new TreePath(taskEvent.getCompilationUnit());
verify(seen.add(path.getLeaf()), "Duplicate FLOW event for: %s", taskEvent.getTypeElement());
Context subContext = new SubContext(context);
subContext.put(ErrorProneOptions.class, errorProneOptions);
  return;
 if (path.getLeaf().getKind() == Tree.Kind.COMPILATION_UNIT) {
  transformer.get().apply(new TreePath(compilation), subContext, countingDescriptionListener);

代码示例来源:origin: org.netbeans.api/org-netbeans-modules-vmd-midp

private static ExpressionTree findImplementIdentifier (Trees trees, TreePath classTreePath, String fullyQualifiedName) {
  ClassTree clazz = (ClassTree) classTreePath.getLeaf ();
  for (Tree tree : clazz.getImplementsClause ()) {
    Element element = trees.getElement (new TreePath (classTreePath, tree));
    if (equalsElementWithFQN (element, fullyQualifiedName))
      return (ExpressionTree) tree;
  }
  return null;
}

代码示例来源:origin: org.netbeans.modules/org-netbeans-modules-junit-ui

/**
 */
public void handleDeclaration() {
  Element found = trees.getElement(getCurrentPath());
  
  if (element.equals(found)) {
    declTree = getCurrentPath().getLeaf();
  }
}

代码示例来源:origin: org.netbeans.modules/org-netbeans-modules-java-testrunner-ui

public static ErrorDescription computeWarning(HintContext context) {
TreePath tp = context.getPath();
  ClassTree cls = (ClassTree) tp.getLeaf();
  CompilationInfo info = context.getInfo();
  SourcePositions sourcePositions = info.getTrees().getSourcePositions();
  int startPos = (int) sourcePositions.getStartPosition(tp.getCompilationUnit(), cls);
  int caret = context.getCaretLocation();

代码示例来源:origin: google/error-prone

@Override
public Description matchVariable(VariableTree tree, VisitorState state) {
 ExpressionTree initializer = stripNullCheck(tree.getInitializer(), state);
 Tree parent = state.getPath().getParentPath().getLeaf();
 // must be a static class variable with member select initializer
 if (initializer == null
   || initializer.getKind() != MEMBER_SELECT
   || parent.getKind() != CLASS
   || !tree.getModifiers().getFlags().contains(STATIC)) {
  return Description.NO_MATCH;
 }
 MemberSelectTree rhs = (MemberSelectTree) initializer;
 Symbol rhsClass = ASTHelpers.getSymbol(rhs.getExpression());
 Symbol lhsClass = ASTHelpers.getSymbol(parent);
 if (rhsClass != null
   && lhsClass != null
   && rhsClass.equals(lhsClass)
   && rhs.getIdentifier().contentEquals(tree.getName())) {
  return describeForVarDecl(tree, state);
 }
 return Description.NO_MATCH;
}

代码示例来源:origin: google/error-prone

while (path != null && !(path.getLeaf() instanceof MethodTree)) {
 path = path.getParentPath();
MethodTree methodDecl = (MethodTree) path.getLeaf();
for (VariableTree param : methodDecl.getParameters()) {
 if (symbols.contains(ASTHelpers.getSymbol(param))) {
  return true;

代码示例来源:origin: google/error-prone

return NO_MATCH;
if (!requiresJavadoc(docTreePath.getTreePath().getLeaf(), state)) {
 return Description.NO_MATCH;
 return NO_MATCH;
Symbol symbol = getSymbol(docTreePath.getTreePath().getLeaf());
if (symbol == null) {
 return NO_MATCH;
if (!modifiers.contains(Modifier.PUBLIC) && !modifiers.contains(Modifier.PROTECTED)) {
 return NO_MATCH;

代码示例来源:origin: org.netbeans.api/org-netbeans-modules-java-source-base

public static LinkedList<Diff> reformat(String text, TokenSequence<JavaTokenId> tokens, TreePath path, SourcePositions sp, CodeStyle cs, int rightMargin) {
  Pretty pretty = new Pretty(text, tokens, path, sp, cs, 0, text.length(), rightMargin);
  pretty.scan(path, null);
  CompilationUnitTree cut = (CompilationUnitTree) path.getLeaf();
  List<? extends Tree> typeDecls = cut.getTypeDecls();
  int size = typeDecls.size();
  int cnt = size > 0 && org.netbeans.api.java.source.TreeUtilities.CLASS_TREE_KINDS.contains(typeDecls.get(size - 1).getKind()) ? cs.getBlankLinesAfterClass() : 1;
  if (cnt < 1)
    cnt = 1;
  String s = pretty.getNewlines(cnt);
  tokens.moveEnd();
  tokens.movePrevious();
  if (tokens.token().id() != WHITESPACE)
    pretty.diffs.addFirst(new Diff(text.length(), text.length(), s));
  else if (!s.contentEquals(tokens.token().text()))
    pretty.diffs.addFirst(new Diff(tokens.offset(), tokens.offset() + tokens.token().length(), s));
  return pretty.diffs;
}

代码示例来源:origin: robolectric/robolectric

private static boolean isPartOfMethodInvocation(TreePath idPath) {
 Kind parentKind = idPath.getParentPath().getLeaf().getKind();
 if (parentKind == Kind.METHOD_INVOCATION) {
  // must be an argument
  return true;
 }
 if (parentKind == Kind.MEMBER_SELECT) {
  Tree maybeMethodInvocation = idPath.getParentPath().getParentPath().getLeaf();
  // likely the target of the method invocation
  return maybeMethodInvocation.getKind() == Kind.METHOD_INVOCATION;
 }
 return false;
}

代码示例来源:origin: google/error-prone

private static boolean isEnhancedForLoopVar(TreePath variablePath) {
 Tree tree = variablePath.getLeaf();
 Tree parent = variablePath.getParentPath().getLeaf();
 return parent instanceof EnhancedForLoopTree
   && ((EnhancedForLoopTree) parent).getVariable() == tree;
}

代码示例来源:origin: org.netbeans.modules/org-netbeans-modules-groovy-editor

public void handleDeclaration() {
  Element found = info.getTrees().getElement(getCurrentPath());
  if ( element.equals( found ) ) {
    declTree = getCurrentPath().getLeaf();
  }
}

相关文章

微信公众号

最新文章

更多