| # No semicolons | |
| x | |
| if (a) { | |
| var b = c | |
| d | |
| } else | |
| e | |
| ==> | |
| Script( | |
| ExpressionStatement(VariableName), | |
| IfStatement(if,ParenthesizedExpression(VariableName),Block( | |
| VariableDeclaration(var,VariableDefinition,Equals,VariableName), | |
| ExpressionStatement(VariableName)), | |
| else,ExpressionStatement(VariableName))) | |
| # Continued expressions on new line | |
| x | |
| + 2 | |
| foo | |
| (bar) | |
| ==> | |
| Script( | |
| ExpressionStatement(BinaryExpression(VariableName,ArithOp,Number)), | |
| ExpressionStatement(CallExpression(VariableName,ArgList(VariableName)))) | |
| # Doesn't parse postfix ops on a new line | |
| x | |
| ++y | |
| ==> | |
| Script( | |
| ExpressionStatement(VariableName), | |
| ExpressionStatement(UnaryExpression(ArithOp,VariableName))) | |
| # Eagerly cut return/break/continue | |
| return 2 | |
| return | |
| 2 | |
| continue foo | |
| continue | |
| foo | |
| break bar | |
| break | |
| bar | |
| ==> | |
| Script( | |
| ReturnStatement(return,Number), | |
| ReturnStatement(return), | |
| ExpressionStatement(Number), | |
| ContinueStatement(continue,Label), | |
| ContinueStatement(continue), | |
| ExpressionStatement(VariableName), | |
| BreakStatement(break,Label), | |
| BreakStatement(break), | |
| ExpressionStatement(VariableName)) | |
| # Cut return regardless of whitespace | |
| { return } | |
| return // foo | |
| ; | |
| ==> | |
| Script(Block(ReturnStatement(return)),ReturnStatement(return,LineComment)) | |