From 80e37d0aed358803a47e7dbbdac5698ad6d5096b Mon Sep 17 00:00:00 2001 From: andretshurotshka Date: Mon, 8 Jul 2019 22:56:07 +0500 Subject: [PATCH] [parser] Add F# pipeline test snapshots --- ...-and-array-in-body-with-operator.tree.json | 159 ++++++++++++++++ .../arrow-and-array-in-body.tree.json | 159 ++++++++++++++++ .../arrow-and-assignment-in-body.tree.json | 111 +++++++++++ ...and-object-in-body-with-operator.tree.json | 176 ++++++++++++++++++ .../arrow-and-object-in-body.tree.json | 176 ++++++++++++++++++ .../arrow-at-head-indented.tree.json | 82 ++++++++ .../arrow-at-head.tree.json | 82 ++++++++ .../arrow-in-body-alt-parens.tree.json | 153 +++++++++++++++ ...-parens-indented-with-arg-parens.tree.json | 152 +++++++++++++++ ...arrow-in-body-no-parens-indented.tree.json | 152 +++++++++++++++ ...n-body-no-parens-with-arg-parens.tree.json | 152 +++++++++++++++ .../arrow-in-body-no-parens.tree.json | 152 +++++++++++++++ .../await-end.tree.json | 72 +++++++ .../fsharp_pipeline_operator/await.tree.json | 90 +++++++++ .../ban-await-f.tree.json | 90 +++++++++ .../fsharp_pipeline_operator/base.tree.json | 42 +++++ .../fsharp_pipeline_operator/chain.tree.json | 60 ++++++ 17 files changed, 2060 insertions(+) create mode 100644 src/parser/test/flow/fsharp_pipeline_operator/arrow-and-array-in-body-with-operator.tree.json create mode 100644 src/parser/test/flow/fsharp_pipeline_operator/arrow-and-array-in-body.tree.json create mode 100644 src/parser/test/flow/fsharp_pipeline_operator/arrow-and-assignment-in-body.tree.json create mode 100644 src/parser/test/flow/fsharp_pipeline_operator/arrow-and-object-in-body-with-operator.tree.json create mode 100644 src/parser/test/flow/fsharp_pipeline_operator/arrow-and-object-in-body.tree.json create mode 100644 src/parser/test/flow/fsharp_pipeline_operator/arrow-at-head-indented.tree.json create mode 100644 src/parser/test/flow/fsharp_pipeline_operator/arrow-at-head.tree.json create mode 100644 src/parser/test/flow/fsharp_pipeline_operator/arrow-in-body-alt-parens.tree.json create mode 100644 src/parser/test/flow/fsharp_pipeline_operator/arrow-in-body-no-parens-indented-with-arg-parens.tree.json create mode 100644 src/parser/test/flow/fsharp_pipeline_operator/arrow-in-body-no-parens-indented.tree.json create mode 100644 src/parser/test/flow/fsharp_pipeline_operator/arrow-in-body-no-parens-with-arg-parens.tree.json create mode 100644 src/parser/test/flow/fsharp_pipeline_operator/arrow-in-body-no-parens.tree.json create mode 100644 src/parser/test/flow/fsharp_pipeline_operator/await-end.tree.json create mode 100644 src/parser/test/flow/fsharp_pipeline_operator/await.tree.json create mode 100644 src/parser/test/flow/fsharp_pipeline_operator/ban-await-f.tree.json create mode 100644 src/parser/test/flow/fsharp_pipeline_operator/base.tree.json create mode 100644 src/parser/test/flow/fsharp_pipeline_operator/chain.tree.json diff --git a/src/parser/test/flow/fsharp_pipeline_operator/arrow-and-array-in-body-with-operator.tree.json b/src/parser/test/flow/fsharp_pipeline_operator/arrow-and-array-in-body-with-operator.tree.json new file mode 100644 index 00000000000..6624772f5f5 --- /dev/null +++ b/src/parser/test/flow/fsharp_pipeline_operator/arrow-and-array-in-body-with-operator.tree.json @@ -0,0 +1,159 @@ +{ + "errors":[ + { + "loc":{"source":null,"start":{"line":1,"column":7},"end":{"line":1,"column":9}}, + "message":"The F# pipeline operator plugin must be enabled in order to use the pipeline operator (`|>`). Pipeline operator is an active early-stage feature proposal which may change and is not enabled by default. To enable support in the parser, use the `esproposal_fsharp_pipeline_operator` option." + }, + { + "loc":{"source":null,"start":{"line":1,"column":22},"end":{"line":1,"column":24}}, + "message":"The F# pipeline operator plugin must be enabled in order to use the pipeline operator (`|>`). Pipeline operator is an active early-stage feature proposal which may change and is not enabled by default. To enable support in the parser, use the `esproposal_fsharp_pipeline_operator` option." + } + ], + "type":"Program", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":36}}, + "range":[0,36], + "body":[ + { + "type":"ExpressionStatement", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":36}}, + "range":[0,36], + "expression":{ + "type":"ArrowFunctionExpression", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":36}}, + "range":[0,36], + "id":null, + "params":[ + { + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":1}}, + "range":[0,1], + "name":"x", + "typeAnnotation":null, + "optional":false + } + ], + "body":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":1,"column":5},"end":{"line":1,"column":36}}, + "range":[5,36], + "operator":"|>", + "left":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":5},"end":{"line":1,"column":6}}, + "range":[5,6], + "name":"x", + "typeAnnotation":null, + "optional":false + }, + "right":{ + "type":"ArrayExpression", + "loc":{"source":null,"start":{"line":1,"column":10},"end":{"line":1,"column":36}}, + "range":[10,36], + "elements":[ + { + "type":"ArrowFunctionExpression", + "loc":{"source":null,"start":{"line":1,"column":11},"end":{"line":1,"column":35}}, + "range":[11,35], + "id":null, + "params":[ + { + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":11},"end":{"line":1,"column":12}}, + "range":[11,12], + "name":"y", + "typeAnnotation":null, + "optional":false + } + ], + "body":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":1,"column":16},"end":{"line":1,"column":35}}, + "range":[16,35], + "operator":"|>", + "left":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":1,"column":16},"end":{"line":1,"column":21}}, + "range":[16,21], + "operator":"+", + "left":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":16},"end":{"line":1,"column":17}}, + "range":[16,17], + "name":"y", + "typeAnnotation":null, + "optional":false + }, + "right":{ + "type":"Literal", + "loc":{"source":null,"start":{"line":1,"column":20},"end":{"line":1,"column":21}}, + "range":[20,21], + "value":1, + "raw":"1" + } + }, + "right":{ + "type":"ArrowFunctionExpression", + "loc":{"source":null,"start":{"line":1,"column":25},"end":{"line":1,"column":35}}, + "range":[25,35], + "id":null, + "params":[ + { + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":25},"end":{"line":1,"column":26}}, + "range":[25,26], + "name":"z", + "typeAnnotation":null, + "optional":false + } + ], + "body":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":1,"column":30},"end":{"line":1,"column":35}}, + "range":[30,35], + "operator":"*", + "left":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":30},"end":{"line":1,"column":31}}, + "range":[30,31], + "name":"z", + "typeAnnotation":null, + "optional":false + }, + "right":{ + "type":"Literal", + "loc":{"source":null,"start":{"line":1,"column":34},"end":{"line":1,"column":35}}, + "range":[34,35], + "value":2, + "raw":"2" + } + }, + "async":false, + "generator":false, + "predicate":null, + "expression":true, + "returnType":null, + "typeParameters":null + } + }, + "async":false, + "generator":false, + "predicate":null, + "expression":true, + "returnType":null, + "typeParameters":null + } + ] + } + }, + "async":false, + "generator":false, + "predicate":null, + "expression":true, + "returnType":null, + "typeParameters":null + }, + "directive":null + } + ], + "comments":[] +} diff --git a/src/parser/test/flow/fsharp_pipeline_operator/arrow-and-array-in-body.tree.json b/src/parser/test/flow/fsharp_pipeline_operator/arrow-and-array-in-body.tree.json new file mode 100644 index 00000000000..3f1158a503f --- /dev/null +++ b/src/parser/test/flow/fsharp_pipeline_operator/arrow-and-array-in-body.tree.json @@ -0,0 +1,159 @@ +{ + "errors":[ + { + "loc":{"source":null,"start":{"line":1,"column":7},"end":{"line":1,"column":9}}, + "message":"The F# pipeline operator plugin must be enabled in order to use the pipeline operator (`|>`). Pipeline operator is an active early-stage feature proposal which may change and is not enabled by default. To enable support in the parser, use the `esproposal_fsharp_pipeline_operator` option." + }, + { + "loc":{"source":null,"start":{"line":1,"column":23},"end":{"line":1,"column":25}}, + "message":"The F# pipeline operator plugin must be enabled in order to use the pipeline operator (`|>`). Pipeline operator is an active early-stage feature proposal which may change and is not enabled by default. To enable support in the parser, use the `esproposal_fsharp_pipeline_operator` option." + } + ], + "type":"Program", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":36}}, + "range":[0,36], + "body":[ + { + "type":"ExpressionStatement", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":36}}, + "range":[0,36], + "expression":{ + "type":"ArrowFunctionExpression", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":36}}, + "range":[0,36], + "id":null, + "params":[ + { + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":1}}, + "range":[0,1], + "name":"x", + "typeAnnotation":null, + "optional":false + } + ], + "body":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":1,"column":5},"end":{"line":1,"column":36}}, + "range":[5,36], + "operator":"|>", + "left":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":1,"column":5},"end":{"line":1,"column":22}}, + "range":[5,22], + "operator":"|>", + "left":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":5},"end":{"line":1,"column":6}}, + "range":[5,6], + "name":"x", + "typeAnnotation":null, + "optional":false + }, + "right":{ + "type":"ArrayExpression", + "loc":{"source":null,"start":{"line":1,"column":10},"end":{"line":1,"column":22}}, + "range":[10,22], + "elements":[ + { + "type":"ArrowFunctionExpression", + "loc":{"source":null,"start":{"line":1,"column":11},"end":{"line":1,"column":21}}, + "range":[11,21], + "id":null, + "params":[ + { + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":11},"end":{"line":1,"column":12}}, + "range":[11,12], + "name":"y", + "typeAnnotation":null, + "optional":false + } + ], + "body":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":1,"column":16},"end":{"line":1,"column":21}}, + "range":[16,21], + "operator":"+", + "left":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":16},"end":{"line":1,"column":17}}, + "range":[16,17], + "name":"y", + "typeAnnotation":null, + "optional":false + }, + "right":{ + "type":"Literal", + "loc":{"source":null,"start":{"line":1,"column":20},"end":{"line":1,"column":21}}, + "range":[20,21], + "value":1, + "raw":"1" + } + }, + "async":false, + "generator":false, + "predicate":null, + "expression":true, + "returnType":null, + "typeParameters":null + } + ] + } + }, + "right":{ + "type":"ArrowFunctionExpression", + "loc":{"source":null,"start":{"line":1,"column":26},"end":{"line":1,"column":36}}, + "range":[26,36], + "id":null, + "params":[ + { + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":26},"end":{"line":1,"column":27}}, + "range":[26,27], + "name":"z", + "typeAnnotation":null, + "optional":false + } + ], + "body":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":1,"column":31},"end":{"line":1,"column":36}}, + "range":[31,36], + "operator":"*", + "left":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":31},"end":{"line":1,"column":32}}, + "range":[31,32], + "name":"z", + "typeAnnotation":null, + "optional":false + }, + "right":{ + "type":"Literal", + "loc":{"source":null,"start":{"line":1,"column":35},"end":{"line":1,"column":36}}, + "range":[35,36], + "value":2, + "raw":"2" + } + }, + "async":false, + "generator":false, + "predicate":null, + "expression":true, + "returnType":null, + "typeParameters":null + } + }, + "async":false, + "generator":false, + "predicate":null, + "expression":true, + "returnType":null, + "typeParameters":null + }, + "directive":null + } + ], + "comments":[] +} diff --git a/src/parser/test/flow/fsharp_pipeline_operator/arrow-and-assignment-in-body.tree.json b/src/parser/test/flow/fsharp_pipeline_operator/arrow-and-assignment-in-body.tree.json new file mode 100644 index 00000000000..5917f460bfb --- /dev/null +++ b/src/parser/test/flow/fsharp_pipeline_operator/arrow-and-assignment-in-body.tree.json @@ -0,0 +1,111 @@ +{ + "errors":[ + { + "loc":{"source":null,"start":{"line":1,"column":7},"end":{"line":1,"column":9}}, + "message":"The F# pipeline operator plugin must be enabled in order to use the pipeline operator (`|>`). Pipeline operator is an active early-stage feature proposal which may change and is not enabled by default. To enable support in the parser, use the `esproposal_fsharp_pipeline_operator` option." + }, + { + "loc":{"source":null,"start":{"line":1,"column":20},"end":{"line":1,"column":22}}, + "message":"The F# pipeline operator plugin must be enabled in order to use the pipeline operator (`|>`). Pipeline operator is an active early-stage feature proposal which may change and is not enabled by default. To enable support in the parser, use the `esproposal_fsharp_pipeline_operator` option." + } + ], + "type":"Program", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":28}}, + "range":[0,28], + "body":[ + { + "type":"ExpressionStatement", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":28}}, + "range":[0,28], + "expression":{ + "type":"ArrowFunctionExpression", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":27}}, + "range":[0,27], + "id":null, + "params":[ + { + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":1}}, + "range":[0,1], + "name":"x", + "typeAnnotation":null, + "optional":false + } + ], + "body":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":1,"column":5},"end":{"line":1,"column":27}}, + "range":[5,27], + "operator":"|>", + "left":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":5},"end":{"line":1,"column":6}}, + "range":[5,6], + "name":"x", + "typeAnnotation":null, + "optional":false + }, + "right":{ + "type":"CallExpression", + "loc":{"source":null,"start":{"line":1,"column":10},"end":{"line":1,"column":27}}, + "range":[10,27], + "callee":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":10},"end":{"line":1,"column":13}}, + "range":[10,13], + "name":"foo", + "typeAnnotation":null, + "optional":false + }, + "typeArguments":null, + "arguments":[ + { + "type":"AssignmentExpression", + "loc":{"source":null,"start":{"line":1,"column":14},"end":{"line":1,"column":26}}, + "range":[14,26], + "operator":"=", + "left":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":14},"end":{"line":1,"column":15}}, + "range":[14,15], + "name":"x", + "typeAnnotation":null, + "optional":false + }, + "right":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":1,"column":18},"end":{"line":1,"column":26}}, + "range":[18,26], + "operator":"|>", + "left":{ + "type":"Literal", + "loc":{"source":null,"start":{"line":1,"column":18},"end":{"line":1,"column":19}}, + "range":[18,19], + "value":1, + "raw":"1" + }, + "right":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":23},"end":{"line":1,"column":26}}, + "range":[23,26], + "name":"foo", + "typeAnnotation":null, + "optional":false + } + } + } + ] + } + }, + "async":false, + "generator":false, + "predicate":null, + "expression":true, + "returnType":null, + "typeParameters":null + }, + "directive":null + } + ], + "comments":[] +} diff --git a/src/parser/test/flow/fsharp_pipeline_operator/arrow-and-object-in-body-with-operator.tree.json b/src/parser/test/flow/fsharp_pipeline_operator/arrow-and-object-in-body-with-operator.tree.json new file mode 100644 index 00000000000..5fedf4cecaa --- /dev/null +++ b/src/parser/test/flow/fsharp_pipeline_operator/arrow-and-object-in-body-with-operator.tree.json @@ -0,0 +1,176 @@ +{ + "errors":[ + { + "loc":{"source":null,"start":{"line":1,"column":7},"end":{"line":1,"column":9}}, + "message":"The F# pipeline operator plugin must be enabled in order to use the pipeline operator (`|>`). Pipeline operator is an active early-stage feature proposal which may change and is not enabled by default. To enable support in the parser, use the `esproposal_fsharp_pipeline_operator` option." + }, + { + "loc":{"source":null,"start":{"line":1,"column":31},"end":{"line":1,"column":33}}, + "message":"The F# pipeline operator plugin must be enabled in order to use the pipeline operator (`|>`). Pipeline operator is an active early-stage feature proposal which may change and is not enabled by default. To enable support in the parser, use the `esproposal_fsharp_pipeline_operator` option." + } + ], + "type":"Program", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":46}}, + "range":[0,46], + "body":[ + { + "type":"ExpressionStatement", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":46}}, + "range":[0,46], + "expression":{ + "type":"ArrowFunctionExpression", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":46}}, + "range":[0,46], + "id":null, + "params":[ + { + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":1}}, + "range":[0,1], + "name":"x", + "typeAnnotation":null, + "optional":false + } + ], + "body":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":1,"column":5},"end":{"line":1,"column":46}}, + "range":[5,46], + "operator":"|>", + "left":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":5},"end":{"line":1,"column":6}}, + "range":[5,6], + "name":"x", + "typeAnnotation":null, + "optional":false + }, + "right":{ + "type":"ObjectExpression", + "loc":{"source":null,"start":{"line":1,"column":10},"end":{"line":1,"column":46}}, + "range":[10,46], + "properties":[ + { + "type":"Property", + "loc":{"source":null,"start":{"line":1,"column":12},"end":{"line":1,"column":44}}, + "range":[12,44], + "key":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":12},"end":{"line":1,"column":18}}, + "range":[12,18], + "name":"method", + "typeAnnotation":null, + "optional":false + }, + "value":{ + "type":"ArrowFunctionExpression", + "loc":{"source":null,"start":{"line":1,"column":20},"end":{"line":1,"column":44}}, + "range":[20,44], + "id":null, + "params":[ + { + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":20},"end":{"line":1,"column":21}}, + "range":[20,21], + "name":"y", + "typeAnnotation":null, + "optional":false + } + ], + "body":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":1,"column":25},"end":{"line":1,"column":44}}, + "range":[25,44], + "operator":"|>", + "left":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":1,"column":25},"end":{"line":1,"column":30}}, + "range":[25,30], + "operator":"+", + "left":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":25},"end":{"line":1,"column":26}}, + "range":[25,26], + "name":"y", + "typeAnnotation":null, + "optional":false + }, + "right":{ + "type":"Literal", + "loc":{"source":null,"start":{"line":1,"column":29},"end":{"line":1,"column":30}}, + "range":[29,30], + "value":1, + "raw":"1" + } + }, + "right":{ + "type":"ArrowFunctionExpression", + "loc":{"source":null,"start":{"line":1,"column":34},"end":{"line":1,"column":44}}, + "range":[34,44], + "id":null, + "params":[ + { + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":34},"end":{"line":1,"column":35}}, + "range":[34,35], + "name":"z", + "typeAnnotation":null, + "optional":false + } + ], + "body":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":1,"column":39},"end":{"line":1,"column":44}}, + "range":[39,44], + "operator":"*", + "left":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":39},"end":{"line":1,"column":40}}, + "range":[39,40], + "name":"z", + "typeAnnotation":null, + "optional":false + }, + "right":{ + "type":"Literal", + "loc":{"source":null,"start":{"line":1,"column":43},"end":{"line":1,"column":44}}, + "range":[43,44], + "value":2, + "raw":"2" + } + }, + "async":false, + "generator":false, + "predicate":null, + "expression":true, + "returnType":null, + "typeParameters":null + } + }, + "async":false, + "generator":false, + "predicate":null, + "expression":true, + "returnType":null, + "typeParameters":null + }, + "kind":"init", + "method":false, + "shorthand":false, + "computed":false + } + ] + } + }, + "async":false, + "generator":false, + "predicate":null, + "expression":true, + "returnType":null, + "typeParameters":null + }, + "directive":null + } + ], + "comments":[] +} diff --git a/src/parser/test/flow/fsharp_pipeline_operator/arrow-and-object-in-body.tree.json b/src/parser/test/flow/fsharp_pipeline_operator/arrow-and-object-in-body.tree.json new file mode 100644 index 00000000000..5895843e1b1 --- /dev/null +++ b/src/parser/test/flow/fsharp_pipeline_operator/arrow-and-object-in-body.tree.json @@ -0,0 +1,176 @@ +{ + "errors":[ + { + "loc":{"source":null,"start":{"line":1,"column":7},"end":{"line":1,"column":9}}, + "message":"The F# pipeline operator plugin must be enabled in order to use the pipeline operator (`|>`). Pipeline operator is an active early-stage feature proposal which may change and is not enabled by default. To enable support in the parser, use the `esproposal_fsharp_pipeline_operator` option." + }, + { + "loc":{"source":null,"start":{"line":1,"column":33},"end":{"line":1,"column":35}}, + "message":"The F# pipeline operator plugin must be enabled in order to use the pipeline operator (`|>`). Pipeline operator is an active early-stage feature proposal which may change and is not enabled by default. To enable support in the parser, use the `esproposal_fsharp_pipeline_operator` option." + } + ], + "type":"Program", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":46}}, + "range":[0,46], + "body":[ + { + "type":"ExpressionStatement", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":46}}, + "range":[0,46], + "expression":{ + "type":"ArrowFunctionExpression", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":46}}, + "range":[0,46], + "id":null, + "params":[ + { + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":1}}, + "range":[0,1], + "name":"x", + "typeAnnotation":null, + "optional":false + } + ], + "body":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":1,"column":5},"end":{"line":1,"column":46}}, + "range":[5,46], + "operator":"|>", + "left":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":1,"column":5},"end":{"line":1,"column":32}}, + "range":[5,32], + "operator":"|>", + "left":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":5},"end":{"line":1,"column":6}}, + "range":[5,6], + "name":"x", + "typeAnnotation":null, + "optional":false + }, + "right":{ + "type":"ObjectExpression", + "loc":{"source":null,"start":{"line":1,"column":10},"end":{"line":1,"column":32}}, + "range":[10,32], + "properties":[ + { + "type":"Property", + "loc":{"source":null,"start":{"line":1,"column":12},"end":{"line":1,"column":30}}, + "range":[12,30], + "key":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":12},"end":{"line":1,"column":18}}, + "range":[12,18], + "name":"method", + "typeAnnotation":null, + "optional":false + }, + "value":{ + "type":"ArrowFunctionExpression", + "loc":{"source":null,"start":{"line":1,"column":20},"end":{"line":1,"column":30}}, + "range":[20,30], + "id":null, + "params":[ + { + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":20},"end":{"line":1,"column":21}}, + "range":[20,21], + "name":"y", + "typeAnnotation":null, + "optional":false + } + ], + "body":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":1,"column":25},"end":{"line":1,"column":30}}, + "range":[25,30], + "operator":"+", + "left":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":25},"end":{"line":1,"column":26}}, + "range":[25,26], + "name":"y", + "typeAnnotation":null, + "optional":false + }, + "right":{ + "type":"Literal", + "loc":{"source":null,"start":{"line":1,"column":29},"end":{"line":1,"column":30}}, + "range":[29,30], + "value":1, + "raw":"1" + } + }, + "async":false, + "generator":false, + "predicate":null, + "expression":true, + "returnType":null, + "typeParameters":null + }, + "kind":"init", + "method":false, + "shorthand":false, + "computed":false + } + ] + } + }, + "right":{ + "type":"ArrowFunctionExpression", + "loc":{"source":null,"start":{"line":1,"column":36},"end":{"line":1,"column":46}}, + "range":[36,46], + "id":null, + "params":[ + { + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":36},"end":{"line":1,"column":37}}, + "range":[36,37], + "name":"z", + "typeAnnotation":null, + "optional":false + } + ], + "body":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":1,"column":41},"end":{"line":1,"column":46}}, + "range":[41,46], + "operator":"*", + "left":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":41},"end":{"line":1,"column":42}}, + "range":[41,42], + "name":"z", + "typeAnnotation":null, + "optional":false + }, + "right":{ + "type":"Literal", + "loc":{"source":null,"start":{"line":1,"column":45},"end":{"line":1,"column":46}}, + "range":[45,46], + "value":2, + "raw":"2" + } + }, + "async":false, + "generator":false, + "predicate":null, + "expression":true, + "returnType":null, + "typeParameters":null + } + }, + "async":false, + "generator":false, + "predicate":null, + "expression":true, + "returnType":null, + "typeParameters":null + }, + "directive":null + } + ], + "comments":[] +} diff --git a/src/parser/test/flow/fsharp_pipeline_operator/arrow-at-head-indented.tree.json b/src/parser/test/flow/fsharp_pipeline_operator/arrow-at-head-indented.tree.json new file mode 100644 index 00000000000..567f15f8d54 --- /dev/null +++ b/src/parser/test/flow/fsharp_pipeline_operator/arrow-at-head-indented.tree.json @@ -0,0 +1,82 @@ +{ + "errors":[ + { + "loc":{"source":null,"start":{"line":1,"column":7},"end":{"line":1,"column":9}}, + "message":"The F# pipeline operator plugin must be enabled in order to use the pipeline operator (`|>`). Pipeline operator is an active early-stage feature proposal which may change and is not enabled by default. To enable support in the parser, use the `esproposal_fsharp_pipeline_operator` option." + }, + { + "loc":{"source":null,"start":{"line":1,"column":14},"end":{"line":1,"column":16}}, + "message":"The F# pipeline operator plugin must be enabled in order to use the pipeline operator (`|>`). Pipeline operator is an active early-stage feature proposal which may change and is not enabled by default. To enable support in the parser, use the `esproposal_fsharp_pipeline_operator` option." + } + ], + "type":"Program", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":23}}, + "range":[0,23], + "body":[ + { + "type":"ExpressionStatement", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":23}}, + "range":[0,23], + "expression":{ + "type":"ArrowFunctionExpression", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":23}}, + "range":[0,23], + "id":null, + "params":[ + { + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":1}}, + "range":[0,1], + "name":"x", + "typeAnnotation":null, + "optional":false + } + ], + "body":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":1,"column":5},"end":{"line":1,"column":23}}, + "range":[5,23], + "operator":"|>", + "left":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":1,"column":5},"end":{"line":1,"column":13}}, + "range":[5,13], + "operator":"|>", + "left":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":5},"end":{"line":1,"column":6}}, + "range":[5,6], + "name":"x", + "typeAnnotation":null, + "optional":false + }, + "right":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":10},"end":{"line":1,"column":13}}, + "range":[10,13], + "name":"inc", + "typeAnnotation":null, + "optional":false + } + }, + "right":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":17},"end":{"line":1,"column":23}}, + "range":[17,23], + "name":"double", + "typeAnnotation":null, + "optional":false + } + }, + "async":false, + "generator":false, + "predicate":null, + "expression":true, + "returnType":null, + "typeParameters":null + }, + "directive":null + } + ], + "comments":[] +} diff --git a/src/parser/test/flow/fsharp_pipeline_operator/arrow-at-head.tree.json b/src/parser/test/flow/fsharp_pipeline_operator/arrow-at-head.tree.json new file mode 100644 index 00000000000..567f15f8d54 --- /dev/null +++ b/src/parser/test/flow/fsharp_pipeline_operator/arrow-at-head.tree.json @@ -0,0 +1,82 @@ +{ + "errors":[ + { + "loc":{"source":null,"start":{"line":1,"column":7},"end":{"line":1,"column":9}}, + "message":"The F# pipeline operator plugin must be enabled in order to use the pipeline operator (`|>`). Pipeline operator is an active early-stage feature proposal which may change and is not enabled by default. To enable support in the parser, use the `esproposal_fsharp_pipeline_operator` option." + }, + { + "loc":{"source":null,"start":{"line":1,"column":14},"end":{"line":1,"column":16}}, + "message":"The F# pipeline operator plugin must be enabled in order to use the pipeline operator (`|>`). Pipeline operator is an active early-stage feature proposal which may change and is not enabled by default. To enable support in the parser, use the `esproposal_fsharp_pipeline_operator` option." + } + ], + "type":"Program", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":23}}, + "range":[0,23], + "body":[ + { + "type":"ExpressionStatement", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":23}}, + "range":[0,23], + "expression":{ + "type":"ArrowFunctionExpression", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":23}}, + "range":[0,23], + "id":null, + "params":[ + { + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":1}}, + "range":[0,1], + "name":"x", + "typeAnnotation":null, + "optional":false + } + ], + "body":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":1,"column":5},"end":{"line":1,"column":23}}, + "range":[5,23], + "operator":"|>", + "left":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":1,"column":5},"end":{"line":1,"column":13}}, + "range":[5,13], + "operator":"|>", + "left":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":5},"end":{"line":1,"column":6}}, + "range":[5,6], + "name":"x", + "typeAnnotation":null, + "optional":false + }, + "right":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":10},"end":{"line":1,"column":13}}, + "range":[10,13], + "name":"inc", + "typeAnnotation":null, + "optional":false + } + }, + "right":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":17},"end":{"line":1,"column":23}}, + "range":[17,23], + "name":"double", + "typeAnnotation":null, + "optional":false + } + }, + "async":false, + "generator":false, + "predicate":null, + "expression":true, + "returnType":null, + "typeParameters":null + }, + "directive":null + } + ], + "comments":[] +} diff --git a/src/parser/test/flow/fsharp_pipeline_operator/arrow-in-body-alt-parens.tree.json b/src/parser/test/flow/fsharp_pipeline_operator/arrow-in-body-alt-parens.tree.json new file mode 100644 index 00000000000..b2dc6afa80d --- /dev/null +++ b/src/parser/test/flow/fsharp_pipeline_operator/arrow-in-body-alt-parens.tree.json @@ -0,0 +1,153 @@ +{ + "errors":[ + { + "loc":{"source":null,"start":{"line":1,"column":7},"end":{"line":1,"column":9}}, + "message":"The F# pipeline operator plugin must be enabled in order to use the pipeline operator (`|>`). Pipeline operator is an active early-stage feature proposal which may change and is not enabled by default. To enable support in the parser, use the `esproposal_fsharp_pipeline_operator` option." + }, + { + "loc":{"source":null,"start":{"line":1,"column":22},"end":{"line":1,"column":24}}, + "message":"The F# pipeline operator plugin must be enabled in order to use the pipeline operator (`|>`). Pipeline operator is an active early-stage feature proposal which may change and is not enabled by default. To enable support in the parser, use the `esproposal_fsharp_pipeline_operator` option." + } + ], + "type":"Program", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":38}}, + "range":[0,38], + "body":[ + { + "type":"ExpressionStatement", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":38}}, + "range":[0,38], + "expression":{ + "type":"ArrowFunctionExpression", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":38}}, + "range":[0,38], + "id":null, + "params":[ + { + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":1}}, + "range":[0,1], + "name":"x", + "typeAnnotation":null, + "optional":false + } + ], + "body":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":1,"column":5},"end":{"line":1,"column":38}}, + "range":[5,38], + "operator":"|>", + "left":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":5},"end":{"line":1,"column":6}}, + "range":[5,6], + "name":"x", + "typeAnnotation":null, + "optional":false + }, + "right":{ + "type":"ArrowFunctionExpression", + "loc":{"source":null,"start":{"line":1,"column":11},"end":{"line":1,"column":37}}, + "range":[11,37], + "id":null, + "params":[ + { + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":11},"end":{"line":1,"column":12}}, + "range":[11,12], + "name":"y", + "typeAnnotation":null, + "optional":false + } + ], + "body":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":1,"column":16},"end":{"line":1,"column":37}}, + "range":[16,37], + "operator":"|>", + "left":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":1,"column":16},"end":{"line":1,"column":21}}, + "range":[16,21], + "operator":"+", + "left":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":16},"end":{"line":1,"column":17}}, + "range":[16,17], + "name":"y", + "typeAnnotation":null, + "optional":false + }, + "right":{ + "type":"Literal", + "loc":{"source":null,"start":{"line":1,"column":20},"end":{"line":1,"column":21}}, + "range":[20,21], + "value":3, + "raw":"3" + } + }, + "right":{ + "type":"ArrowFunctionExpression", + "loc":{"source":null,"start":{"line":1,"column":26},"end":{"line":1,"column":36}}, + "range":[26,36], + "id":null, + "params":[ + { + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":26},"end":{"line":1,"column":27}}, + "range":[26,27], + "name":"b", + "typeAnnotation":null, + "optional":false + } + ], + "body":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":1,"column":31},"end":{"line":1,"column":36}}, + "range":[31,36], + "operator":"+", + "left":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":31},"end":{"line":1,"column":32}}, + "range":[31,32], + "name":"y", + "typeAnnotation":null, + "optional":false + }, + "right":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":35},"end":{"line":1,"column":36}}, + "range":[35,36], + "name":"b", + "typeAnnotation":null, + "optional":false + } + }, + "async":false, + "generator":false, + "predicate":null, + "expression":true, + "returnType":null, + "typeParameters":null + } + }, + "async":false, + "generator":false, + "predicate":null, + "expression":true, + "returnType":null, + "typeParameters":null + } + }, + "async":false, + "generator":false, + "predicate":null, + "expression":true, + "returnType":null, + "typeParameters":null + }, + "directive":null + } + ], + "comments":[] +} diff --git a/src/parser/test/flow/fsharp_pipeline_operator/arrow-in-body-no-parens-indented-with-arg-parens.tree.json b/src/parser/test/flow/fsharp_pipeline_operator/arrow-in-body-no-parens-indented-with-arg-parens.tree.json new file mode 100644 index 00000000000..313a5b9838e --- /dev/null +++ b/src/parser/test/flow/fsharp_pipeline_operator/arrow-in-body-no-parens-indented-with-arg-parens.tree.json @@ -0,0 +1,152 @@ +{ + "errors":[ + { + "loc":{"source":null,"start":{"line":2,"column":2},"end":{"line":2,"column":4}}, + "message":"The F# pipeline operator plugin must be enabled in order to use the pipeline operator (`|>`). Pipeline operator is an active early-stage feature proposal which may change and is not enabled by default. To enable support in the parser, use the `esproposal_fsharp_pipeline_operator` option." + }, + { + "loc":{"source":null,"start":{"line":3,"column":2},"end":{"line":3,"column":4}}, + "message":"The F# pipeline operator plugin must be enabled in order to use the pipeline operator (`|>`). Pipeline operator is an active early-stage feature proposal which may change and is not enabled by default. To enable support in the parser, use the `esproposal_fsharp_pipeline_operator` option." + } + ], + "type":"Program", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":3,"column":17}}, + "range":[0,44], + "body":[ + { + "type":"ExpressionStatement", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":3,"column":17}}, + "range":[0,44], + "expression":{ + "type":"ArrowFunctionExpression", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":3,"column":17}}, + "range":[0,44], + "id":null, + "params":[ + { + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":1},"end":{"line":1,"column":2}}, + "range":[1,2], + "name":"x", + "typeAnnotation":null, + "optional":false + } + ], + "body":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":1,"column":7},"end":{"line":3,"column":17}}, + "range":[7,44], + "operator":"|>", + "left":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":7},"end":{"line":1,"column":8}}, + "range":[7,8], + "name":"x", + "typeAnnotation":null, + "optional":false + }, + "right":{ + "type":"ArrowFunctionExpression", + "loc":{"source":null,"start":{"line":2,"column":5},"end":{"line":3,"column":17}}, + "range":[14,44], + "id":null, + "params":[ + { + "type":"Identifier", + "loc":{"source":null,"start":{"line":2,"column":6},"end":{"line":2,"column":7}}, + "range":[15,16], + "name":"y", + "typeAnnotation":null, + "optional":false + } + ], + "body":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":2,"column":12},"end":{"line":3,"column":17}}, + "range":[21,44], + "operator":"|>", + "left":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":2,"column":12},"end":{"line":2,"column":17}}, + "range":[21,26], + "operator":"+", + "left":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":2,"column":12},"end":{"line":2,"column":13}}, + "range":[21,22], + "name":"y", + "typeAnnotation":null, + "optional":false + }, + "right":{ + "type":"Literal", + "loc":{"source":null,"start":{"line":2,"column":16},"end":{"line":2,"column":17}}, + "range":[25,26], + "value":1, + "raw":"1" + } + }, + "right":{ + "type":"ArrowFunctionExpression", + "loc":{"source":null,"start":{"line":3,"column":5},"end":{"line":3,"column":17}}, + "range":[32,44], + "id":null, + "params":[ + { + "type":"Identifier", + "loc":{"source":null,"start":{"line":3,"column":6},"end":{"line":3,"column":7}}, + "range":[33,34], + "name":"z", + "typeAnnotation":null, + "optional":false + } + ], + "body":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":3,"column":12},"end":{"line":3,"column":17}}, + "range":[39,44], + "operator":"*", + "left":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":3,"column":12},"end":{"line":3,"column":13}}, + "range":[39,40], + "name":"z", + "typeAnnotation":null, + "optional":false + }, + "right":{ + "type":"Literal", + "loc":{"source":null,"start":{"line":3,"column":16},"end":{"line":3,"column":17}}, + "range":[43,44], + "value":2, + "raw":"2" + } + }, + "async":false, + "generator":false, + "predicate":null, + "expression":true, + "returnType":null, + "typeParameters":null + } + }, + "async":false, + "generator":false, + "predicate":null, + "expression":true, + "returnType":null, + "typeParameters":null + } + }, + "async":false, + "generator":false, + "predicate":null, + "expression":true, + "returnType":null, + "typeParameters":null + }, + "directive":null + } + ], + "comments":[] +} diff --git a/src/parser/test/flow/fsharp_pipeline_operator/arrow-in-body-no-parens-indented.tree.json b/src/parser/test/flow/fsharp_pipeline_operator/arrow-in-body-no-parens-indented.tree.json new file mode 100644 index 00000000000..506e8a451c3 --- /dev/null +++ b/src/parser/test/flow/fsharp_pipeline_operator/arrow-in-body-no-parens-indented.tree.json @@ -0,0 +1,152 @@ +{ + "errors":[ + { + "loc":{"source":null,"start":{"line":2,"column":2},"end":{"line":2,"column":4}}, + "message":"The F# pipeline operator plugin must be enabled in order to use the pipeline operator (`|>`). Pipeline operator is an active early-stage feature proposal which may change and is not enabled by default. To enable support in the parser, use the `esproposal_fsharp_pipeline_operator` option." + }, + { + "loc":{"source":null,"start":{"line":3,"column":2},"end":{"line":3,"column":4}}, + "message":"The F# pipeline operator plugin must be enabled in order to use the pipeline operator (`|>`). Pipeline operator is an active early-stage feature proposal which may change and is not enabled by default. To enable support in the parser, use the `esproposal_fsharp_pipeline_operator` option." + } + ], + "type":"Program", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":3,"column":16}}, + "range":[0,39], + "body":[ + { + "type":"ExpressionStatement", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":3,"column":16}}, + "range":[0,39], + "expression":{ + "type":"ArrowFunctionExpression", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":3,"column":15}}, + "range":[0,38], + "id":null, + "params":[ + { + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":1}}, + "range":[0,1], + "name":"x", + "typeAnnotation":null, + "optional":false + } + ], + "body":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":1,"column":5},"end":{"line":3,"column":15}}, + "range":[5,38], + "operator":"|>", + "left":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":5},"end":{"line":1,"column":6}}, + "range":[5,6], + "name":"x", + "typeAnnotation":null, + "optional":false + }, + "right":{ + "type":"ArrowFunctionExpression", + "loc":{"source":null,"start":{"line":2,"column":5},"end":{"line":3,"column":15}}, + "range":[12,38], + "id":null, + "params":[ + { + "type":"Identifier", + "loc":{"source":null,"start":{"line":2,"column":5},"end":{"line":2,"column":6}}, + "range":[12,13], + "name":"y", + "typeAnnotation":null, + "optional":false + } + ], + "body":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":2,"column":10},"end":{"line":3,"column":15}}, + "range":[17,38], + "operator":"|>", + "left":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":2,"column":10},"end":{"line":2,"column":15}}, + "range":[17,22], + "operator":"+", + "left":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":2,"column":10},"end":{"line":2,"column":11}}, + "range":[17,18], + "name":"y", + "typeAnnotation":null, + "optional":false + }, + "right":{ + "type":"Literal", + "loc":{"source":null,"start":{"line":2,"column":14},"end":{"line":2,"column":15}}, + "range":[21,22], + "value":1, + "raw":"1" + } + }, + "right":{ + "type":"ArrowFunctionExpression", + "loc":{"source":null,"start":{"line":3,"column":5},"end":{"line":3,"column":15}}, + "range":[28,38], + "id":null, + "params":[ + { + "type":"Identifier", + "loc":{"source":null,"start":{"line":3,"column":5},"end":{"line":3,"column":6}}, + "range":[28,29], + "name":"z", + "typeAnnotation":null, + "optional":false + } + ], + "body":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":3,"column":10},"end":{"line":3,"column":15}}, + "range":[33,38], + "operator":"*", + "left":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":3,"column":10},"end":{"line":3,"column":11}}, + "range":[33,34], + "name":"z", + "typeAnnotation":null, + "optional":false + }, + "right":{ + "type":"Literal", + "loc":{"source":null,"start":{"line":3,"column":14},"end":{"line":3,"column":15}}, + "range":[37,38], + "value":2, + "raw":"2" + } + }, + "async":false, + "generator":false, + "predicate":null, + "expression":true, + "returnType":null, + "typeParameters":null + } + }, + "async":false, + "generator":false, + "predicate":null, + "expression":true, + "returnType":null, + "typeParameters":null + } + }, + "async":false, + "generator":false, + "predicate":null, + "expression":true, + "returnType":null, + "typeParameters":null + }, + "directive":null + } + ], + "comments":[] +} diff --git a/src/parser/test/flow/fsharp_pipeline_operator/arrow-in-body-no-parens-with-arg-parens.tree.json b/src/parser/test/flow/fsharp_pipeline_operator/arrow-in-body-no-parens-with-arg-parens.tree.json new file mode 100644 index 00000000000..daeb4d1c048 --- /dev/null +++ b/src/parser/test/flow/fsharp_pipeline_operator/arrow-in-body-no-parens-with-arg-parens.tree.json @@ -0,0 +1,152 @@ +{ + "errors":[ + { + "loc":{"source":null,"start":{"line":1,"column":9},"end":{"line":1,"column":11}}, + "message":"The F# pipeline operator plugin must be enabled in order to use the pipeline operator (`|>`). Pipeline operator is an active early-stage feature proposal which may change and is not enabled by default. To enable support in the parser, use the `esproposal_fsharp_pipeline_operator` option." + }, + { + "loc":{"source":null,"start":{"line":1,"column":25},"end":{"line":1,"column":27}}, + "message":"The F# pipeline operator plugin must be enabled in order to use the pipeline operator (`|>`). Pipeline operator is an active early-stage feature proposal which may change and is not enabled by default. To enable support in the parser, use the `esproposal_fsharp_pipeline_operator` option." + } + ], + "type":"Program", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":41}}, + "range":[0,41], + "body":[ + { + "type":"ExpressionStatement", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":41}}, + "range":[0,41], + "expression":{ + "type":"ArrowFunctionExpression", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":40}}, + "range":[0,40], + "id":null, + "params":[ + { + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":1},"end":{"line":1,"column":2}}, + "range":[1,2], + "name":"x", + "typeAnnotation":null, + "optional":false + } + ], + "body":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":1,"column":7},"end":{"line":1,"column":40}}, + "range":[7,40], + "operator":"|>", + "left":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":7},"end":{"line":1,"column":8}}, + "range":[7,8], + "name":"x", + "typeAnnotation":null, + "optional":false + }, + "right":{ + "type":"ArrowFunctionExpression", + "loc":{"source":null,"start":{"line":1,"column":12},"end":{"line":1,"column":40}}, + "range":[12,40], + "id":null, + "params":[ + { + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":13},"end":{"line":1,"column":14}}, + "range":[13,14], + "name":"y", + "typeAnnotation":null, + "optional":false + } + ], + "body":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":1,"column":19},"end":{"line":1,"column":40}}, + "range":[19,40], + "operator":"|>", + "left":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":1,"column":19},"end":{"line":1,"column":24}}, + "range":[19,24], + "operator":"+", + "left":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":19},"end":{"line":1,"column":20}}, + "range":[19,20], + "name":"y", + "typeAnnotation":null, + "optional":false + }, + "right":{ + "type":"Literal", + "loc":{"source":null,"start":{"line":1,"column":23},"end":{"line":1,"column":24}}, + "range":[23,24], + "value":1, + "raw":"1" + } + }, + "right":{ + "type":"ArrowFunctionExpression", + "loc":{"source":null,"start":{"line":1,"column":28},"end":{"line":1,"column":40}}, + "range":[28,40], + "id":null, + "params":[ + { + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":29},"end":{"line":1,"column":30}}, + "range":[29,30], + "name":"z", + "typeAnnotation":null, + "optional":false + } + ], + "body":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":1,"column":35},"end":{"line":1,"column":40}}, + "range":[35,40], + "operator":"*", + "left":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":35},"end":{"line":1,"column":36}}, + "range":[35,36], + "name":"z", + "typeAnnotation":null, + "optional":false + }, + "right":{ + "type":"Literal", + "loc":{"source":null,"start":{"line":1,"column":39},"end":{"line":1,"column":40}}, + "range":[39,40], + "value":2, + "raw":"2" + } + }, + "async":false, + "generator":false, + "predicate":null, + "expression":true, + "returnType":null, + "typeParameters":null + } + }, + "async":false, + "generator":false, + "predicate":null, + "expression":true, + "returnType":null, + "typeParameters":null + } + }, + "async":false, + "generator":false, + "predicate":null, + "expression":true, + "returnType":null, + "typeParameters":null + }, + "directive":null + } + ], + "comments":[] +} diff --git a/src/parser/test/flow/fsharp_pipeline_operator/arrow-in-body-no-parens.tree.json b/src/parser/test/flow/fsharp_pipeline_operator/arrow-in-body-no-parens.tree.json new file mode 100644 index 00000000000..09dd900dde4 --- /dev/null +++ b/src/parser/test/flow/fsharp_pipeline_operator/arrow-in-body-no-parens.tree.json @@ -0,0 +1,152 @@ +{ + "errors":[ + { + "loc":{"source":null,"start":{"line":1,"column":7},"end":{"line":1,"column":9}}, + "message":"The F# pipeline operator plugin must be enabled in order to use the pipeline operator (`|>`). Pipeline operator is an active early-stage feature proposal which may change and is not enabled by default. To enable support in the parser, use the `esproposal_fsharp_pipeline_operator` option." + }, + { + "loc":{"source":null,"start":{"line":1,"column":21},"end":{"line":1,"column":23}}, + "message":"The F# pipeline operator plugin must be enabled in order to use the pipeline operator (`|>`). Pipeline operator is an active early-stage feature proposal which may change and is not enabled by default. To enable support in the parser, use the `esproposal_fsharp_pipeline_operator` option." + } + ], + "type":"Program", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":35}}, + "range":[0,35], + "body":[ + { + "type":"ExpressionStatement", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":35}}, + "range":[0,35], + "expression":{ + "type":"ArrowFunctionExpression", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":34}}, + "range":[0,34], + "id":null, + "params":[ + { + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":1}}, + "range":[0,1], + "name":"x", + "typeAnnotation":null, + "optional":false + } + ], + "body":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":1,"column":5},"end":{"line":1,"column":34}}, + "range":[5,34], + "operator":"|>", + "left":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":5},"end":{"line":1,"column":6}}, + "range":[5,6], + "name":"x", + "typeAnnotation":null, + "optional":false + }, + "right":{ + "type":"ArrowFunctionExpression", + "loc":{"source":null,"start":{"line":1,"column":10},"end":{"line":1,"column":34}}, + "range":[10,34], + "id":null, + "params":[ + { + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":10},"end":{"line":1,"column":11}}, + "range":[10,11], + "name":"y", + "typeAnnotation":null, + "optional":false + } + ], + "body":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":1,"column":15},"end":{"line":1,"column":34}}, + "range":[15,34], + "operator":"|>", + "left":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":1,"column":15},"end":{"line":1,"column":20}}, + "range":[15,20], + "operator":"+", + "left":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":15},"end":{"line":1,"column":16}}, + "range":[15,16], + "name":"y", + "typeAnnotation":null, + "optional":false + }, + "right":{ + "type":"Literal", + "loc":{"source":null,"start":{"line":1,"column":19},"end":{"line":1,"column":20}}, + "range":[19,20], + "value":1, + "raw":"1" + } + }, + "right":{ + "type":"ArrowFunctionExpression", + "loc":{"source":null,"start":{"line":1,"column":24},"end":{"line":1,"column":34}}, + "range":[24,34], + "id":null, + "params":[ + { + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":24},"end":{"line":1,"column":25}}, + "range":[24,25], + "name":"z", + "typeAnnotation":null, + "optional":false + } + ], + "body":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":1,"column":29},"end":{"line":1,"column":34}}, + "range":[29,34], + "operator":"*", + "left":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":29},"end":{"line":1,"column":30}}, + "range":[29,30], + "name":"z", + "typeAnnotation":null, + "optional":false + }, + "right":{ + "type":"Literal", + "loc":{"source":null,"start":{"line":1,"column":33},"end":{"line":1,"column":34}}, + "range":[33,34], + "value":2, + "raw":"2" + } + }, + "async":false, + "generator":false, + "predicate":null, + "expression":true, + "returnType":null, + "typeParameters":null + } + }, + "async":false, + "generator":false, + "predicate":null, + "expression":true, + "returnType":null, + "typeParameters":null + } + }, + "async":false, + "generator":false, + "predicate":null, + "expression":true, + "returnType":null, + "typeParameters":null + }, + "directive":null + } + ], + "comments":[] +} diff --git a/src/parser/test/flow/fsharp_pipeline_operator/await-end.tree.json b/src/parser/test/flow/fsharp_pipeline_operator/await-end.tree.json new file mode 100644 index 00000000000..fb6ce9ffcc3 --- /dev/null +++ b/src/parser/test/flow/fsharp_pipeline_operator/await-end.tree.json @@ -0,0 +1,72 @@ +{ + "errors":[ + { + "loc":{"source":null,"start":{"line":2,"column":11},"end":{"line":2,"column":13}}, + "message":"The F# pipeline operator plugin must be enabled in order to use the pipeline operator (`|>`). Pipeline operator is an active early-stage feature proposal which may change and is not enabled by default. To enable support in the parser, use the `esproposal_fsharp_pipeline_operator` option." + } + ], + "type":"Program", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, + "range":[0,47], + "body":[ + { + "type":"FunctionDeclaration", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, + "range":[0,47], + "id":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":15},"end":{"line":1,"column":19}}, + "range":[15,19], + "name":"test", + "typeAnnotation":null, + "optional":false + }, + "params":[], + "body":{ + "type":"BlockStatement", + "loc":{"source":null,"start":{"line":1,"column":23},"end":{"line":3,"column":1}}, + "range":[23,47], + "body":[ + { + "type":"ReturnStatement", + "loc":{"source":null,"start":{"line":2,"column":2},"end":{"line":2,"column":20}}, + "range":[27,45], + "argument":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":2,"column":9},"end":{"line":2,"column":19}}, + "range":[34,44], + "operator":"|>", + "left":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":2,"column":9},"end":{"line":2,"column":10}}, + "range":[34,35], + "name":"x", + "typeAnnotation":null, + "optional":false + }, + "right":{ + "type":"AwaitExpression", + "loc":{"source":null,"start":{"line":2,"column":14},"end":{"line":2,"column":19}}, + "range":[39,44], + "argument":{ + "type":"Literal", + "loc":{"source":null,"start":{"line":2,"column":19},"end":{"line":2,"column":20}}, + "range":[44,45], + "value":null, + "raw":"null" + } + } + } + } + ] + }, + "async":true, + "generator":false, + "predicate":null, + "expression":false, + "returnType":null, + "typeParameters":null + } + ], + "comments":[] +} diff --git a/src/parser/test/flow/fsharp_pipeline_operator/await.tree.json b/src/parser/test/flow/fsharp_pipeline_operator/await.tree.json new file mode 100644 index 00000000000..15f2607f465 --- /dev/null +++ b/src/parser/test/flow/fsharp_pipeline_operator/await.tree.json @@ -0,0 +1,90 @@ +{ + "errors":[ + { + "loc":{"source":null,"start":{"line":2,"column":11},"end":{"line":2,"column":13}}, + "message":"The F# pipeline operator plugin must be enabled in order to use the pipeline operator (`|>`). Pipeline operator is an active early-stage feature proposal which may change and is not enabled by default. To enable support in the parser, use the `esproposal_fsharp_pipeline_operator` option." + }, + { + "loc":{"source":null,"start":{"line":2,"column":20},"end":{"line":2,"column":22}}, + "message":"The F# pipeline operator plugin must be enabled in order to use the pipeline operator (`|>`). Pipeline operator is an active early-stage feature proposal which may change and is not enabled by default. To enable support in the parser, use the `esproposal_fsharp_pipeline_operator` option." + } + ], + "type":"Program", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, + "range":[0,52], + "body":[ + { + "type":"FunctionDeclaration", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, + "range":[0,52], + "id":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":15},"end":{"line":1,"column":19}}, + "range":[15,19], + "name":"test", + "typeAnnotation":null, + "optional":false + }, + "params":[], + "body":{ + "type":"BlockStatement", + "loc":{"source":null,"start":{"line":1,"column":23},"end":{"line":3,"column":1}}, + "range":[23,52], + "body":[ + { + "type":"ReturnStatement", + "loc":{"source":null,"start":{"line":2,"column":2},"end":{"line":2,"column":25}}, + "range":[27,50], + "argument":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":2,"column":9},"end":{"line":2,"column":24}}, + "range":[34,49], + "operator":"|>", + "left":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":2,"column":9},"end":{"line":2,"column":19}}, + "range":[34,44], + "operator":"|>", + "left":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":2,"column":9},"end":{"line":2,"column":10}}, + "range":[34,35], + "name":"x", + "typeAnnotation":null, + "optional":false + }, + "right":{ + "type":"AwaitExpression", + "loc":{"source":null,"start":{"line":2,"column":14},"end":{"line":2,"column":19}}, + "range":[39,44], + "argument":{ + "type":"Literal", + "loc":{"source":null,"start":{"line":2,"column":20},"end":{"line":2,"column":22}}, + "range":[45,47], + "value":null, + "raw":"null" + } + } + }, + "right":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":2,"column":23},"end":{"line":2,"column":24}}, + "range":[48,49], + "name":"f", + "typeAnnotation":null, + "optional":false + } + } + } + ] + }, + "async":true, + "generator":false, + "predicate":null, + "expression":false, + "returnType":null, + "typeParameters":null + } + ], + "comments":[] +} diff --git a/src/parser/test/flow/fsharp_pipeline_operator/ban-await-f.tree.json b/src/parser/test/flow/fsharp_pipeline_operator/ban-await-f.tree.json new file mode 100644 index 00000000000..beb13566b5d --- /dev/null +++ b/src/parser/test/flow/fsharp_pipeline_operator/ban-await-f.tree.json @@ -0,0 +1,90 @@ +{ + "errors":[ + { + "loc":{"source":null,"start":{"line":2,"column":11},"end":{"line":2,"column":13}}, + "message":"The F# pipeline operator plugin must be enabled in order to use the pipeline operator (`|>`). Pipeline operator is an active early-stage feature proposal which may change and is not enabled by default. To enable support in the parser, use the `esproposal_fsharp_pipeline_operator` option." + }, + { + "loc":{"source":null,"start":{"line":2,"column":20},"end":{"line":2,"column":21}}, + "message":"Unexpected identifier" + } + ], + "type":"Program", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, + "range":[0,49], + "body":[ + { + "type":"FunctionDeclaration", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, + "range":[0,49], + "id":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":15},"end":{"line":1,"column":19}}, + "range":[15,19], + "name":"test", + "typeAnnotation":null, + "optional":false + }, + "params":[], + "body":{ + "type":"BlockStatement", + "loc":{"source":null,"start":{"line":1,"column":23},"end":{"line":3,"column":1}}, + "range":[23,49], + "body":[ + { + "type":"ReturnStatement", + "loc":{"source":null,"start":{"line":2,"column":2},"end":{"line":2,"column":19}}, + "range":[27,44], + "argument":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":2,"column":9},"end":{"line":2,"column":19}}, + "range":[34,44], + "operator":"|>", + "left":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":2,"column":9},"end":{"line":2,"column":10}}, + "range":[34,35], + "name":"x", + "typeAnnotation":null, + "optional":false + }, + "right":{ + "type":"AwaitExpression", + "loc":{"source":null,"start":{"line":2,"column":14},"end":{"line":2,"column":19}}, + "range":[39,44], + "argument":{ + "type":"Literal", + "loc":{"source":null,"start":{"line":2,"column":20},"end":{"line":2,"column":21}}, + "range":[45,46], + "value":null, + "raw":"null" + } + } + } + }, + { + "type":"ExpressionStatement", + "loc":{"source":null,"start":{"line":2,"column":20},"end":{"line":2,"column":22}}, + "range":[45,47], + "expression":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":2,"column":20},"end":{"line":2,"column":21}}, + "range":[45,46], + "name":"f", + "typeAnnotation":null, + "optional":false + }, + "directive":null + } + ] + }, + "async":true, + "generator":false, + "predicate":null, + "expression":false, + "returnType":null, + "typeParameters":null + } + ], + "comments":[] +} diff --git a/src/parser/test/flow/fsharp_pipeline_operator/base.tree.json b/src/parser/test/flow/fsharp_pipeline_operator/base.tree.json new file mode 100644 index 00000000000..f81fa87d730 --- /dev/null +++ b/src/parser/test/flow/fsharp_pipeline_operator/base.tree.json @@ -0,0 +1,42 @@ +{ + "errors":[ + { + "loc":{"source":null,"start":{"line":1,"column":2},"end":{"line":1,"column":4}}, + "message":"The F# pipeline operator plugin must be enabled in order to use the pipeline operator (`|>`). Pipeline operator is an active early-stage feature proposal which may change and is not enabled by default. To enable support in the parser, use the `esproposal_fsharp_pipeline_operator` option." + } + ], + "type":"Program", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":6}}, + "range":[0,6], + "body":[ + { + "type":"ExpressionStatement", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":6}}, + "range":[0,6], + "expression":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":6}}, + "range":[0,6], + "operator":"|>", + "left":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":1}}, + "range":[0,1], + "name":"a", + "typeAnnotation":null, + "optional":false + }, + "right":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":5},"end":{"line":1,"column":6}}, + "range":[5,6], + "name":"b", + "typeAnnotation":null, + "optional":false + } + }, + "directive":null + } + ], + "comments":[] +} diff --git a/src/parser/test/flow/fsharp_pipeline_operator/chain.tree.json b/src/parser/test/flow/fsharp_pipeline_operator/chain.tree.json new file mode 100644 index 00000000000..eb4e514df36 --- /dev/null +++ b/src/parser/test/flow/fsharp_pipeline_operator/chain.tree.json @@ -0,0 +1,60 @@ +{ + "errors":[ + { + "loc":{"source":null,"start":{"line":1,"column":2},"end":{"line":1,"column":4}}, + "message":"The F# pipeline operator plugin must be enabled in order to use the pipeline operator (`|>`). Pipeline operator is an active early-stage feature proposal which may change and is not enabled by default. To enable support in the parser, use the `esproposal_fsharp_pipeline_operator` option." + }, + { + "loc":{"source":null,"start":{"line":1,"column":9},"end":{"line":1,"column":11}}, + "message":"The F# pipeline operator plugin must be enabled in order to use the pipeline operator (`|>`). Pipeline operator is an active early-stage feature proposal which may change and is not enabled by default. To enable support in the parser, use the `esproposal_fsharp_pipeline_operator` option." + } + ], + "type":"Program", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":18}}, + "range":[0,18], + "body":[ + { + "type":"ExpressionStatement", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":18}}, + "range":[0,18], + "expression":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":18}}, + "range":[0,18], + "operator":"|>", + "left":{ + "type":"BinaryExpression", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":8}}, + "range":[0,8], + "operator":"|>", + "left":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":1,"column":1}}, + "range":[0,1], + "name":"x", + "typeAnnotation":null, + "optional":false + }, + "right":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":5},"end":{"line":1,"column":8}}, + "range":[5,8], + "name":"inc", + "typeAnnotation":null, + "optional":false + } + }, + "right":{ + "type":"Identifier", + "loc":{"source":null,"start":{"line":1,"column":12},"end":{"line":1,"column":18}}, + "range":[12,18], + "name":"double", + "typeAnnotation":null, + "optional":false + } + }, + "directive":null + } + ], + "comments":[] +}