/** * Whether we have a spread expression or an assignment next. * * <p>This does not peek the operand for the spread expression. This means that * {@link #parseAssignmentOrSpread} might still fail when this returns true. */ private boolean peekAssignmentOrSpread() { return peek(TokenType.SPREAD) || peekAssignmentExpression(); }
/** * Whether we have a spread expression or an assignment next. * * <p>This does not peek the operand for the spread expression. This means that * {@link #parseAssignmentOrSpread} might still fail when this returns true. */ private boolean peekAssignmentOrSpread() { return peek(TokenType.SPREAD) || peekAssignmentExpression(); }
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 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); }
while (peek(TokenType.COMMA) || peek(TokenType.SPREAD) || peekAssignmentExpression()) { trailingCommaToken = null; if (peek(TokenType.COMMA)) {
while (peek(TokenType.COMMA) || peek(TokenType.SPREAD) || peekAssignmentExpression()) { trailingCommaToken = null; if (peek(TokenType.COMMA)) {