Java Code Examples for javax.lang.model.element.ElementKind#LOCAL_VARIABLE
The following examples show how to use
javax.lang.model.element.ElementKind#LOCAL_VARIABLE .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: Symbol.java From lua-for-android with BSD 3-Clause "New" or "Revised" License | 6 votes |
@DefinedBy(Api.LANGUAGE_MODEL) public ElementKind getKind() { long flags = flags(); if ((flags & PARAMETER) != 0) { if (isExceptionParameter()) return ElementKind.EXCEPTION_PARAMETER; else return ElementKind.PARAMETER; } else if ((flags & ENUM) != 0) { return ElementKind.ENUM_CONSTANT; } else if (owner.kind == TYP || owner.kind == ERR) { return ElementKind.FIELD; } else if (isResourceVariable()) { return ElementKind.RESOURCE_VARIABLE; } else { return ElementKind.LOCAL_VARIABLE; } }
Example 2
Source File: Symbol.java From openjdk-jdk9 with GNU General Public License v2.0 | 6 votes |
@DefinedBy(Api.LANGUAGE_MODEL) public ElementKind getKind() { long flags = flags(); if ((flags & PARAMETER) != 0) { if (isExceptionParameter()) return ElementKind.EXCEPTION_PARAMETER; else return ElementKind.PARAMETER; } else if ((flags & ENUM) != 0) { return ElementKind.ENUM_CONSTANT; } else if (owner.kind == TYP || owner.kind == ERR) { return ElementKind.FIELD; } else if (isResourceVariable()) { return ElementKind.RESOURCE_VARIABLE; } else { return ElementKind.LOCAL_VARIABLE; } }
Example 3
Source File: ConvertVarToExplicitType.java From netbeans with Apache License 2.0 | 6 votes |
protected static boolean isVariableValidForVarHint(HintContext ctx) { CompilationInfo info = ctx.getInfo(); TreePath treePath = ctx.getPath(); // hint will be enable only for JDK-10 or above. if (info.getSourceVersion().compareTo(SourceVersion.RELEASE_9) < 1) { return false; } if (treePath.getLeaf().getKind() == Tree.Kind.ENHANCED_FOR_LOOP) { EnhancedForLoopTree efl = (EnhancedForLoopTree) treePath.getLeaf(); TypeMirror expressionType = ctx.getInfo().getTrees().getTypeMirror(new TreePath(treePath, efl.getExpression())); if (!Utilities.isValidType(expressionType)) { return false; } } else { Element treePathELement = info.getTrees().getElement(treePath); // should be local variable if (treePathELement != null && (treePathELement.getKind() != ElementKind.LOCAL_VARIABLE && treePathELement.getKind() != ElementKind.RESOURCE_VARIABLE)) { return false; } } return true; }
Example 4
Source File: ResourceStringFoldProvider.java From netbeans with Apache License 2.0 | 6 votes |
@Override public Void visitVariable(VariableTree node, Void p) { scan(node.getInitializer(), null); if (exprBundleName == null) { return null; } TypeMirror tm = info.getTrees().getTypeMirror(getCurrentPath()); if (resourceBundleType == null || !info.getTypes().isAssignable(tm, resourceBundleType)) { return null; } Element dest = info.getTrees().getElement(getCurrentPath()); if (dest != null && (dest.getKind() == ElementKind.LOCAL_VARIABLE || dest.getKind() == ElementKind.FIELD)) { variableBundles.put(dest, exprBundleName); } return null; }
Example 5
Source File: IntroduceConstantFix.java From netbeans with Apache License 2.0 | 6 votes |
static boolean checkConstantExpression(final CompilationInfo info, TreePath path) { InstanceRefFinder finder = new InstanceRefFinder(info, path) { @Override public Object visitIdentifier(IdentifierTree node, Object p) { Element el = info.getTrees().getElement(getCurrentPath()); if (el == null || el.asType() == null || el.asType().getKind() == TypeKind.ERROR) { return null; } if (el.getKind() == ElementKind.LOCAL_VARIABLE || el.getKind() == ElementKind.PARAMETER) { throw new StopProcessing(); } else if (el.getKind() == ElementKind.FIELD) { if (!el.getModifiers().contains(Modifier.FINAL)) { throw new StopProcessing(); } } return super.visitIdentifier(node, p); } }; try { finder.process(); return !(finder.containsInstanceReferences() || finder.containsLocalReferences() || finder.containsReferencesToSuper()); } catch (StopProcessing e) { return false; } }
Example 6
Source File: RenameRefactoringUI.java From netbeans with Apache License 2.0 | 5 votes |
@Override public CustomRefactoringPanel getPanel(ChangeListener parent) { if (panel == null) { String suffix = ""; if(handle != null && handle.getKind() == Tree.Kind.LABELED_STATEMENT) { suffix = getString("LBL_Label"); } else if (handle != null && handle.getElementHandle() !=null) { ElementKind kind = handle.getElementHandle().getKind(); if (kind!=null && (kind.isClass() || kind.isInterface())) { suffix = kind.isInterface() ? getString("LBL_Interface") : getString("LBL_Class"); } else if (kind == ElementKind.METHOD) { suffix = getString("LBL_Method"); } else if (kind == ElementKind.FIELD) { suffix = getString("LBL_Field"); } else if (kind == ElementKind.LOCAL_VARIABLE) { suffix = getString("LBL_LocalVar"); } else if (kind == ElementKind.PACKAGE || (handle == null && fromListener)) { suffix = pkgRename ? getString("LBL_Package") : getString("LBL_Folder"); } else if (kind == ElementKind.PARAMETER) { suffix = getString("LBL_Parameter"); } } suffix = suffix + " " + this.oldName; // NOI18N panel = new RenamePanel(handle, newName, parent, NbBundle.getMessage(RenamePanel.class, "LBL_Rename") + " " + suffix, !fromListener, fromListener && !byPassPakageRename); } return panel; }
Example 7
Source File: CompilationUnitBuilder.java From j2cl with Apache License 2.0 | 5 votes |
private Expression convertIdent(JCIdent identifier) { if (isThisExpression(identifier)) { return new ThisReference(getCurrentType().getTypeDescriptor()); } if (isSuperExpression(identifier)) { return new SuperReference(getCurrentType().getTypeDescriptor()); } Symbol symbol = identifier.sym; if (symbol instanceof ClassSymbol) { return new JavaScriptConstructorReference( environment.createDeclarationForType((ClassSymbol) identifier.sym)); } if (symbol instanceof MethodSymbol) { return NullLiteral.get().withComment(identifier.toString()); } VarSymbol varSymbol = (VarSymbol) symbol; if (symbol.getKind() == ElementKind.LOCAL_VARIABLE || symbol.getKind() == ElementKind.RESOURCE_VARIABLE || symbol.getKind() == ElementKind.PARAMETER || symbol.getKind() == ElementKind.EXCEPTION_PARAMETER) { Variable variable = variableByVariableElement.get(symbol); return resolveVariableReference(variable); } FieldDescriptor fieldDescriptor = environment.createFieldDescriptor(varSymbol, identifier.type); Expression qualifier = fieldDescriptor.isStatic() ? null : resolveOuterClassReference(fieldDescriptor.getEnclosingTypeDescriptor(), false); return FieldAccess.newBuilder() .setQualifier(qualifier) .setTargetFieldDescriptor(fieldDescriptor) .build(); }
Example 8
Source File: ELHyperlinkProvider.java From netbeans with Apache License 2.0 | 5 votes |
@Override public Void visitVariable(VariableElement e, Boolean highlightName) { modifier(e.getModifiers()); result.append(getTypeName(info, e.asType(), true)); result.append(' '); boldStartCheck(highlightName); result.append(e.getSimpleName()); boldStopCheck(highlightName); if (highlightName) { if (e.getConstantValue() != null) { result.append(" = "); result.append(e.getConstantValue().toString()); } Element enclosing = e.getEnclosingElement(); if (e.getKind() != ElementKind.PARAMETER && e.getKind() != ElementKind.LOCAL_VARIABLE && e.getKind() != ElementKind.EXCEPTION_PARAMETER) { result.append(" in "); //short typename: result.append(getTypeName(info, enclosing.asType(), true)); } } return null; }
Example 9
Source File: GoToSupport.java From netbeans with Apache License 2.0 | 5 votes |
@Override public Void visitVariable(VariableElement e, Boolean highlightName) { modifier(e.getModifiers()); result.append(getTypeName(info, e.asType(), true)); result.append(' '); boldStartCheck(highlightName); result.append(e.getSimpleName()); boldStopCheck(highlightName); if (highlightName) { if (e.getConstantValue() != null) { result.append(" = "); result.append(StringEscapeUtils.escapeHtml(e.getConstantValue().toString())); } Element enclosing = e.getEnclosingElement(); if (e.getKind() != ElementKind.PARAMETER && e.getKind() != ElementKind.LOCAL_VARIABLE && e.getKind() != ElementKind.RESOURCE_VARIABLE && e.getKind() != ElementKind.EXCEPTION_PARAMETER && !TreeShims.BINDING_VARIABLE.equals(e.getKind().name())) { result.append(" in "); //short typename: result.append(getTypeName(info, enclosing.asType(), true)); } } return null; }
Example 10
Source File: ResourceStringFoldProvider.java From netbeans with Apache License 2.0 | 5 votes |
@Override public Void visitAssignment(AssignmentTree node, Void p) { exprBundleName = null; Void d = super.visitAssignment(node, p); if (exprBundleName != null) { Element dest = info.getTrees().getElement(getCurrentPath()); if (dest != null && (dest.getKind() == ElementKind.LOCAL_VARIABLE || dest.getKind() == ElementKind.FIELD)) { variableBundles.put(dest, exprBundleName); } } return d; }
Example 11
Source File: Utilities.java From netbeans with Apache License 2.0 | 5 votes |
public static boolean isConstantString(CompilationInfo info, TreePath tp, boolean acceptsChars) { if (tp.getLeaf().getKind() == Kind.STRING_LITERAL) return true; if (acceptsChars && tp.getLeaf().getKind() == Kind.CHAR_LITERAL) return true; Element el = info.getTrees().getElement(tp); if (el != null && (el.getKind() == ElementKind.FIELD || el.getKind() == ElementKind.LOCAL_VARIABLE) && ((VariableElement) el).getConstantValue() instanceof String) { return true; } if (tp.getLeaf().getKind() != Kind.PLUS) { return false; } List<List<TreePath>> sorted = splitStringConcatenationToElements(info, tp); if (sorted.size() != 1) { return false; } List<TreePath> part = sorted.get(0); for (TreePath c : part) { if (isConstantString(info, c, acceptsChars)) return true; } return false; }
Example 12
Source File: PreconditionsChecker.java From netbeans with Apache License 2.0 | 5 votes |
private boolean isLocalVariable(IdentifierTree id, Trees trees) { Element el = trees.getElement(TreePath.getPath(treePath, id)); if (el != null) { return el.getKind() == ElementKind.LOCAL_VARIABLE || el.getKind() == ElementKind.PARAMETER; } return false; }
Example 13
Source File: ElementUtil.java From j2objc with Apache License 2.0 | 4 votes |
public static boolean isLocalVariable(Element element) { return element.getKind() == ElementKind.LOCAL_VARIABLE; }
Example 14
Source File: DoubleCheck.java From netbeans with Apache License 2.0 | 4 votes |
/** * Checks, that the two if statements test the same variable. Returns the tree that references * the guard variable if the two ifs are the same, or {@code null} if the ifs do not match. * @param info * @param statementTP * @param secondTP * @return */ private static TreePath sameIfAndValidate(CompilationInfo info, TreePath statementTP, TreePath secondTP, TreePath[] fieldRef) { StatementTree statement = (StatementTree) statementTP.getLeaf(); if (statement.getKind() != Kind.IF) { return null; } IfTree first = (IfTree)statement; IfTree second = (IfTree) secondTP.getLeaf(); if (first.getElseStatement() != null) { return null; } if (second.getElseStatement() != null) { return null; } TreePath varFirst = equalToNull(new TreePath(statementTP, first.getCondition())); TreePath varSecond = equalToNull(new TreePath(secondTP, second.getCondition())); if (varFirst == null || varSecond == null) { return null; } Element firstVariable = info.getTrees().getElement(varFirst); Element secondVariable = info.getTrees().getElement(varSecond); Element target = firstVariable; if (firstVariable != null && firstVariable.equals(secondVariable)) { TreePath var = info.getTrees().getPath(firstVariable); if (info.getSourceVersion().compareTo(SourceVersion.RELEASE_5) < 0) { fieldRef[0] = var; return varFirst; } if (firstVariable.getKind() == ElementKind.LOCAL_VARIABLE) { // check how the variable was assigned: TreePath methodPath = Utilities.findTopLevelBlock(varFirst); FlowResult fr = Flow.assignmentsForUse(info, methodPath, new AtomicBoolean(false)); Iterable<? extends TreePath> itp = fr.getAssignmentsForUse().get(varFirst.getLeaf()); if (itp != null) { Iterator<? extends TreePath> i = itp.iterator(); if (i.hasNext()) { TreePath v = i.next(); if (!i.hasNext()) { // if the local variable has exactly one possible value, // use it as the field target = info.getTrees().getElement(v); if (target != null && target.getKind() == ElementKind.FIELD) { var = info.getTrees().getPath(target); if (!sameCompilationUnit(var, varFirst)) { // the variable is somewhere ... var = info.getTrees().getPath(firstVariable); } } } } } } fieldRef[0] = var; return varFirst; } return null; }
Example 15
Source File: ElementUtil.java From j2objc with Apache License 2.0 | 4 votes |
public static boolean isVariable(Element element) { ElementKind kind = element.getKind(); return kind == ElementKind.FIELD || kind == ElementKind.LOCAL_VARIABLE || kind == ElementKind.PARAMETER || kind == ElementKind.EXCEPTION_PARAMETER || kind == ElementKind.RESOURCE_VARIABLE || kind == ElementKind.ENUM_CONSTANT; }
Example 16
Source File: ResourceStringFoldProvider.java From netbeans with Apache License 2.0 | 4 votes |
@Override public Void visitMethodInvocation(MethodInvocationTree node, Void p) { messageMethod = null; exprBundleName = null; Void d = scan(node.getMethodSelect(), p); try { if (messageMethod == null) { return d; } String bundleFile = null; if (messageMethod.getKeyParam() == MessagePattern.GET_BUNDLE_CALL) { processGetBundleCall(node); } else { int bp = messageMethod.getBundleParam(); if (bp == MessagePattern.BUNDLE_FROM_CLASS) { TypeMirror tm = info.getTrees().getTypeMirror(methodOwnerPath); if (tm != null && tm.getKind() == TypeKind.DECLARED) { bundleFile = bundleFileFromClass(methodOwnerPath, messageMethod.getBundleFile()); } } else if (bp == MessagePattern.BUNDLE_FROM_INSTANCE) { // simplification: assume the selector expression is a variable Element el = info.getTrees().getElement(methodOwnerPath); if (el != null && (el.getKind() == ElementKind.LOCAL_VARIABLE || el.getKind() == ElementKind.FIELD)) { bundleFile = variableBundles.get(el); } else { bundleFile = exprBundleName; } } else if (bp >= 0 && bp < node.getArguments().size()) { bundleFile = getBundleName(node, bp, messageMethod.getBundleFile()); } } if (bundleFile == null) { return d; } int keyIndex = messageMethod.getKeyParam(); if (node.getArguments().size() <= keyIndex) { return d; } String keyVal; if (keyIndex == MessagePattern.KEY_FROM_METHODNAME) { keyVal = this.methodName; } else { ExpressionTree keyArg = node.getArguments().get(keyIndex); if (keyArg.getKind() != Tree.Kind.STRING_LITERAL) { return d; } Object o = ((LiteralTree)keyArg).getValue(); if (o == null) { return d; } keyVal = o.toString(); } defineFold(bundleFile, keyVal, node); } finally { String expr = exprBundleName; scan(node.getArguments(), p); this.exprBundleName = expr; } // simplification, accept only String literals return d; }
Example 17
Source File: Unbalanced.java From netbeans with Apache License 2.0 | 4 votes |
private static boolean isAcceptable(Element el) { return el != null && (el.getKind() == ElementKind.LOCAL_VARIABLE || (el.getKind() == ElementKind.FIELD && el.getModifiers().contains(Modifier.PRIVATE))); }
Example 18
Source File: PreconditionsChecker.java From netbeans with Apache License 2.0 | 4 votes |
private boolean isLocalVariable(Element el) { return el.getKind() == ElementKind.LOCAL_VARIABLE || el.getKind() == ElementKind.PARAMETER; }
Example 19
Source File: ArithmeticUtilities.java From netbeans with Apache License 2.0 | 4 votes |
/** * Attempts to resolve Elements value. For JLS-strict mode, values are only resolved for fields. Null value * or known-not-null values are ignored. For enhanced mode, null & non-null may be returned for further processing * * @param info * @param path * @param enhanceProcessing * @return */ private static Object resolveElementValue(CompilationInfo info, TreePath path, boolean enhanceProcessing) { Element el = info.getTrees().getElement(path); if (el == null) { return null; } Map<Object, ElementValue> cache = getValueCache(info); ElementValue entry = cache.get(el); if (entry != null) { Object v = enhanceProcessing ? entry.constant : entry.jlsConstant; if (v != null) { return v != UNKNOWN ? v : null; } } if (el == null) { return null; } Object obj = null; if (el.getKind() == ElementKind.FIELD) { obj = ((VariableElement) el).getConstantValue(); // if enhanced processing is enabled, give other chance to fields that are static final if (obj == null && (!el.getModifiers().contains(Modifier.FINAL) || !enhanceProcessing)) { obj = UNKNOWN; } } else if (el.getKind() == ElementKind.LOCAL_VARIABLE) { obj = ((VariableElement) el).getConstantValue(); if (obj == null && (!el.getModifiers().contains(Modifier.FINAL) || !enhanceProcessing)) { obj = UNKNOWN; } } EVAL: if (obj == null) { TreePath varPath = info.getTrees().getPath(el); if (varPath != null && varPath.getLeaf().getKind() == Tree.Kind.VARIABLE) { // #262309: if variable is errnoeously referenced from its own initializer, we must not recurse. for (Tree t : path) { if (t == varPath.getLeaf()) { break EVAL; } if (StatementTree.class.isAssignableFrom(t.getKind().asInterface())) { break; } } VariableTree vt = (VariableTree)varPath.getLeaf(); if (vt.getInitializer() != null) { VisitorImpl recurse = new VisitorImpl(info, true, enhanceProcessing); try { obj = recurse.scan(new TreePath(varPath, vt.getInitializer()), null); } catch (ArithmeticException | IndexOutOfBoundsException | IllegalArgumentException ex) { // no op, obj is already null. } } } } else if (entry == null) { // obj was resolved as a constant value and entry still does not exist for it -> save memory return obj != UNKNOWN ? obj : null; } if (entry == null) { entry = new ElementValue(); cache.put(el, entry); } if (obj == null) { obj = UNKNOWN; } if (enhanceProcessing) { entry.constant = obj; } else { entry.jlsConstant = obj; if (obj == NULL || obj == NOT_NULL) { return null; } } return obj != UNKNOWN ? obj : null; }
Example 20
Source File: GeneratedVariableElement.java From j2objc with Apache License 2.0 | 4 votes |
public static GeneratedVariableElement newLocalVar( String name, TypeMirror type, Element enclosingElement) { return new GeneratedVariableElement( name, type, ElementKind.LOCAL_VARIABLE, enclosingElement, true); }