Skip to content

Commit 786fcb9

Browse files
gkzfacebook-github-bot
authored andcommitted
[flow][enums] Add parser tests for bigint enums, and big int enums to custom_ast_types.js
Summary: Add parser tests for bigint enums, and big int enums to custom_ast_types.js Changelog: [internal] Reviewed By: SamChou19815 Differential Revision: D55774602 fbshipit-source-id: a3e71050b2ee86edb76506550ba016a30cfdc1a1
1 parent df64cc2 commit 786fcb9

7 files changed

+180
-0
lines changed

packages/flow-parser/test/custom_ast_types.js

+22
Original file line numberDiff line numberDiff line change
@@ -132,9 +132,31 @@ function custom_ast_types(fork) {
132132
def('EnumNumberBody'),
133133
def('EnumStringBody'),
134134
def('EnumSymbolBody'),
135+
def('EnumBigIntBody'),
135136
),
136137
);
137138

139+
def('EnumDeclaration').field(
140+
'body',
141+
or(
142+
def('EnumBooleanBody'),
143+
def('EnumNumberBody'),
144+
def('EnumStringBody'),
145+
def('EnumSymbolBody'),
146+
def('EnumBigIntBody'), // <-- ADDITION
147+
),
148+
);
149+
150+
def('EnumBigIntBody')
151+
.build('members', 'explicitType')
152+
.field('members', [def('EnumBigIntMember')])
153+
.field('explicitType', Boolean);
154+
155+
def('EnumBigIntMember')
156+
.build('id', 'init')
157+
.field('id', def('Identifier'))
158+
.field('init', def('Literal'));
159+
138160
def('DeclareNamespace')
139161
.bases('Declaration')
140162
.build('id', 'body')
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
enum E of bigint {
2+
A = 1n,
3+
B = 2n,
4+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"enums": true
3+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
{
2+
"type":"Program",
3+
"loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":4,"column":1}},
4+
"range":[0,40],
5+
"body":[
6+
{
7+
"type":"EnumDeclaration",
8+
"loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":4,"column":1}},
9+
"range":[0,40],
10+
"id":{
11+
"type":"Identifier",
12+
"loc":{"source":null,"start":{"line":1,"column":5},"end":{"line":1,"column":6}},
13+
"range":[5,6],
14+
"name":"E",
15+
"typeAnnotation":null,
16+
"optional":false
17+
},
18+
"body":{
19+
"type":"EnumBigIntBody",
20+
"loc":{"source":null,"start":{"line":1,"column":7},"end":{"line":4,"column":1}},
21+
"range":[7,40],
22+
"members":[
23+
{
24+
"type":"EnumBigIntMember",
25+
"loc":{"source":null,"start":{"line":2,"column":2},"end":{"line":2,"column":8}},
26+
"range":[21,27],
27+
"id":{
28+
"type":"Identifier",
29+
"loc":{"source":null,"start":{"line":2,"column":2},"end":{"line":2,"column":3}},
30+
"range":[21,22],
31+
"name":"A",
32+
"typeAnnotation":null,
33+
"optional":false
34+
},
35+
"init":{
36+
"type":"Literal",
37+
"loc":{"source":null,"start":{"line":2,"column":6},"end":{"line":2,"column":8}},
38+
"range":[25,27],
39+
"value":null,
40+
"bigint":"1",
41+
"raw":"1n"
42+
}
43+
},
44+
{
45+
"type":"EnumBigIntMember",
46+
"loc":{"source":null,"start":{"line":3,"column":2},"end":{"line":3,"column":8}},
47+
"range":[31,37],
48+
"id":{
49+
"type":"Identifier",
50+
"loc":{"source":null,"start":{"line":3,"column":2},"end":{"line":3,"column":3}},
51+
"range":[31,32],
52+
"name":"B",
53+
"typeAnnotation":null,
54+
"optional":false
55+
},
56+
"init":{
57+
"type":"Literal",
58+
"loc":{"source":null,"start":{"line":3,"column":6},"end":{"line":3,"column":8}},
59+
"range":[35,37],
60+
"value":null,
61+
"bigint":"2",
62+
"raw":"2n"
63+
}
64+
}
65+
],
66+
"explicitType":true,
67+
"hasUnknownMembers":false
68+
}
69+
}
70+
],
71+
"comments":[]
72+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
enum E {
2+
A = 1n,
3+
B = 2n,
4+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"enums": true
3+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
{
2+
"type":"Program",
3+
"loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":4,"column":1}},
4+
"range":[0,30],
5+
"body":[
6+
{
7+
"type":"EnumDeclaration",
8+
"loc":{"source":null,"start":{"line":1,"column":0},"end":{"line":4,"column":1}},
9+
"range":[0,30],
10+
"id":{
11+
"type":"Identifier",
12+
"loc":{"source":null,"start":{"line":1,"column":5},"end":{"line":1,"column":6}},
13+
"range":[5,6],
14+
"name":"E",
15+
"typeAnnotation":null,
16+
"optional":false
17+
},
18+
"body":{
19+
"type":"EnumBigIntBody",
20+
"loc":{"source":null,"start":{"line":1,"column":7},"end":{"line":4,"column":1}},
21+
"range":[7,30],
22+
"members":[
23+
{
24+
"type":"EnumBigIntMember",
25+
"loc":{"source":null,"start":{"line":2,"column":2},"end":{"line":2,"column":8}},
26+
"range":[11,17],
27+
"id":{
28+
"type":"Identifier",
29+
"loc":{"source":null,"start":{"line":2,"column":2},"end":{"line":2,"column":3}},
30+
"range":[11,12],
31+
"name":"A",
32+
"typeAnnotation":null,
33+
"optional":false
34+
},
35+
"init":{
36+
"type":"Literal",
37+
"loc":{"source":null,"start":{"line":2,"column":6},"end":{"line":2,"column":8}},
38+
"range":[15,17],
39+
"value":null,
40+
"bigint":"1",
41+
"raw":"1n"
42+
}
43+
},
44+
{
45+
"type":"EnumBigIntMember",
46+
"loc":{"source":null,"start":{"line":3,"column":2},"end":{"line":3,"column":8}},
47+
"range":[21,27],
48+
"id":{
49+
"type":"Identifier",
50+
"loc":{"source":null,"start":{"line":3,"column":2},"end":{"line":3,"column":3}},
51+
"range":[21,22],
52+
"name":"B",
53+
"typeAnnotation":null,
54+
"optional":false
55+
},
56+
"init":{
57+
"type":"Literal",
58+
"loc":{"source":null,"start":{"line":3,"column":6},"end":{"line":3,"column":8}},
59+
"range":[25,27],
60+
"value":null,
61+
"bigint":"2",
62+
"raw":"2n"
63+
}
64+
}
65+
],
66+
"explicitType":false,
67+
"hasUnknownMembers":false
68+
}
69+
}
70+
],
71+
"comments":[]
72+
}

0 commit comments

Comments
 (0)