private void buildNewClass(NewClassTree tree) { currentBlock.elements.add(tree); ExpressionTree enclosingExpression = tree.enclosingExpression(); if (enclosingExpression != null) { build(enclosingExpression); } build(Lists.reverse(tree.arguments())); }
private void buildNewClass(NewClassTree tree) { handleExceptionalPaths(tree.constructorSymbol()); currentBlock.elements.add(tree); build(tree.arguments()); ExpressionTree enclosingExpression = tree.enclosingExpression(); if (enclosingExpression != null) { build(enclosingExpression); } }
private void buildNewClass(NewClassTree tree) { handleExceptionalPaths(tree.constructorSymbol()); currentBlock.elements.add(tree); build(tree.arguments()); ExpressionTree enclosingExpression = tree.enclosingExpression(); if (enclosingExpression != null) { build(enclosingExpression); } }
@Override public void visitNewClass(NewClassTree tree) { scan(tree.enclosingExpression()); scan(tree.identifier()); scan(tree.typeArguments()); scan(tree.arguments()); //do not scan body of anonymous classes. } }
@Override public void visitNewClass(NewClassTree tree) { scan(tree.enclosingExpression()); scan(tree.identifier()); scan(tree.typeArguments()); scan(tree.arguments()); //do not scan body of anonymous classes. } }
@Override public void visitNewClass(NewClassTree tree) { scan(tree.enclosingExpression()); scan(tree.identifier()); scan(tree.typeArguments()); scan(tree.arguments()); scan(tree.classBody()); }
@Override public void visitNewClass(NewClassTree tree) { scan(tree.enclosingExpression()); scan(tree.identifier()); scan(tree.typeArguments()); scan(tree.arguments()); scan(tree.classBody()); }
@Override public void visitNewClass(NewClassTree tree) { scan(tree.enclosingExpression()); scan(tree.identifier()); scan(tree.typeArguments()); scan(tree.arguments()); scan(tree.classBody()); }
@Override public void visitNewClass(NewClassTree tree) { scan(tree.enclosingExpression()); scan(tree.identifier()); scan(tree.typeArguments()); scan(tree.arguments()); scan(tree.classBody()); }
@Override public void visitNewClass(NewClassTree tree) { if (tree.enclosingExpression() != null) { resolveAs(tree.enclosingExpression(), JavaSymbol.VAR); } Resolve.Env newClassEnv = semanticModel.getEnv(tree); resolveAs(tree.identifier(), JavaSymbol.TYP, newClassEnv, false); resolveAs(tree.typeArguments(), JavaSymbol.TYP); resolveAs(tree.arguments(), JavaSymbol.VAR); NewClassTreeImpl newClassTreeImpl = (NewClassTreeImpl) tree; resolveConstructorSymbol(newClassTreeImpl.getConstructorIdentifier(), newClassEnv, getParameterTypes(tree.arguments())); ClassTree classBody = tree.classBody(); if (classBody != null) { JavaType type = (JavaType) tree.identifier().symbolType(); JavaType.ClassJavaType anonymousClassType = (JavaType.ClassJavaType) classBody.symbol().type(); if (type.getSymbol().isFlag(Flags.INTERFACE)) { anonymousClassType.interfaces = ImmutableList.of(type); anonymousClassType.supertype = symbols.objectType; } else { anonymousClassType.supertype = type; anonymousClassType.interfaces = ImmutableList.of(); } scan(classBody); registerType(tree, anonymousClassType); } else { registerType(tree, getType(tree.identifier())); } }
@Override public void visitNewClass(NewClassTree tree) { if (tree.enclosingExpression() != null) { resolveAs(tree.enclosingExpression(), JavaSymbol.VAR); } Resolve.Env newClassEnv = semanticModel.getEnv(tree); resolveAs(tree.identifier(), JavaSymbol.TYP, newClassEnv, false); if (tree.typeArguments() != null) { resolveAs((List<Tree>) tree.typeArguments(), JavaSymbol.TYP); } resolveAs((List<ExpressionTree>) tree.arguments(), JavaSymbol.VAR); NewClassTreeImpl newClassTreeImpl = (NewClassTreeImpl) tree; resolveConstructorSymbol(newClassTreeImpl.getConstructorIdentifier(), newClassEnv, getParameterTypes(tree.arguments())); ClassTree classBody = tree.classBody(); if (classBody != null) { JavaType type = (JavaType) tree.identifier().symbolType(); JavaType.ClassJavaType anonymousClassType = (JavaType.ClassJavaType) classBody.symbol().type(); if (type.getSymbol().isFlag(Flags.INTERFACE)) { anonymousClassType.interfaces = ImmutableList.of(type); anonymousClassType.supertype = symbols.objectType; } else { anonymousClassType.supertype = type; anonymousClassType.interfaces = ImmutableList.of(); } scan(classBody); registerType(tree, anonymousClassType); } else { registerType(tree, getType(tree.identifier())); } }
@Override public void visitNewClass(NewClassTree tree) { checkTypes(tree.typeArguments()); if (tree.identifier().is(Tree.Kind.PARAMETERIZED_TYPE)) { scan(tree.enclosingExpression()); checkTypes(((ParameterizedTypeTree) tree.identifier()).typeArguments()); scan(tree.typeArguments()); scan(tree.arguments()); scan(tree.classBody()); } else { super.visitNewClass(tree); } }
@Override public void visitNewClass(NewClassTree tree) { if (tree.typeArguments() != null) { checkTypes((List<Tree>) tree.typeArguments()); } if (tree.identifier().is(Tree.Kind.PARAMETERIZED_TYPE)) { scan(tree.enclosingExpression()); checkTypes((List<Tree>) ((ParameterizedTypeTree) tree.identifier()).typeArguments()); scan(tree.typeArguments()); scan(tree.arguments()); scan(tree.classBody()); } else { super.visitNewClass(tree); } }
@Override public void visitNewClass(NewClassTree tree) { if (tree.typeArguments() != null) { checkTypes((List<Tree>) tree.typeArguments()); } if (tree.identifier().is(Tree.Kind.PARAMETERIZED_TYPE)) { scan(tree.enclosingExpression()); checkTypes((List<Tree>) ((ParameterizedTypeTree) tree.identifier()).typeArguments()); scan(tree.typeArguments()); scan(tree.arguments()); scan(tree.classBody()); } else { super.visitNewClass(tree); } }
List<JavaType> parameterTypes = getParameterTypes(tree.arguments()); Resolve.Env newClassEnv = semanticModel.getEnv(tree); ExpressionTree enclosingExpression = tree.enclosingExpression();
List<JavaType> parameterTypes = getParameterTypes(tree.arguments()); Resolve.Env newClassEnv = semanticModel.getEnv(tree); ExpressionTree enclosingExpression = tree.enclosingExpression();
@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); ((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())); }