private ParseTree parseAmbientFunctionDeclaration() { SourcePosition start = getTreeStartLocation(); eat(Keywords.FUNCTION.type); boolean isGenerator = eatOpt(TokenType.STAR) != null; IdentifierToken name = eatId(); return parseAmbientFunctionDeclaration(start, name, isGenerator); }
private ParseTree parseAmbientFunctionDeclaration() { SourcePosition start = getTreeStartLocation(); eat(Keywords.FUNCTION.type); boolean isGenerator = eatOpt(TokenType.STAR) != null; IdentifierToken name = eatId(); return parseAmbientFunctionDeclaration(start, name, isGenerator); }
private ParseTree parseFunctionDeclaration() { SourcePosition start = getTreeStartLocation(); eat(Keywords.FUNCTION.type); boolean isGenerator = eatOpt(TokenType.STAR) != null; IdentifierToken name = eatId(); return parseFunctionTail( start, name, false, isGenerator, null, FunctionDeclarationTree.Kind.DECLARATION); }
private ParseTree parseFunctionExpression() { SourcePosition start = getTreeStartLocation(); eat(Keywords.FUNCTION.type); boolean isGenerator = eatOpt(TokenType.STAR) != null; IdentifierToken name = eatIdOpt(); return parseFunctionTail( start, name, false, isGenerator, null, FunctionDeclarationTree.Kind.EXPRESSION); }
private ParseTree parseClassElement(boolean isAmbient) { if (peek(TokenType.SEMI_COLON)) { return parseEmptyStatement(); } else { PartialClassElement partialElement = getClassElementDefaults(); partialElement.isAmbient = isAmbient; partialElement.accessModifier = maybeParseAccessibilityModifier(); partialElement.isStatic = eatOpt(TokenType.STATIC) != null; return parseClassElement(partialElement); } }
private ParseTree parseObjectLiteral() { SourcePosition start = getTreeStartLocation(); ImmutableList.Builder<ParseTree> result = ImmutableList.builder(); eat(TokenType.OPEN_CURLY); Token commaToken = null; while (peekPropertyNameOrComputedProp(0) || peek(TokenType.STAR) || peekAccessibilityModifier()) { commaToken = null; result.add(parsePropertyAssignment()); commaToken = eatOpt(TokenType.COMMA); if (commaToken == null) { break; } } eat(TokenType.CLOSE_CURLY); maybeReportTrailingComma(commaToken); return new ObjectLiteralExpressionTree(getTreeLocation(start), result.build()); }
private ParseTree parseObjectLiteral() { SourcePosition start = getTreeStartLocation(); ImmutableList.Builder<ParseTree> result = ImmutableList.builder(); eat(TokenType.OPEN_CURLY); Token commaToken = null; while (peek(TokenType.SPREAD) || peekPropertyNameOrComputedProp(0) || peek(TokenType.STAR) || peekAccessibilityModifier()) { commaToken = null; result.add(parsePropertyAssignment()); commaToken = eatOpt(TokenType.COMMA); if (commaToken == null) { break; } } eat(TokenType.CLOSE_CURLY); maybeReportTrailingComma(commaToken); return new ObjectLiteralExpressionTree(getTreeLocation(start), result.build()); }
private ParseTree parseFunctionDeclaration() { SourcePosition start = getTreeStartLocation(); eat(Keywords.FUNCTION.type); boolean isGenerator = eatOpt(TokenType.STAR) != null; FunctionDeclarationTree.Builder builder = FunctionDeclarationTree.builder(FunctionDeclarationTree.Kind.DECLARATION).setName(eatId()); parseFunctionTail(builder, isGenerator ? FunctionFlavor.GENERATOR : FunctionFlavor.NORMAL); return builder.build(getTreeLocation(start)); }
private ParseTree parseYield(Expression expressionIn) { SourcePosition start = getTreeStartLocation(); eat(TokenType.YIELD); boolean isYieldFor = false; ParseTree expression = null; if (!peekImplicitSemiColon()) { isYieldFor = eatOpt(TokenType.STAR) != null; if (peekAssignmentExpression()) { expression = parseAssignment(expressionIn); } } return new YieldExpressionTree( getTreeLocation(start), isYieldFor, expression); }
private ParseTree parseFunctionExpression() { SourcePosition start = getTreeStartLocation(); eat(Keywords.FUNCTION.type); boolean isGenerator = eatOpt(TokenType.STAR) != null; FunctionDeclarationTree.Builder builder = FunctionDeclarationTree.builder(FunctionDeclarationTree.Kind.EXPRESSION) .setName(eatIdOpt()); parseFunctionTail(builder, isGenerator ? FunctionFlavor.GENERATOR : FunctionFlavor.NORMAL); return builder.build(getTreeLocation(start)); }
private NamespaceDeclarationTree parseNamespaceDeclaration(boolean isAmbient) { SourcePosition start = getTreeStartLocation(); if (eatOpt(TokenType.MODULE) == null) { // Accept "module" or "namespace" eat(TokenType.NAMESPACE); } NamespaceNameTree name = parseNamespaceName(); eat(TokenType.OPEN_CURLY); ImmutableList<ParseTree> elements = isAmbient ? parseAmbientNamespaceElements() : parseNamespaceElements(); eat(TokenType.CLOSE_CURLY); return new NamespaceDeclarationTree(getTreeLocation(start), name, elements); }
private ParseTree parseYield(Expression expressionIn) { SourcePosition start = getTreeStartLocation(); eat(TokenType.YIELD); boolean isYieldAll = false; ParseTree expression = null; if (!peekImplicitSemiColon()) { isYieldAll = eatOpt(TokenType.STAR) != null; if (peekAssignmentExpression()) { expression = parseAssignment(expressionIn); } else if (isYieldAll) { reportError("yield* requires an expression"); } } return new YieldExpressionTree( getTreeLocation(start), isYieldAll, expression); }
private NamespaceDeclarationTree parseNamespaceDeclaration(boolean isAmbient) { SourcePosition start = getTreeStartLocation(); if (eatOpt(TokenType.MODULE) == null) { // Accept "module" or "namespace" eat(TokenType.NAMESPACE); } NamespaceNameTree name = parseNamespaceName(); eat(TokenType.OPEN_CURLY); ImmutableList<ParseTree> elements = isAmbient ? parseAmbientNamespaceElements() : parseNamespaceElements(); eat(TokenType.CLOSE_CURLY); return new NamespaceDeclarationTree(getTreeLocation(start), name, elements); }
private ParseTree parsePropertyNameAssignment() { SourcePosition start = getTreeStartLocation(); Token name = eatObjectLiteralPropertyName(); Token colon = eatOpt(TokenType.COLON); if (colon == null) { if (name.type != TokenType.IDENTIFIER) { reportExpectedError(peekToken(), TokenType.COLON); } else if (Keywords.isKeyword( name.asIdentifier().value, /* includeTypeScriptKeywords= */ false)) { reportError(name, "Cannot use keyword in short object literal"); } else if (peek(TokenType.EQUAL)) { IdentifierExpressionTree idTree = new IdentifierExpressionTree( getTreeLocation(start), (IdentifierToken) name); eat(TokenType.EQUAL); ParseTree defaultValue = parseAssignmentExpression(); return new DefaultParameterTree(getTreeLocation(start), idTree, defaultValue); } } ParseTree value = colon == null ? null : parseAssignmentExpression(); return new PropertyNameAssignmentTree(getTreeLocation(start), name, value); }
private ParseTree parseInterfaceElement() { SourcePosition start = getTreeStartLocation(); boolean isGenerator = eatOpt(TokenType.STAR) != null;
private ParseTree parseInterfaceElement() { SourcePosition start = getTreeStartLocation(); boolean isGenerator = eatOpt(TokenType.STAR) != null;
private ParseTree parseGetAccessor(TokenType access) { SourcePosition start = getTreeStartLocation(); boolean isStatic = eatOpt(TokenType.STATIC) != null; eatPredefinedString(PredefinedName.GET); if (peekPropertyName(0)) { Token propertyName = eatObjectLiteralPropertyName(); eat(TokenType.OPEN_PAREN); eat(TokenType.CLOSE_PAREN); ParseTree returnType = maybeParseColonType(); BlockTree body = parseFunctionBody(); return new GetAccessorTree(getTreeLocation(start), propertyName, isStatic, returnType, body); } else { ParseTree property = parseComputedPropertyName(); eat(TokenType.OPEN_PAREN); eat(TokenType.CLOSE_PAREN); ParseTree returnType = maybeParseColonType(); BlockTree body = parseFunctionBody(); return new ComputedPropertyGetterTree( getTreeLocation(start), property, isStatic, access, returnType, body); } }
private ParseTree parsePropertyNameAssignment() { SourcePosition start = getTreeStartLocation(); Token name = eatObjectLiteralPropertyName(); Token colon = eatOpt(TokenType.COLON); if (colon == null) { if (name.type != TokenType.IDENTIFIER) { reportExpectedError(peekToken(), TokenType.COLON); } else if (Keywords.isKeyword(name.asIdentifier().value) && !Keywords.isTypeScriptSpecificKeyword(name.asIdentifier().value)) { reportError(name, "Cannot use keyword in short object literal"); } else if (peek(TokenType.EQUAL)) { IdentifierExpressionTree idTree = new IdentifierExpressionTree( getTreeLocation(start), (IdentifierToken) name); eat(TokenType.EQUAL); ParseTree defaultValue = parseAssignmentExpression(); return new DefaultParameterTree(getTreeLocation(start), idTree, defaultValue); } } ParseTree value = colon == null ? null : parseAssignmentExpression(); return new PropertyNameAssignmentTree(getTreeLocation(start), name, value); }
private ParseTree parseSetAccessor(TokenType access) { SourcePosition start = getTreeStartLocation(); boolean isStatic = eatOpt(TokenType.STATIC) != null; eatPredefinedString(PredefinedName.SET); if (peekPropertyName(0)) { Token propertyName = eatObjectLiteralPropertyName(); eat(TokenType.OPEN_PAREN); IdentifierToken parameter = eatId(); ParseTree type = maybeParseColonType(); eat(TokenType.CLOSE_PAREN); ParseTree returnType = maybeParseColonType(); if (returnType != null) { reportError(scanner.peekToken(), "setter should not have any returns"); } BlockTree body = parseFunctionBody(); return new SetAccessorTree( getTreeLocation(start), propertyName, isStatic, parameter, type, body); } else { ParseTree property = parseComputedPropertyName(); eat(TokenType.OPEN_PAREN); IdentifierToken parameter = eatId(); ParseTree type = maybeParseColonType(); eat(TokenType.CLOSE_PAREN); BlockTree body = parseFunctionBody(); return new ComputedPropertySetterTree( getTreeLocation(start), property, isStatic, access, parameter, type, body); } }
isStatic = true; boolean isGenerator = eatOpt(TokenType.STAR) != null;