@Override public void visitVariable(VariableTree tree) { scan(tree.modifiers()); completeMetadata(((VariableTreeImpl) tree).getSymbol(), tree.modifiers().annotations()); //skip type, it has been resolved in second pass if (tree.initializer() != null) { resolveAs(tree.initializer(), JavaSymbol.VAR); } }
@Override public void visitVariable(VariableTree tree) { scan(tree.modifiers()); completeMetadata(((VariableTreeImpl) tree).getSymbol(), tree.modifiers().annotations()); //skip type, it has been resolved in second pass if (tree.initializer() != null) { resolveAs(tree.initializer(), JavaSymbol.VAR); } }
private void setInferedType(Type infered, DeferredType deferredType) { AbstractTypedTree inferedExpression = deferredType.tree(); Type newType = infered; if (inferedExpression.is(Tree.Kind.NEW_CLASS)) { Type newClassType = ((NewClassTree) inferedExpression).identifier().symbolType(); if(((JavaType) newClassType).isParameterized()) { newType = resolve.resolveTypeSubstitutionWithDiamondOperator((ParametrizedTypeJavaType) newClassType, (JavaType) infered); } } inferedExpression.setInferedType(newType); inferedExpression.accept(this); if (inferedExpression.is(Tree.Kind.VAR_TYPE)) { // change type of the variable JavaSymbol.VariableJavaSymbol variableSymbol = ((VariableTreeImpl) inferedExpression.parent()).getSymbol(); variableSymbol.type = (JavaType) newType; } }
private void setInferedType(Type infered, DeferredType deferredType) { AbstractTypedTree inferedExpression = deferredType.tree(); Type newType = infered; if (inferedExpression.is(Tree.Kind.NEW_CLASS)) { Type newClassType = ((NewClassTree) inferedExpression).identifier().symbolType(); if(((JavaType) newClassType).isParameterized()) { newType = resolve.resolveTypeSubstitutionWithDiamondOperator((ParametrizedTypeJavaType) newClassType, (JavaType) infered); } } inferedExpression.setInferedType(newType); inferedExpression.accept(this); if (inferedExpression.is(Tree.Kind.VAR_TYPE)) { // change type of the variable JavaSymbol.VariableJavaSymbol variableSymbol = ((VariableTreeImpl) inferedExpression.parent()).getSymbol(); variableSymbol.type = (JavaType) newType; } }
@Override public void visitVariable(VariableTree tree) { scan(tree.modifiers()); JavaSymbol.VariableJavaSymbol variableSymbol = ((VariableTreeImpl) tree).getSymbol(); completeMetadata(variableSymbol, tree.modifiers().annotations()); //skip type, it has been resolved in second pass ExpressionTree initializer = tree.initializer(); if (initializer != null) { resolveAs(initializer, JavaSymbol.VAR); TypeTree typeTree = tree.type(); JavaType initializerType = (JavaType) initializer.symbolType(); if (initializerType.isTagged(JavaType.DEFERRED)) { setInferedType(typeTree.symbolType(), (DeferredType) initializer.symbolType()); } else if (typeTree.is(Tree.Kind.VAR_TYPE)) { setInferedType(upwardProjection(initializerType), (DeferredType) typeTree.symbolType()); } } }
@Override public void visitVariable(VariableTree tree) { scan(tree.modifiers()); JavaSymbol.VariableJavaSymbol variableSymbol = ((VariableTreeImpl) tree).getSymbol(); completeMetadata(variableSymbol, tree.modifiers().annotations()); //skip type, it has been resolved in second pass ExpressionTree initializer = tree.initializer(); if (initializer != null) { resolveAs(initializer, JavaSymbol.VAR); TypeTree typeTree = tree.type(); JavaType initializerType = (JavaType) initializer.symbolType(); if (initializerType.isTagged(JavaType.DEFERRED)) { setInferedType(typeTree.symbolType(), (DeferredType) initializer.symbolType()); } else if (typeTree.is(Tree.Kind.VAR_TYPE)) { setInferedType(upwardProjection(initializerType), (DeferredType) typeTree.symbolType()); } } }
@Override public void visitEnumConstant(EnumConstantTree tree) { scan(tree.modifiers()); NewClassTree newClassTree = tree.initializer(); scan(newClassTree.enclosingExpression()); // register identifier type registerType(newClassTree.identifier(), ((VariableTreeImpl) tree).getSymbol().getType()); scan(newClassTree.typeArguments()); scan(newClassTree.arguments()); ClassTree classBody = newClassTree.classBody(); if(classBody != null) { scan(classBody); ((JavaType.ClassJavaType) classBody.symbol().type()).supertype = getType(newClassTree.identifier()); } resolveConstructorSymbol(tree.simpleName(), semanticModel.getEnv(tree), getParameterTypes(newClassTree.arguments())); }
@Override public void visitEnumConstant(EnumConstantTree tree) { scan(tree.modifiers()); NewClassTree newClassTree = (NewClassTree) tree.initializer(); scan(newClassTree.enclosingExpression()); // register identifier type registerType(newClassTree.identifier(), ((VariableTreeImpl) tree).getSymbol().getType()); scan(newClassTree.typeArguments()); scan(newClassTree.arguments()); ClassTree classBody = newClassTree.classBody(); if(classBody != null) { scan(classBody); ((JavaType.ClassJavaType) classBody.symbol().type()).supertype = getType(newClassTree.identifier()); } resolveConstructorSymbol(tree.simpleName(), semanticModel.getEnv(tree), getParameterTypes(newClassTree.arguments())); }
@Override public void visitEnumConstant(EnumConstantTree tree) { scan(tree.modifiers()); NewClassTree newClassTree = tree.initializer(); scan(newClassTree.enclosingExpression()); // register identifier type registerType(newClassTree.identifier(), ((VariableTreeImpl) tree).getSymbol().getType()); scan(newClassTree.typeArguments()); scan(newClassTree.arguments()); ClassTree classBody = newClassTree.classBody(); if(classBody != null) { scan(classBody); ((ClassJavaType) classBody.symbol().type()).supertype = getType(newClassTree.identifier()); } resolveConstructorSymbol(tree.simpleName(), newClassTree.identifier().symbolType(), semanticModel.getEnv(tree), getParameterTypes(newClassTree.arguments())); }
@Override public void visitEnumConstant(EnumConstantTree tree) { scan(tree.modifiers()); NewClassTree newClassTree = tree.initializer(); scan(newClassTree.enclosingExpression()); // register identifier type registerType(newClassTree.identifier(), ((VariableTreeImpl) tree).getSymbol().getType()); scan(newClassTree.typeArguments()); scan(newClassTree.arguments()); ClassTree classBody = newClassTree.classBody(); if(classBody != null) { scan(classBody); ((ClassJavaType) classBody.symbol().type()).supertype = getType(newClassTree.identifier()); } resolveConstructorSymbol(tree.simpleName(), newClassTree.identifier().symbolType(), semanticModel.getEnv(tree), getParameterTypes(newClassTree.arguments())); }