@Override public void visitIdentifier(IdentifierTree tree) { if (JavaPunctuator.STAR.getValue().equals(tree.name())) { //star import : we save the current symbol if (isStatic) { env.staticStarImports.enter(currentSymbol); } else { env.starImports.enter(currentSymbol); } //we set current symbol to not found to do not put it in named import scope. currentSymbol = new Resolve.JavaSymbolNotFound(); } else { if (currentSymbol.kind == JavaSymbol.PCK) { currentSymbol = resolve.findIdentInPackage(currentSymbol, tree.name(), JavaSymbol.PCK | JavaSymbol.TYP); resolved = Collections.emptyList(); } else if (currentSymbol.kind == JavaSymbol.TYP) { resolved = ((JavaSymbol.TypeJavaSymbol) currentSymbol).members().lookup(tree.name()); currentSymbol = resolve.findIdentInType(env, (JavaSymbol.TypeJavaSymbol) currentSymbol, tree.name(), JavaSymbol.TYP | JavaSymbol.VAR).symbol(); } else { //Site symbol is not found so we won't be able to resolve the import. currentSymbol = new Resolve.JavaSymbolNotFound(); resolved = Collections.emptyList(); } } }
private Resolve.Resolution getSymbolOfMemberSelectExpression(MemberSelectExpressionTree mse, int kind, Resolve.Env resolveEnv) { int expressionKind = JavaSymbol.TYP; if ((kind & JavaSymbol.VAR) != 0) { expressionKind |= JavaSymbol.VAR; } if ((kind & JavaSymbol.TYP) != 0) { expressionKind |= JavaSymbol.PCK; } //TODO: resolveAs result is only used here, should probably be refactored JavaSymbol site = resolveAs(mse.expression(), expressionKind, resolveEnv); if (site.kind == JavaSymbol.VAR) { return resolve.findIdentInType(resolveEnv, getType(mse.expression()).symbol, mse.identifier().name(), JavaSymbol.VAR); } if (site.kind == JavaSymbol.TYP) { return resolve.findIdentInType(resolveEnv, (JavaSymbol.TypeJavaSymbol) site, mse.identifier().name(), kind); } if (site.kind == JavaSymbol.PCK) { return Resolve.Resolution.resolution(resolve.findIdentInPackage(site, mse.identifier().name(), kind)); } return resolve.unresolved(); }
private JavaSymbol getSymbolOfMemberSelectExpression(MemberSelectExpressionTree mse, int kind, Resolve.Env resolveEnv) { int expressionKind = JavaSymbol.TYP; if ((kind & JavaSymbol.VAR) != 0) { expressionKind |= JavaSymbol.VAR; } if ((kind & JavaSymbol.TYP) != 0) { expressionKind |= JavaSymbol.PCK; } //TODO: resolveAs result is only used here, should probably be refactored JavaSymbol site = resolveAs(mse.expression(), expressionKind, resolveEnv); if (site.kind == JavaSymbol.VAR) { return resolve.findIdentInType(resolveEnv, getType(mse.expression()).symbol, mse.identifier().name(), JavaSymbol.VAR); } if (site.kind == JavaSymbol.TYP) { return resolve.findIdentInType(resolveEnv, (JavaSymbol.TypeJavaSymbol) site, mse.identifier().name(), kind); } if (site.kind == JavaSymbol.PCK) { return resolve.findIdentInPackage(site, mse.identifier().name(), kind); } return Symbols.unknownSymbol; }
@Override public void visitIdentifier(IdentifierTree tree) { if (JavaPunctuator.STAR.getValue().equals(tree.name())) { //star import : we save the current symbol if (isStatic) { env.staticStarImports.enter(currentSymbol); } else { env.starImports.enter(currentSymbol); } //we set current symbol to not found to do not put it in named import scope. currentSymbol = new Resolve.JavaSymbolNotFound(); } else { if (currentSymbol.kind == JavaSymbol.PCK) { currentSymbol = resolve.findIdentInPackage(currentSymbol, tree.name(), JavaSymbol.PCK | JavaSymbol.TYP); resolved = Collections.emptyList(); } else if (currentSymbol.kind == JavaSymbol.TYP) { resolved = ((JavaSymbol.TypeJavaSymbol) currentSymbol).members().lookup(tree.name()); currentSymbol = resolve.findIdentInType(env, (JavaSymbol.TypeJavaSymbol) currentSymbol, tree.name(), JavaSymbol.TYP | JavaSymbol.VAR).symbol(); } else { //Site symbol is not found so we won't be able to resolve the import. currentSymbol = new Resolve.JavaSymbolNotFound(); resolved = Collections.emptyList(); } } }
private Resolve.Resolution getSymbolOfMemberSelectExpression(MemberSelectExpressionTree mse, int kind, Resolve.Env resolveEnv) { int expressionKind = JavaSymbol.TYP; if ((kind & JavaSymbol.VAR) != 0) { expressionKind |= JavaSymbol.VAR; } if ((kind & JavaSymbol.TYP) != 0) { expressionKind |= JavaSymbol.PCK; } //TODO: resolveAs result is only used here, should probably be refactored JavaSymbol site = resolveAs(mse.expression(), expressionKind, resolveEnv); if (site.kind == JavaSymbol.VAR) { return resolve.findIdentInType(resolveEnv, getType(mse.expression()).symbol, mse.identifier().name(), JavaSymbol.VAR); } if (site.kind == JavaSymbol.TYP) { return resolve.findIdentInType(resolveEnv, (JavaSymbol.TypeJavaSymbol) site, mse.identifier().name(), kind); } if (site.kind == JavaSymbol.PCK) { return Resolve.Resolution.resolution(resolve.findIdentInPackage(site, mse.identifier().name(), kind)); } return resolve.unresolved(); }
private Resolve.Resolution getSymbolOfMemberSelectExpression(MemberSelectExpressionTree mse, int kind, Resolve.Env resolveEnv) { int expressionKind = JavaSymbol.TYP; if ((kind & JavaSymbol.VAR) != 0) { expressionKind |= JavaSymbol.VAR; } if ((kind & JavaSymbol.TYP) != 0) { expressionKind |= JavaSymbol.PCK; } //TODO: resolveAs result is only used here, should probably be refactored JavaSymbol site = resolveAs(mse.expression(), expressionKind, resolveEnv); if (site.kind == JavaSymbol.VAR) { return resolve.findIdentInType(resolveEnv, getType(mse.expression()).symbol, mse.identifier().name(), JavaSymbol.VAR); } if (site.kind == JavaSymbol.TYP) { return resolve.findIdentInType(resolveEnv, (JavaSymbol.TypeJavaSymbol) site, mse.identifier().name(), kind); } if (site.kind == JavaSymbol.PCK) { return Resolve.Resolution.resolution(resolve.findIdentInPackage(site, mse.identifier().name(), kind)); } return resolve.unresolved(); }
@Override public void visitIdentifier(IdentifierTree tree) { if (JavaPunctuator.STAR.getValue().equals(tree.name())) { //star import : we save the current symbol if (isStatic) { env.staticStarImports.enter(currentSymbol); } else { env.starImports.enter(currentSymbol); } //we set current symbol to not found to do not put it in named import scope. currentSymbol = new Resolve.JavaSymbolNotFound(); } else { if (currentSymbol.kind == JavaSymbol.PCK) { currentSymbol = resolve.findIdentInPackage(currentSymbol, tree.name(), JavaSymbol.PCK | JavaSymbol.TYP); resolved = Collections.emptyList(); } else if (currentSymbol.kind == JavaSymbol.TYP) { resolved = ((JavaSymbol.TypeJavaSymbol) currentSymbol).members().lookup(tree.name()); currentSymbol = resolve.findIdentInType(env, (JavaSymbol.TypeJavaSymbol) currentSymbol, tree.name(), JavaSymbol.TYP | JavaSymbol.VAR).symbol(); } else { //Site symbol is not found so we won't be able to resolve the import. currentSymbol = new Resolve.JavaSymbolNotFound(); resolved = Collections.emptyList(); } } }
private JavaType resolveIdentifierType(Resolve.Env newClassEnv, @Nullable ExpressionTree enclosingExpression, TypeTree typeTree, String typeName) { if (enclosingExpression != null) { resolveAs(enclosingExpression, JavaSymbol.VAR); Resolution idType = resolve.findIdentInType(newClassEnv, (JavaSymbol.TypeJavaSymbol) enclosingExpression.symbolType().symbol(), typeName, JavaSymbol.TYP); JavaType type = idType.type(); if (typeTree.is(Tree.Kind.PARAMETERIZED_TYPE)) { TypeArguments typeArguments = ((ParameterizedTypeTree) typeTree).typeArguments(); scan(typeArguments); type = parametrizedTypeWithTypeArguments(type.symbol, typeArguments); } registerType(typeTree, type); } else { resolveAs(typeTree, JavaSymbol.TYP, newClassEnv, false); } return (JavaType) typeTree.symbolType(); }
@Override public void visitIdentifier(IdentifierTree tree) { if (JavaPunctuator.STAR.getValue().equals(tree.name())) { //star import : we save the current symbol if (isStatic) { env.staticStarImports().enter(currentSymbol); } else { env.starImports().enter(currentSymbol); } //we set current symbol to not found to do not put it in named import scope. currentSymbol = new Resolve.JavaSymbolNotFound(); } else { if (currentSymbol.kind == JavaSymbol.PCK) { currentSymbol = resolve.findIdentInPackage(currentSymbol, tree.name(), JavaSymbol.PCK | JavaSymbol.TYP); resolved = Collections.emptyList(); } else if (currentSymbol.kind == JavaSymbol.TYP) { resolved = ((JavaSymbol.TypeJavaSymbol) currentSymbol).members().lookup(tree.name()); currentSymbol = resolve.findIdentInType(env, (JavaSymbol.TypeJavaSymbol) currentSymbol, tree.name(), JavaSymbol.TYP | JavaSymbol.VAR); } else { //Site symbol is not found so we won't be able to resolve the import. currentSymbol = new Resolve.JavaSymbolNotFound(); resolved = Collections.emptyList(); } } }
private JavaType resolveIdentifierType(Resolve.Env newClassEnv, @Nullable ExpressionTree enclosingExpression, TypeTree typeTree, String typeName) { if (enclosingExpression != null) { resolveAs(enclosingExpression, JavaSymbol.VAR); Resolution idType = resolve.findIdentInType(newClassEnv, (JavaSymbol.TypeJavaSymbol) enclosingExpression.symbolType().symbol(), typeName, JavaSymbol.TYP); JavaType type = idType.type(); if (typeTree.is(Tree.Kind.PARAMETERIZED_TYPE)) { TypeArguments typeArguments = ((ParameterizedTypeTree) typeTree).typeArguments(); scan(typeArguments); type = parametrizedTypeWithTypeArguments(type.symbol, typeArguments); } registerType(typeTree, type); } else { resolveAs(typeTree, JavaSymbol.TYP, newClassEnv, false); } return (JavaType) typeTree.symbolType(); }
private void resolveEnumConstant(ExpressionTree enumExpression, IdentifierTree enumConstant) { Resolve.Env enumEnv = semanticModel.getEnv(enumExpression); JavaSymbol.TypeJavaSymbol enumSymbol = (JavaSymbol.TypeJavaSymbol) enumExpression.symbolType().symbol(); Resolve.Resolution res = resolve.findIdentInType(enumEnv, enumSymbol, enumConstant.name(), JavaSymbol.VAR); if (!res.symbol().isUnknown()) { registerType(enumConstant, res.type()); associateReference(enumConstant, res.symbol()); } }
private void resolveEnumConstant(ExpressionTree enumExpression, IdentifierTree enumConstant) { Resolve.Env enumEnv = semanticModel.getEnv(enumExpression); JavaSymbol.TypeJavaSymbol enumSymbol = (JavaSymbol.TypeJavaSymbol) enumExpression.symbolType().symbol(); Resolve.Resolution res = resolve.findIdentInType(enumEnv, enumSymbol, enumConstant.name(), JavaSymbol.VAR); if (!res.symbol().isUnknown()) { registerType(enumConstant, res.type()); associateReference(enumConstant, res.symbol()); } }