private ParseTree parseTypeAnnotation() { eat(TokenType.COLON); return parseType(); }
private IndexSignatureTree parseIndexSignature() { SourcePosition start = getTreeStartLocation(); eat(TokenType.OPEN_SQUARE); IdentifierToken name = eatIdOrKeywordAsId(); eat(TokenType.COLON); ParseTree indexType = parseTypeName(); // must be 'string' or 'number' eat(TokenType.CLOSE_SQUARE); eat(TokenType.COLON); ParseTree declaredType = parseType(); ParseTree nameTree = new MemberVariableTree(getTreeLocation(start), name, false, false, null, indexType); return new IndexSignatureTree(getTreeLocation(start), nameTree, declaredType); }
private ParseTree parseTypeAnnotation() { eat(TokenType.COLON); return parseType(); }
private IndexSignatureTree parseIndexSignature() { SourcePosition start = getTreeStartLocation(); eat(TokenType.OPEN_SQUARE); IdentifierToken name = eatIdOrKeywordAsId(); eat(TokenType.COLON); ParseTree indexType = parseTypeName(); // must be 'string' or 'number' eat(TokenType.CLOSE_SQUARE); eat(TokenType.COLON); ParseTree declaredType = parseType(); ParseTree nameTree = new MemberVariableTree(getTreeLocation(start), name, false, false, null, indexType); return new IndexSignatureTree(getTreeLocation(start), nameTree, declaredType); }
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 ParseTree parseParenTypeExpression() { ParseTree typeExpression; if (peek(TokenType.OPEN_PAREN)) { eat(TokenType.OPEN_PAREN); typeExpression = parseType(); eat(TokenType.CLOSE_PAREN); } else { typeExpression = parseRecordTypeExpression(); } return typeExpression; }
private ParseTree parseParenTypeExpression() { ParseTree typeExpression; if (peek(TokenType.OPEN_PAREN)) { eat(TokenType.OPEN_PAREN); typeExpression = parseType(); eat(TokenType.CLOSE_PAREN); } else { typeExpression = parseRecordTypeExpression(); } return typeExpression; }
private ParseTree parseInterfaceDeclaration() { SourcePosition start = getTreeStartLocation(); eat(TokenType.INTERFACE); IdentifierToken name = eatId(); GenericTypeListTree generics = maybeParseGenericTypes(); ImmutableList.Builder<ParseTree> superTypes = ImmutableList.builder(); if (peek(TokenType.EXTENDS)) { eat(TokenType.EXTENDS); ParseTree type = parseType(); superTypes.add(type); while (peek(TokenType.COMMA)) { eat(TokenType.COMMA); type = parseType(); if (type != null) { superTypes.add(type); } } } eat(TokenType.OPEN_CURLY); ImmutableList<ParseTree> elements = parseInterfaceElements(); eat(TokenType.CLOSE_CURLY); return new InterfaceDeclarationTree(getTreeLocation(start), name, generics, superTypes.build(), elements); }
private ParseTree parseInterfaceDeclaration() { SourcePosition start = getTreeStartLocation(); eat(TokenType.INTERFACE); IdentifierToken name = eatId(); GenericTypeListTree generics = maybeParseGenericTypes(); ImmutableList.Builder<ParseTree> superTypes = ImmutableList.builder(); if (peek(TokenType.EXTENDS)) { eat(TokenType.EXTENDS); ParseTree type = parseType(); superTypes.add(type); while (peek(TokenType.COMMA)) { eat(TokenType.COMMA); type = parseType(); if (type != null) { superTypes.add(type); } } } eat(TokenType.OPEN_CURLY); ImmutableList<ParseTree> elements = parseInterfaceElements(); eat(TokenType.CLOSE_CURLY); return new InterfaceDeclarationTree(getTreeLocation(start), name, generics, superTypes.build(), elements); }
private ParseTree parseTypeAlias() { SourcePosition start = getTreeStartLocation(); eat(TokenType.TYPE); IdentifierToken alias = eatId(); eat(TokenType.EQUAL); ParseTree original = parseType(); eatPossibleImplicitSemiColon(); return new TypeAliasTree(getTreeLocation(start), alias, original); }
private ParseTree parseTypeAlias() { SourcePosition start = getTreeStartLocation(); eat(TokenType.TYPE); IdentifierToken alias = eatId(); eat(TokenType.EQUAL); ParseTree original = parseType(); eatPossibleImplicitSemiColon(); return new TypeAliasTree(getTreeLocation(start), alias, original); }
private ParseTree parseFunctionTypeExpression() { SourcePosition start = getTreeStartLocation(); ParseTree typeExpression = null; if (peekFunctionTypeExpression()) { FormalParameterListTree formalParameterList; formalParameterList = parseFormalParameterList(ParamContext.IMPLEMENTATION); eat(TokenType.ARROW); ParseTree returnType = parseType(); typeExpression = new FunctionTypeTree( getTreeLocation(start), formalParameterList, returnType); } else { typeExpression = parseArrayTypeExpression(); } return typeExpression; }
private ParseTree parseFunctionTypeExpression() { SourcePosition start = getTreeStartLocation(); ParseTree typeExpression = null; if (peekFunctionTypeExpression()) { FormalParameterListTree formalParameterList; formalParameterList = parseFormalParameterList(ParamContext.IMPLEMENTATION); eat(TokenType.ARROW); ParseTree returnType = parseType(); typeExpression = new FunctionTypeTree( getTreeLocation(start), formalParameterList, returnType); } else { typeExpression = parseArrayTypeExpression(); } return typeExpression; }
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); }