private ParseTree parseTypeArgumentList(SourcePosition start, TypeNameTree typeName) { // < TypeArgumentList > // TypeArgumentList , TypeArgument eat(TokenType.OPEN_ANGLE); scanner.incTypeParameterLevel(); ImmutableList.Builder<ParseTree> typeArguments = ImmutableList.builder(); ParseTree type = parseType(); typeArguments.add(type); while (peek(TokenType.COMMA)) { eat(TokenType.COMMA); type = parseType(); if (type != null) { typeArguments.add(type); } } eat(TokenType.CLOSE_ANGLE); scanner.decTypeParameterLevel(); return new ParameterizedTypeTree(getTreeLocation(start), typeName, typeArguments.build()); }
private ParseTree parseTypeArgumentList(SourcePosition start, TypeNameTree typeName) { // < TypeArgumentList > // TypeArgumentList , TypeArgument eat(TokenType.OPEN_ANGLE); scanner.incTypeParameterLevel(); ImmutableList.Builder<ParseTree> typeArguments = ImmutableList.builder(); ParseTree type = parseType(); typeArguments.add(type); while (peek(TokenType.COMMA)) { eat(TokenType.COMMA); type = parseType(); if (type != null) { typeArguments.add(type); } } eat(TokenType.CLOSE_ANGLE); scanner.decTypeParameterLevel(); return new ParameterizedTypeTree(getTreeLocation(start), typeName, typeArguments.build()); }
private GenericTypeListTree maybeParseGenericTypes() { if (!peek(TokenType.OPEN_ANGLE)) { return null; } SourcePosition start = getTreeStartLocation(); eat(TokenType.OPEN_ANGLE); scanner.incTypeParameterLevel(); LinkedHashMap<IdentifierToken, ParseTree> types = new LinkedHashMap<>(); do { IdentifierToken name = eatId(); ParseTree bound = null; if (peek(TokenType.EXTENDS)) { eat(TokenType.EXTENDS); bound = parseType(); } types.put(name, bound); if (peek(TokenType.COMMA)) { eat(TokenType.COMMA); } } while (peekId()); eat(TokenType.CLOSE_ANGLE); scanner.decTypeParameterLevel(); return new GenericTypeListTree(getTreeLocation(start), types); }
private GenericTypeListTree maybeParseGenericTypes() { if (!peek(TokenType.OPEN_ANGLE)) { return null; } SourcePosition start = getTreeStartLocation(); eat(TokenType.OPEN_ANGLE); scanner.incTypeParameterLevel(); LinkedHashMap<IdentifierToken, ParseTree> types = new LinkedHashMap<IdentifierToken, ParseTree>(); do { IdentifierToken name = eatId(); ParseTree bound = null; if (peek(TokenType.EXTENDS)) { eat(TokenType.EXTENDS); bound = parseType(); } types.put(name, bound); if (peek(TokenType.COMMA)) { eat(TokenType.COMMA); } } while (peekId()); eat(TokenType.CLOSE_ANGLE); scanner.decTypeParameterLevel(); return new GenericTypeListTree(getTreeLocation(start), types); }