public Scope getScope() throws IOException { if (scope == null) { controller.toPhase(JavaSource.Phase.ELEMENTS_RESOLVED); scope = controller.getTreeUtilities().scopeFor(offset); } return scope; }
packageName = elements.getPackageOf(typeElement).getQualifiedName().toString(); TreePath tp = controller.getTreeUtilities().pathFor(caretPosition); while (tp != null && tp.getLeaf().getKind() != Kind.METHOD) { tp = tp.getParentPath();
TypeElement testcase = elements.getTypeElement(TESTCASE); boolean junit3 = (testcase != null && typeElement != null) ? controller.getTypes().isSubtype(typeElement.asType(), testcase.asType()) : false; TreePath tp = controller.getTreeUtilities().pathFor(caretPosition); while (tp != null && tp.getLeaf().getKind() != Kind.METHOD) { tp = tp.getParentPath();
private void addAttributeValues(Env env, Element element, AnnotationMirror annotation, ExecutableElement member) throws IOException { CompilationController controller = env.getController(); TreeUtilities tu = controller.getTreeUtilities(); ElementUtilities eu = controller.getElementUtilities(); for (javax.annotation.processing.Completion completion : SourceUtils.getAttributeValueCompletions(controller, element, annotation, member, env.getPrefix())) { String value = completion.getValue().trim(); if (value.length() > 0 && startsWith(env, value)) { TypeMirror type = member.getReturnType(); TypeElement typeElement = null; while (type.getKind() == TypeKind.ARRAY) { type = ((ArrayType) type).getComponentType(); } if (type.getKind() == TypeKind.DECLARED) { CharSequence fqn = ((TypeElement) ((DeclaredType) type).asElement()).getQualifiedName(); if (JAVA_LANG_CLASS.contentEquals(fqn)) { String name = value.endsWith(".class") ? value.substring(0, value.length() - 6) : value; //NOI18N TypeMirror tm = tu.parseType(name, eu.outermostTypeElement(element)); typeElement = tm != null && tm.getKind() == TypeKind.DECLARED ? (TypeElement) ((DeclaredType) tm).asElement() : null; if (typeElement != null && startsWith(env, typeElement.getSimpleName().toString())) { env.addToExcludes(typeElement); } } } results.add(itemFactory.createAttributeValueItem(env.getController(), value, completion.getMessage(), typeElement, anchorOffset, env.getReferencesCount())); } } }
TypeElement testcase = elements.getTypeElement(TESTCASE); boolean junit3 = (testcase != null && typeElement != null) ? controller.getTypes().isSubtype(typeElement.asType(), testcase.asType()) : false; TreePath tp = controller.getTreeUtilities().pathFor(caretPosition); while (tp != null && tp.getLeaf().getKind() != Kind.METHOD) { tp = tp.getParentPath();
@Override public void run(ResultIterator resultIterator) throws Exception { Result res = resultIterator.getParserResult(offset); if (res == null) { return; } CompilationController controller = CompilationController.get(res); if (controller == null || controller.toPhase(Phase.RESOLVED).compareTo(Phase.RESOLVED) < 0) { return; } TreePath path = controller.getTreeUtilities().pathFor(offset); javax.lang.model.element.Element elem = controller.getTrees().getElement(path); ElementKind kind = elem.getKind(); if (kind == ElementKind.CLASS || kind == ElementKind.ENUM || kind == ElementKind.ANNOTATION_TYPE) { result[0] = elem.asType().toString(); } } });
@Override public void run(ResultIterator resultIterator) throws Exception { Result res = resultIterator.getParserResult(offset); if (res == null) { return; } CompilationController controller = CompilationController.get(res); if (controller == null || controller.toPhase(Phase.RESOLVED).compareTo(Phase.RESOLVED) < 0) { return; } TreePath path = controller.getTreeUtilities().pathFor(offset); javax.lang.model.element.Element elem = controller.getTrees().getElement(path); ElementKind kind = elem.getKind(); if (kind == ElementKind.CLASS || kind == ElementKind.ENUM || kind == ElementKind.ANNOTATION_TYPE) { result[0] = elem.asType().toString(); } } });
/** * Finds whether the given <code>TypeElement</code> is the subtype of a * given supertype. This is a convenience method for * {@link javax.lang.model.util.Types#isSubtype}. * * @param controller a <code>CompilationController</code>. * @param subtype the presumed subtype. * @param supertype the presumed supertype. * @return true if <code>subtype</code> if a subtype of </code>supertype</code>, * false otherwise. */ public static boolean isSubtype(CompilationController controller, TypeElement subtype, String supertype) { Parameters.notNull("controller", controller); // NOI18N Parameters.notNull("subtype", subtype); // NOI18N Parameters.notNull("supertype", supertype); // NOI18N if (controller.getElements().getTypeElement(supertype) != null) { TypeMirror typeMirror = controller.getTreeUtilities().parseType(supertype, subtype); if (typeMirror != null) { return controller.getTypes().isSubtype(subtype.asType(), typeMirror); } } return false; }
private void insideCatch(Env env) throws IOException { TreePath path = env.getPath(); CatchTree ct = (CatchTree) path.getLeaf(); CompilationController controller = env.getController(); TokenSequence<JavaTokenId> last = findLastNonWhitespaceToken(env, ct, env.getOffset()); if (last != null && last.token().id() == JavaTokenId.LPAREN) { addKeyword(env, FINAL_KEYWORD, SPACE, false); if (!options.contains(Options.ALL_COMPLETION)) { TreeUtilities tu = controller.getTreeUtilities(); TreePath tryPath = tu.getPathElementOfKind(Tree.Kind.TRY, path); Set<TypeMirror> exs = tu.getUncaughtExceptions(tryPath != null ? tryPath : path.getParentPath()); Elements elements = controller.getElements(); for (TypeMirror ex : exs) { if (ex.getKind() == TypeKind.DECLARED && startsWith(env, ((DeclaredType) ex).asElement().getSimpleName().toString()) && (Utilities.isShowDeprecatedMembers() || !elements.isDeprecated(((DeclaredType) ex).asElement())) && !Utilities.isExcluded(((TypeElement)((DeclaredType) ex).asElement()).getQualifiedName())) { env.addToExcludes(((DeclaredType) ex).asElement()); results.add(itemFactory.createTypeItem(env.getController(), (TypeElement) ((DeclaredType) ex).asElement(), (DeclaredType) ex, anchorOffset, env.getReferencesCount(), elements.isDeprecated(((DeclaredType) ex).asElement()), false, false, false, true, false)); } } } TypeElement te = controller.getElements().getTypeElement("java.lang.Throwable"); //NOI18N if (te != null) { addTypes(env, EnumSet.of(CLASS, INTERFACE, TYPE_PARAMETER), controller.getTypes().getDeclaredType(te)); } } }
@Override public void run(CompilationController controller) throws Exception { controller.toPhase( Phase.ELEMENTS_RESOLVED ); int dot = strategy.getOffset(component); TreePath tp = controller.getTreeUtilities() .pathFor(dot); Element element = controller.getTrees().getElement(tp ); if ( element == null ){ StatusDisplayer.getDefault().setStatusText( NbBundle.getMessage( WebBeansActionHelper.class, "LBL_ElementNotFound")); return; } if ( element instanceof TypeElement ){ subject[0] = ElementHandle.create(element); subject[1] = element.getSimpleName(); subject[2] = InspectActionId.CLASS_CONTEXT; } } }, true );
controller.toPhase( Phase.ELEMENTS_RESOLVED ); int dot = strategy.getOffset(component); TreePath tp = controller.getTreeUtilities() .pathFor(dot); Element element = controller.getTrees().getElement(tp );
controller.toPhase( Phase.ELEMENTS_RESOLVED ); int dot = strategy.getOffset(component); TreePath tp = controller.getTreeUtilities().pathFor(dot); Element contextElement = controller.getTrees().getElement(tp ); if ( contextElement == null ){
@Override public void run(CompilationController controller) throws Exception { controller.toPhase( Phase.ELEMENTS_RESOLVED ); int dot = component.getCaret().getDot(); TreePath tp = controller.getTreeUtilities().pathFor(dot); Element contextElement = controller.getTrees().getElement(tp ); if ( contextElement == null ){ StatusDisplayer.getDefault().setStatusText( NbBundle.getMessage( WebBeansActionHelper.class, "LBL_ElementNotFound")); return; } context[0] = contextElement; } }, true );
private void addKeywordsForClassBody(Env env) { String prefix = env.getPrefix(); for (String kw : CLASS_BODY_KEYWORDS) { if (Utilities.startsWith(kw, prefix)) { results.add(itemFactory.createKeywordItem(kw, SPACE, anchorOffset, false)); } } if (env.getController().getSourceVersion().compareTo(SourceVersion.RELEASE_8) >= 0 && Utilities.startsWith(DEFAULT_KEYWORD, prefix) && env.getController().getTreeUtilities().getPathElementOfKind(Tree.Kind.INTERFACE, env.getPath()) != null) { results.add(itemFactory.createKeywordItem(DEFAULT_KEYWORD, SPACE, anchorOffset, false)); } addPrimitiveTypeKeywords(env); }
return; TreePath p = ci.getTreeUtilities().pathFor(offset); while (p != null && !TreeUtilities.CLASS_TREE_KINDS.contains(p.getLeaf().getKind())) { p = p.getParentPath(); te = (TypeElement) ci.getTrees().getElement(p); } else { Scope scope = ci.getTreeUtilities().scopeFor(offset); te = scope.getEnclosingClass();
private TreePath getCommonPath(int startOffset, int endOffset) { TreeUtilities tu = controller.getTreeUtilities(); TreePath startPath = tu.pathFor(startOffset); com.sun.tools.javac.util.List<Tree> reverseStartPath = com.sun.tools.javac.util.List.<Tree>nil(); for (Tree t : startPath) reverseStartPath = reverseStartPath.prepend(t); TreePath endPath = tu.pathFor(endOffset); com.sun.tools.javac.util.List<Tree> reverseEndPath = com.sun.tools.javac.util.List.<Tree>nil(); for (Tree t : endPath) reverseEndPath = reverseEndPath.prepend(t); TreePath path = null; TreePath statementPath = null; while(reverseStartPath.head != null && reverseStartPath.head == reverseEndPath.head) { path = reverseStartPath.head instanceof CompilationUnitTree ? new TreePath((CompilationUnitTree)reverseStartPath.head) : new TreePath(path, reverseStartPath.head); if (reverseStartPath.head instanceof StatementTree) statementPath = path; reverseStartPath = reverseStartPath.tail; reverseEndPath = reverseEndPath.tail; } return statementPath != null ? statementPath : path; }
final TreeUtilities tu = controller.getTreeUtilities(); final Trees trees = controller.getTrees(); final Scope scope = env.getScope();
private MethodArgument[] computeMethodArguments(CompilationController ci, int methodLineNumber, int offset) throws IOException { MethodArgument args[]; if (ci.toPhase(Phase.RESOLVED).compareTo(Phase.RESOLVED) < 0) { ErrorManager.getDefault().log(ErrorManager.WARNING, "Unable to resolve "+ci.getFileObject()+" to phase "+Phase.RESOLVED+", current phase = "+ci.getPhase()+ "\nDiagnostics = "+ci.getDiagnostics()+ "\nFree memory = "+Runtime.getRuntime().freeMemory()); return null; } Scope scope = ci.getTreeUtilities().scopeFor(offset); Element clazz = scope.getEnclosingClass(); if (clazz == null) { return null; } Tree methodTree = ci.getTrees().getTree(clazz); CompilationUnitTree cu = ci.getCompilationUnit(); MethodArgumentsScanner scanner = new MethodArgumentsScanner(methodLineNumber, cu, ci.getTrees().getSourcePositions(), false, new OperationCreationDelegateImpl()); args = methodTree.accept(scanner, null); args = scanner.getArguments(); return args; }
private MethodArgument[] computeMethodArguments(CompilationController ci, Operation operation) throws IOException { MethodArgument args[]; if (ci.toPhase(Phase.RESOLVED).compareTo(Phase.RESOLVED) < 0) { ErrorManager.getDefault().log(ErrorManager.WARNING, "Unable to resolve "+ci.getFileObject()+" to phase "+Phase.RESOLVED+", current phase = "+ci.getPhase()+ "\nDiagnostics = "+ci.getDiagnostics()+ "\nFree memory = "+Runtime.getRuntime().freeMemory()); return null; } int offset = operation.getMethodEndPosition().getOffset(); Scope scope = ci.getTreeUtilities().scopeFor(offset); Element method = scope.getEnclosingMethod(); if (method == null) { return null; } Tree methodTree = ci.getTrees().getTree(method); CompilationUnitTree cu = ci.getCompilationUnit(); MethodArgumentsScanner scanner = new MethodArgumentsScanner(offset, cu, ci.getTrees().getSourcePositions(), true, new OperationCreationDelegateImpl()); args = methodTree.accept(scanner, null); args = scanner.getArguments(); return args; }
final TypeElement enclClass = scope.getEnclosingClass(); final boolean isStatic = enclClass == null ? false : (controller.getTreeUtilities().isStaticContext(scope) || (env.getPath().getLeaf().getKind() == Tree.Kind.BLOCK && ((BlockTree) env.getPath().getLeaf()).isStatic())); final Map<Name, ? extends Element> illegalForwardRefs = env.getForwardReferences(); final ExecutableElement method = scope.getEnclosingMethod();