public IdentifierTree getConstructorIdentifier() { return getConstructorIdentifier(identifier()); }
public NewClassTreeImpl newClassCreatorRest(ArgumentListTreeImpl arguments, Optional<ClassTreeImpl> classBody) { return new NewClassTreeImpl(arguments, classBody.orNull()); }
public ExpressionTree newClassCreator(Optional<TypeArgumentListTreeImpl> typeArguments, TypeTree qualifiedIdentifier, NewClassTreeImpl classCreatorRest) { if (typeArguments.isPresent()) { classCreatorRest.completeWithTypeArguments(typeArguments.get()); } return classCreatorRest.completeWithIdentifier(qualifiedIdentifier); }
public ExpressionTree newClassCreator(TypeTree qualifiedIdentifier, NewClassTreeImpl classCreatorRest) { classCreatorRest.prependChildren((AstNode) qualifiedIdentifier); return classCreatorRest.completeWithIdentifier(qualifiedIdentifier); }
@Override public Symbol constructorSymbol() { return this.getConstructorIdentifier().symbol(); }
public EnumConstantTreeImpl newEnumConstant( Optional<List<AnnotationTreeImpl>> annotations, InternalSyntaxToken identifierToken, Optional<ArgumentListTreeImpl> arguments, Optional<ClassTreeImpl> classBody, Optional<InternalSyntaxToken> commaToken) { IdentifierTreeImpl identifier = new IdentifierTreeImpl(identifierToken); ArgumentListTreeImpl defaultArguments = new ArgumentListTreeImpl(ImmutableList.<ExpressionTree>of(), ImmutableList.<SyntaxToken>of()); NewClassTreeImpl newClass = new NewClassTreeImpl(arguments.or(defaultArguments), classBody.orNull()); newClass.completeWithIdentifier(identifier); return new EnumConstantTreeImpl(modifiers((Optional<List<ModifierTree>>) (Optional<?>) annotations), identifier, newClass, commaToken.orNull()); }
public ExpressionTree newExpression(InternalSyntaxToken newToken, Optional<List<AnnotationTreeImpl>> annotations, ExpressionTree partial) { TypeTree typeTree; if (partial.is(Tree.Kind.NEW_CLASS)) { NewClassTreeImpl newClassTree = (NewClassTreeImpl) partial; newClassTree.completeWithNewKeyword(newToken); typeTree = newClassTree.identifier(); } else { NewArrayTreeImpl newArrayTree = (NewArrayTreeImpl) partial; newArrayTree.completeWithNewKeyword(newToken); typeTree = newArrayTree.type(); } completeTypeTreeWithAnnotations(typeTree, annotations); return partial; }
@Override public void visitNewClass(NewClassTree tree) { NewClassTreeImpl newClassTreeImpl = (NewClassTreeImpl) tree; if (newClassTreeImpl.isTypeSet()) { return; IdentifierTree constructorIdentifier = newClassTreeImpl.getConstructorIdentifier(); JavaType identifierType = resolveIdentifierType(newClassEnv, enclosingExpression, typeTree, constructorIdentifier.name()); JavaSymbol.TypeJavaSymbol constructorIdentifierSymbol = (JavaSymbol.TypeJavaSymbol) identifierType.symbol(); constructedType = ((MethodJavaType) resolution.type()).resultType; if (constructedType.isTagged(JavaType.DEFERRED)) { Tree parent = newClassTreeImpl.parent(); if (parent.is(Tree.Kind.MEMBER_SELECT)) { constructedType = resolve.parametrizedTypeWithErasure((ParametrizedTypeJavaType) identifierType);
@Override public void visitNode(Tree tree) { if (!hasSemantic()) { return; } List<ExpressionTree> arguments; Symbol methodSymbol; if (tree.is(Kind.NEW_CLASS)) { NewClassTreeImpl nct = (NewClassTreeImpl) tree; methodSymbol = (nct.getConstructorIdentifier()).symbol(); arguments = nct.arguments(); } else { MethodInvocationTree mit = (MethodInvocationTree) tree; methodSymbol = mit.symbol(); arguments = mit.arguments(); } if (!arguments.isEmpty() && methodSymbol.isMethodSymbol()) { checkArgumentsTypes(arguments, (MethodJavaSymbol) methodSymbol); } }
result = newClass.completeWithEnclosingExpression(result); } else if (selector.is(Kind.ARRAY_ACCESS_EXPRESSION)) { ArrayAccessExpressionTreeImpl arrayAccess = (ArrayAccessExpressionTreeImpl) selector;
} else if (selector.is(Kind.NEW_CLASS)) { NewClassTreeImpl newClass = (NewClassTreeImpl) selector; newClass.prependChildren((AstNode) result); result = newClass.completeWithEnclosingExpression(result); } else if (selector.is(Kind.ARRAY_ACCESS_EXPRESSION)) { ArrayAccessExpressionTreeImpl arrayAccess = (ArrayAccessExpressionTreeImpl) selector;
@Override public Iterable<Tree> children() { ImmutableList.Builder<Tree> builder = ImmutableList.builder(); addIfNotNull(builder, enclosingExpression, dotToken, newKeyword, typeArguments); builder.add(identifier); builder.add(arguments); addIfNotNull(builder, classBody); return builder.build(); }
public Tuple<Optional<InternalSyntaxToken>, ExpressionTree> completeCreatorSelector(InternalSyntaxToken dotToken, ExpressionTree partial) { ((NewClassTreeImpl) partial).completeWithDotToken(dotToken); return newTuple(Optional.<InternalSyntaxToken>absent(), partial); }
@Override public Symbol constructorSymbol() { return this.getConstructorIdentifier().symbol(); }
public EnumConstantTreeImpl newEnumConstant( Optional<List<AnnotationTreeImpl>> annotations, InternalSyntaxToken identifierToken, Optional<ArgumentListTreeImpl> arguments, Optional<ClassTreeImpl> classBody, Optional<InternalSyntaxToken> commaToken) { IdentifierTreeImpl identifier = new IdentifierTreeImpl(identifierToken); ArgumentListTreeImpl defaultArguments = new ArgumentListTreeImpl(ImmutableList.<ExpressionTree>of(), ImmutableList.<SyntaxToken>of()); NewClassTreeImpl newClass = new NewClassTreeImpl(arguments.or(defaultArguments), classBody.orNull()); newClass.completeWithIdentifier(identifier); return new EnumConstantTreeImpl(modifiers((Optional<List<ModifierTree>>) (Optional<?>) annotations), identifier, newClass, commaToken.orNull()); }
public ExpressionTree newExpression(InternalSyntaxToken newToken, Optional<List<AnnotationTreeImpl>> annotations, ExpressionTree partial) { TypeTree typeTree; if (partial.is(Tree.Kind.NEW_CLASS)) { NewClassTreeImpl newClassTree = (NewClassTreeImpl) partial; newClassTree.completeWithNewKeyword(newToken); typeTree = newClassTree.identifier(); } else { NewArrayTreeImpl newArrayTree = (NewArrayTreeImpl) partial; newArrayTree.completeWithNewKeyword(newToken); typeTree = newArrayTree.type(); } completeTypeTreeWithAnnotations(typeTree, annotations); return partial; }
@Override public void visitNewClass(NewClassTree tree) { NewClassTreeImpl newClassTreeImpl = (NewClassTreeImpl) tree; if (newClassTreeImpl.isTypeSet()) { return; IdentifierTree constructorIdentifier = newClassTreeImpl.getConstructorIdentifier(); JavaType identifierType = resolveIdentifierType(newClassEnv, enclosingExpression, typeTree, constructorIdentifier.name()); JavaSymbol.TypeJavaSymbol constructorIdentifierSymbol = (JavaSymbol.TypeJavaSymbol) identifierType.symbol(); constructedType = ((MethodJavaType) resolution.type()).resultType; if (constructedType.isTagged(JavaType.DEFERRED)) { Tree parent = newClassTreeImpl.parent(); if (parent.is(Tree.Kind.MEMBER_SELECT)) { constructedType = resolve.parametrizedTypeWithErasure((ParametrizedTypeJavaType) identifierType);
result = newClass.completeWithEnclosingExpression(result); } else if (selector.is(Kind.ARRAY_ACCESS_EXPRESSION)) { ArrayAccessExpressionTreeImpl arrayAccess = (ArrayAccessExpressionTreeImpl) selector;
@Override public Iterable<Tree> children() { ImmutableList.Builder<Tree> builder = ImmutableList.builder(); addIfNotNull(builder, enclosingExpression, dotToken, newKeyword, typeArguments); builder.add(identifier); builder.add(arguments); addIfNotNull(builder, classBody); return builder.build(); }
public Tuple<Optional<InternalSyntaxToken>, ExpressionTree> completeCreatorSelector(InternalSyntaxToken dotToken, ExpressionTree partial) { ((NewClassTreeImpl) partial).completeWithDotToken(dotToken); return newTuple(Optional.<InternalSyntaxToken>absent(), partial); }