Skip to content

Commit e5fa28f

Browse files
authored
Merge pull request #254 from HerringtonDarkholme/fix-conditional
fix: conditional_type should be right-associative
2 parents 6e695f4 + bf4331c commit e5fa28f

File tree

6 files changed

+12511
-12499
lines changed

6 files changed

+12511
-12499
lines changed

common/corpus/types.txt

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1179,23 +1179,23 @@ type T<X> = T extends { x: infer X extends number } ? X : never;
11791179
(identifier)
11801180
(type_annotation (type_identifier))))
11811181
(conditional_type
1182+
(type_identifier)
1183+
(type_identifier)
1184+
(type_identifier)
11821185
(conditional_type
11831186
(type_identifier)
1187+
(function_type
1188+
(formal_parameters
1189+
(required_parameter
1190+
(identifier)
1191+
(type_annotation (type_identifier))))
1192+
(conditional_type
1193+
(type_identifier)
1194+
(type_identifier)
1195+
(type_identifier)
1196+
(type_identifier)))
11841197
(type_identifier)
1185-
(type_identifier)
1186-
(type_identifier))
1187-
(function_type
1188-
(formal_parameters
1189-
(required_parameter
1190-
(identifier)
1191-
(type_annotation (type_identifier))))
1192-
(conditional_type
1193-
(type_identifier)
1194-
(type_identifier)
1195-
(type_identifier)
1196-
(type_identifier)))
1197-
(type_identifier)
1198-
(type_identifier))))
1198+
(type_identifier)))))
11991199
(type_alias_declaration
12001200
(type_identifier)
12011201
(type_parameters
@@ -1205,20 +1205,20 @@ type T<X> = T extends { x: infer X extends number } ? X : never;
12051205
(type_identifier)
12061206
(generic_type
12071207
(type_identifier)
1208-
(type_arguments
1209-
(infer_type (type_identifier))))
1208+
(type_arguments (infer_type (type_identifier))))
12101209
(type_identifier)
12111210
(type_identifier)))
1212-
(type_alias_declaration
1211+
(type_alias_declaration
1212+
(type_identifier)
1213+
(type_parameters
1214+
(type_parameter (type_identifier)))
1215+
(conditional_type
12131216
(type_identifier)
1214-
(type_parameters
1215-
(type_parameter (type_identifier)))
1216-
(conditional_type
1217-
(type_identifier)
1218-
(array_type
1219-
(parenthesized_type (infer_type (type_identifier))))
1220-
(type_identifier)
1221-
(predefined_type)))
1217+
(array_type
1218+
(parenthesized_type
1219+
(infer_type (type_identifier))))
1220+
(type_identifier)
1221+
(predefined_type)))
12221222
(type_alias_declaration
12231223
(type_identifier)
12241224
(type_parameters
@@ -1568,7 +1568,7 @@ type Foo<T> = abstract new () => T;
15681568

15691569
---
15701570

1571-
(program (type_alias_declaration (type_identifier) (type_parameters (type_parameter (type_identifier))) (constructor_type (formal_parameters) (type_identifier))))
1571+
(program (type_alias_declaration (type_identifier) (type_parameters (type_parameter (type_identifier))) (constructor_type (formal_parameters) (type_identifier))))
15721572

15731573
=========================
15741574
Indexed Access Precedence

common/define-grammar.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ module.exports = function defineGrammar(dialect) {
141141
optional('declare'),
142142
optional($.accessibility_modifier),
143143
choice(
144-
seq(optional('static'), optional($.override_modifier), optional('readonly')),
144+
seq(optional('static'), optional($.override_modifier), optional('readonly')),
145145
seq(optional('abstract'), optional('readonly')),
146146
seq(optional('readonly'), optional('abstract')),
147147
),
@@ -386,7 +386,7 @@ module.exports = function defineGrammar(dialect) {
386386
// *definition*, not a declaration. Example:
387387
// public foo()
388388
// { <--- this brace made the method signature become a definition
389-
// }
389+
// }
390390
// The same rule applies for functions and that's why we use
391391
// "_function_signature_automatic_semicolon".
392392
seq($.method_signature, choice($._function_signature_automatic_semicolon, ',')),
@@ -716,7 +716,7 @@ module.exports = function defineGrammar(dialect) {
716716
))
717717
)),
718718

719-
conditional_type: $ => prec.left(seq(
719+
conditional_type: $ => prec.right(seq(
720720
field('left', $._type),
721721
'extends',
722722
field('right', $._type),

tsx/src/grammar.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8992,7 +8992,7 @@
89928992
}
89938993
},
89948994
"conditional_type": {
8995-
"type": "PREC_LEFT",
8995+
"type": "PREC_RIGHT",
89968996
"value": 0,
89978997
"content": {
89988998
"type": "SEQ",

0 commit comments

Comments
 (0)