Skip to content

Commit 1ccb577

Browse files
committed
initial tests
1 parent 65b4288 commit 1ccb577

File tree

7 files changed

+316
-260
lines changed

7 files changed

+316
-260
lines changed

grammar.js

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ module.exports = grammar({
5454
$.ternary_expression,
5555
$.mutation_expression,
5656
$.function,
57-
$.let_binding,
57+
$.let_declaration,
5858
],
5959
// Nested.Module.Path precendence
6060
[
@@ -84,8 +84,8 @@ module.exports = grammar({
8484
[$.record_field, $.record_pattern],
8585
[$.expression_statement, $.ternary_expression],
8686
[$._type_declaration],
87-
[$._let_binding],
88-
[$.let_binding, $.ternary_expression],
87+
[$.let_declaration],
88+
[$.let_declaration, $.ternary_expression],
8989
[$.variant_identifier, $.module_identifier],
9090
[$.variant, $.variant_pattern],
9191
[$.variant_declaration, $.function_type_parameter],
@@ -175,7 +175,7 @@ module.exports = grammar({
175175

176176
declaration: $ => choice(
177177
$.type_declaration,
178-
$.let_binding,
178+
$.let_declaration,
179179
$.module_declaration,
180180
$.external_declaration,
181181
$.exception_declaration,
@@ -467,31 +467,34 @@ module.exports = grammar({
467467
),
468468
),
469469

470-
let_binding: $ => seq(
470+
let_declaration: $ => seq(
471471
choice('export', 'let'),
472472
optional('rec'),
473-
$._let_binding,
473+
sep1(
474+
seq(repeat($._newline), repeat($.decorator), 'and'),
475+
$.let_binding
476+
)
474477
),
475478

476-
_let_binding: $ => seq(
477-
$._pattern,
478-
optional($.type_annotation),
479+
let_binding: $ => seq(
480+
field('pattern', $._pattern),
481+
// optional($.type_annotation),
479482
optional(seq(
480483
'=',
481484
repeat($.decorator),
482-
$.expression,
483-
optional(alias($._let_binding_and, $.let_binding)),
485+
field('body', $.expression),
486+
// optional(alias($._let_binding_and, $.let_binding)),
484487
)),
485488
),
486489

487-
_let_binding_and: $ => seq(
488-
// New line here not necessary terminates the statement,
489-
// show this doubt to the parser
490-
repeat($._newline),
491-
repeat($.decorator),
492-
'and',
493-
$._let_binding,
494-
),
490+
// _let_binding_and: $ => seq(
491+
// // New line here not necessary terminates the statement,
492+
// // show this doubt to the parser
493+
// repeat($._newline),
494+
// repeat($.decorator),
495+
// 'and',
496+
// $._let_binding,
497+
// ),
495498

496499
expression_statement: $ => $.expression,
497500

test/corpus/decorators.txt

Lines changed: 47 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -39,43 +39,46 @@ call()
3939
---
4040

4141
(source_file
42-
(let_binding
43-
(value_identifier)
44-
(call_expression
45-
(parenthesized_expression
46-
(decorator (decorator_identifier))
47-
(value_identifier_path
48-
(module_identifier)
49-
(value_identifier)))
50-
(arguments
51-
(number)
52-
(character))))
53-
54-
(let_binding
55-
(value_identifier)
56-
(decorator (decorator_identifier))
57-
(call_expression
58-
(value_identifier_path
59-
(module_identifier)
60-
(value_identifier))
61-
(arguments
62-
(number)
63-
(character))))
42+
(let_declaration
43+
(let_binding
44+
(value_identifier)
45+
(call_expression
46+
(parenthesized_expression
47+
(decorator (decorator_identifier))
48+
(value_identifier_path
49+
(module_identifier)
50+
(value_identifier)))
51+
(arguments
52+
(number)
53+
(character)))))
6454

65-
(let_binding
66-
(value_identifier)
67-
(function
68-
(formal_parameters)
55+
(let_declaration
56+
(let_binding
57+
(value_identifier)
6958
(decorator (decorator_identifier))
7059
(call_expression
7160
(value_identifier_path
72-
(module_identifier_path
73-
(module_identifier)
74-
(module_identifier))
61+
(module_identifier)
7562
(value_identifier))
7663
(arguments
77-
(array)
78-
(number)))))
64+
(number)
65+
(character)))))
66+
67+
(let_declaration
68+
(let_binding
69+
(value_identifier)
70+
(function
71+
(formal_parameters)
72+
(decorator (decorator_identifier))
73+
(call_expression
74+
(value_identifier_path
75+
(module_identifier_path
76+
(module_identifier)
77+
(module_identifier))
78+
(value_identifier))
79+
(arguments
80+
(array)
81+
(number))))))
7982

8083
(decorated
8184
(decorator (decorator_identifier))
@@ -130,15 +133,16 @@ let make = (~x, ~y) => React.string(x ++ y)
130133
(decorator_identifier)
131134
(decorator_arguments
132135
(type_annotation (type_identifier))))
133-
(let_binding
134-
(value_identifier)
135-
(function
136-
(formal_parameters
137-
(parameter (labeled_parameter (value_identifier)))
138-
(parameter (labeled_parameter (value_identifier))))
139-
(call_expression
140-
(value_identifier_path
141-
(module_identifier) (value_identifier))
142-
(arguments
143-
(binary_expression
144-
(value_identifier) (value_identifier))))))))
136+
(let_declaration
137+
(let_binding
138+
(value_identifier)
139+
(function
140+
(formal_parameters
141+
(parameter (labeled_parameter (value_identifier)))
142+
(parameter (labeled_parameter (value_identifier))))
143+
(call_expression
144+
(value_identifier_path
145+
(module_identifier) (value_identifier))
146+
(arguments
147+
(binary_expression
148+
(value_identifier) (value_identifier)))))))))

test/corpus/functions.txt

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -87,16 +87,17 @@ let foo = (type a, x: 'a): a => x
8787
---
8888

8989
(source_file
90-
(let_binding
91-
(value_identifier)
92-
(function
93-
(formal_parameters
94-
(parameter (abstract_type (type_identifier)))
95-
(parameter
96-
(value_identifier)
97-
(type_annotation (type_identifier))))
98-
(type_annotation (type_identifier))
99-
(value_identifier))))
90+
(let_declaration
91+
(let_binding
92+
(value_identifier)
93+
(function
94+
(formal_parameters
95+
(parameter (abstract_type (type_identifier)))
96+
(parameter
97+
(value_identifier)
98+
(type_annotation (type_identifier))))
99+
(type_annotation (type_identifier))
100+
(value_identifier)))))
100101

101102
===================================================
102103
Parameter defaults

test/corpus/jsx.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,8 @@ Block children
141141
(jsx_element
142142
(jsx_opening_element (jsx_identifier))
143143
(block
144-
(let_binding (value_identifier) (string (string_fragment)))
144+
(let_declaration
145+
(let_binding (value_identifier) (string (string_fragment))))
145146
(expression_statement
146147
(jsx_element
147148
(jsx_opening_element (jsx_identifier) (jsx_attribute (property_identifier)))

0 commit comments

Comments
 (0)