@@ -39,6 +39,7 @@ import qualified Language.JavaScript.Parser.AST as AST
39
39
' |' { BitwiseOrToken {} }
40
40
' ^' { BitwiseXorToken {} }
41
41
' &' { BitwiseAndToken {} }
42
+ ' =>' { ArrowToken {} }
42
43
' ===' { StrictEqToken {} }
43
44
' ==' { EqToken {} }
44
45
' *=' { TimesAssignToken {} }
@@ -182,6 +183,9 @@ Colon : ':' { mkJSAnnot $1 }
182
183
Semi :: { AST.JSAnnot }
183
184
Semi : ' ;' { mkJSAnnot $1 }
184
185
186
+ Arrow :: { AST.JSAnnot }
187
+ Arrow : ' =>' { mkJSAnnot $1 }
188
+
185
189
Spread :: { AST.JSAnnot }
186
190
Spread : ' ...' { mkJSAnnot $1 }
187
191
@@ -1106,8 +1110,15 @@ FunctionDeclaration : NamedFunctionExpression MaybeSemi { expressionToStatemen
1106
1110
-- FunctionExpression : See clause 13
1107
1111
-- function Identifieropt ( FormalParameterListopt ) { FunctionBody }
1108
1112
FunctionExpression :: { AST.JSExpression }
1109
- FunctionExpression : LambdaExpression { $1 {- ' FunctionExpression1' -} }
1110
- | NamedFunctionExpression { $1 {- ' FunctionExpression2' -} }
1113
+ FunctionExpression : ArrowFunctionExpression { $1 {- ' ArrowFunctionExpression' -} }
1114
+ | LambdaExpression { $1 {- ' FunctionExpression1' -} }
1115
+ | NamedFunctionExpression { $1 {- ' FunctionExpression2' -} }
1116
+
1117
+ ArrowFunctionExpression :: { AST.JSExpression }
1118
+ ArrowFunctionExpression : LParen FormalParameterList RParen Arrow Expression
1119
+ { AST.JSArrowExpression $1 $2 $3 $4 (Left $5) }
1120
+ | LParen FormalParameterList RParen Arrow FunctionBody
1121
+ { AST.JSArrowExpression $1 $2 $3 $4 (Right $5) }
1111
1122
1112
1123
NamedFunctionExpression :: { AST.JSExpression }
1113
1124
NamedFunctionExpression : Function Identifier LParen RParen FunctionBody
0 commit comments