Skip to content

Commit 09b8bd6

Browse files
committed
sync latest syntax
1 parent f300998 commit 09b8bd6

File tree

6 files changed

+57
-64
lines changed

6 files changed

+57
-64
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
- Support `@gentype.import` as an alias to `@genType.import` in the compiler https://github.com/rescript-lang/rescript-compiler/pull/6021
4141
- In GenType, check annotations also in module types to decide whether to produce the `.gen.tsx` file https://github.com/rescript-lang/rescript-compiler/pull/5903
4242
- Fix issue with JSX V4 and newtype https://github.com/rescript-lang/syntax/pull/737
43+
- Fix issue with JSX V4 when components are nested https://github.com/rescript-lang/syntax/pull/738
4344

4445
#### :rocket: New Feature
4546

jscomp/napkin/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@
6565
- Fix formatting of `switch` expressions that contain braced `cases` inside https://github.com/rescript-lang/syntax/pull/735
6666
- Fix formatting of props spread for multiline JSX expression https://github.com/rescript-lang/syntax/pull/736
6767
- Fix issue with JSX V4 and newtype https://github.com/rescript-lang/syntax/pull/737
68+
- Fix issue with JSX V4 when components are nested https://github.com/rescript-lang/syntax/pull/738
6869

6970
#### :eyeglasses: Spec Compliance
7071

lib/4.06.1/unstable/js_compiler.ml

Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -273969,8 +273969,7 @@ let jsxMapper ~config =
273969273969
args
273970273970
in
273971273971

273972-
let rec recursivelyTransformNamedArgsForMake mapper expr args newtypes =
273973-
let expr = mapper.expr mapper expr in
273972+
let rec recursivelyTransformNamedArgsForMake expr args newtypes =
273974273973
match expr.pexp_desc with
273975273974
(* TODO: make this show up with a loc. *)
273976273975
| Pexp_fun (Labelled "key", _, _, _) | Pexp_fun (Optional "key", _, _, _) ->
@@ -274017,7 +274016,7 @@ let jsxMapper ~config =
274017274016
| _ -> None
274018274017
in
274019274018

274020-
recursivelyTransformNamedArgsForMake mapper expression
274019+
recursivelyTransformNamedArgsForMake expression
274021274020
((arg, default, pattern, alias, pattern.ppat_loc, type_) :: args)
274022274021
newtypes
274023274022
| Pexp_fun
@@ -274040,10 +274039,9 @@ let jsxMapper ~config =
274040274039
"React: react.component refs only support plain arguments and type \
274041274040
annotations."
274042274041
| Pexp_newtype (label, expression) ->
274043-
recursivelyTransformNamedArgsForMake mapper expression args
274044-
(label :: newtypes)
274042+
recursivelyTransformNamedArgsForMake expression args (label :: newtypes)
274045274043
| Pexp_constraint (expression, _typ) ->
274046-
recursivelyTransformNamedArgsForMake mapper expression args newtypes
274044+
recursivelyTransformNamedArgsForMake expression args newtypes
274047274045
| _ -> (args, newtypes, None)
274048274046
in
274049274047

@@ -274109,7 +274107,7 @@ let jsxMapper ~config =
274109274107
in
274110274108

274111274109
let nestedModules = ref [] in
274112-
let transformStructureItem mapper item =
274110+
let transformStructureItem item =
274113274111
match item with
274114274112
(* external *)
274115274113
| {
@@ -274348,7 +274346,7 @@ let jsxMapper ~config =
274348274346
let props = getPropsAttr payload in
274349274347
(* do stuff here! *)
274350274348
let namedArgList, newtypes, forwardRef =
274351-
recursivelyTransformNamedArgsForMake mapper
274349+
recursivelyTransformNamedArgsForMake
274352274350
(modifiedBindingOld binding)
274353274351
[] []
274354274352
in
@@ -275316,9 +275314,7 @@ let transformLowercaseCall3 ~config mapper jsxExprLoc callExprLoc attrs
275316275314
})
275317275315
args
275318275316

275319-
let rec recursivelyTransformNamedArgsForMake mapper expr args newtypes coreType
275320-
=
275321-
let expr = mapper.expr mapper expr in
275317+
let rec recursivelyTransformNamedArgsForMake expr args newtypes coreType =
275322275318
match expr.pexp_desc with
275323275319
(* TODO: make this show up with a loc. *)
275324275320
| Pexp_fun (Labelled "key", _, _, _) | Pexp_fun (Optional "key", _, _, _) ->
@@ -275365,7 +275361,7 @@ let rec recursivelyTransformNamedArgsForMake mapper expr args newtypes coreType
275365275361
| _ -> None
275366275362
in
275367275363

275368-
recursivelyTransformNamedArgsForMake mapper expression
275364+
recursivelyTransformNamedArgsForMake expression
275369275365
((arg, default, pattern, alias, pattern.ppat_loc, type_) :: args)
275370275366
newtypes coreType
275371275367
| Pexp_fun
@@ -275398,10 +275394,10 @@ let rec recursivelyTransformNamedArgsForMake mapper expr args newtypes coreType
275398275394
"React: react.component refs only support plain arguments and type \
275399275395
annotations."
275400275396
| Pexp_newtype (label, expression) ->
275401-
recursivelyTransformNamedArgsForMake mapper expression args
275402-
(label :: newtypes) coreType
275397+
recursivelyTransformNamedArgsForMake expression args (label :: newtypes)
275398+
coreType
275403275399
| Pexp_constraint (expression, coreType) ->
275404-
recursivelyTransformNamedArgsForMake mapper expression args newtypes
275400+
recursivelyTransformNamedArgsForMake expression args newtypes
275405275401
(Some coreType)
275406275402
| _ -> (args, newtypes, coreType)
275407275403

@@ -275442,7 +275438,7 @@ let check_string_int_attribute_iter =
275442275438

275443275439
{Ast_iterator.default_iterator with attribute}
275444275440

275445-
let transformStructureItem ~config mapper item =
275441+
let transformStructureItem ~config item =
275446275442
match item with
275447275443
(* external *)
275448275444
| {
@@ -275545,6 +275541,8 @@ let transformStructureItem ~config mapper item =
275545275541
binding with
275546275542
pvb_pat = {binding.pvb_pat with ppat_loc = emptyLoc};
275547275543
pvb_loc = emptyLoc;
275544+
pvb_attributes =
275545+
binding.pvb_attributes |> List.filter otherAttrsPure;
275548275546
}
275549275547
in
275550275548
let fnName = getFnName binding.pvb_pat in
@@ -275588,8 +275586,7 @@ let transformStructureItem ~config mapper item =
275588275586
let modifiedBinding binding =
275589275587
let hasApplication = ref false in
275590275588
let wrapExpressionWithBinding expressionFn expression =
275591-
Vb.mk ~loc:bindingLoc
275592-
~attrs:(List.filter otherAttrsPure binding.pvb_attributes)
275589+
Vb.mk ~loc:bindingLoc ~attrs:binding.pvb_attributes
275593275590
(Pat.var ~loc:bindingPatLoc {loc = bindingPatLoc; txt = fnName})
275594275591
(expressionFn expression)
275595275592
in
@@ -275697,7 +275694,7 @@ let transformStructureItem ~config mapper item =
275697275694
in
275698275695
(* do stuff here! *)
275699275696
let namedArgList, newtypes, _typeConstraints =
275700-
recursivelyTransformNamedArgsForMake mapper
275697+
recursivelyTransformNamedArgsForMake
275701275698
(modifiedBindingOld binding)
275702275699
[] [] None
275703275700
in
@@ -276340,8 +276337,8 @@ let getMapper ~config =
276340276337
| Pstr_attribute attr -> processConfigAttribute attr config
276341276338
| _ -> ());
276342276339
let item = default_mapper.structure_item mapper item in
276343-
if config.version = 3 then transformStructureItem3 mapper item
276344-
else if config.version = 4 then transformStructureItem4 mapper item
276340+
if config.version = 3 then transformStructureItem3 item
276341+
else if config.version = 4 then transformStructureItem4 item
276345276342
else [item])
276346276343
items
276347276344
|> List.flatten

lib/4.06.1/unstable/js_playground_compiler.ml

Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -273969,8 +273969,7 @@ let jsxMapper ~config =
273969273969
args
273970273970
in
273971273971

273972-
let rec recursivelyTransformNamedArgsForMake mapper expr args newtypes =
273973-
let expr = mapper.expr mapper expr in
273972+
let rec recursivelyTransformNamedArgsForMake expr args newtypes =
273974273973
match expr.pexp_desc with
273975273974
(* TODO: make this show up with a loc. *)
273976273975
| Pexp_fun (Labelled "key", _, _, _) | Pexp_fun (Optional "key", _, _, _) ->
@@ -274017,7 +274016,7 @@ let jsxMapper ~config =
274017274016
| _ -> None
274018274017
in
274019274018

274020-
recursivelyTransformNamedArgsForMake mapper expression
274019+
recursivelyTransformNamedArgsForMake expression
274021274020
((arg, default, pattern, alias, pattern.ppat_loc, type_) :: args)
274022274021
newtypes
274023274022
| Pexp_fun
@@ -274040,10 +274039,9 @@ let jsxMapper ~config =
274040274039
"React: react.component refs only support plain arguments and type \
274041274040
annotations."
274042274041
| Pexp_newtype (label, expression) ->
274043-
recursivelyTransformNamedArgsForMake mapper expression args
274044-
(label :: newtypes)
274042+
recursivelyTransformNamedArgsForMake expression args (label :: newtypes)
274045274043
| Pexp_constraint (expression, _typ) ->
274046-
recursivelyTransformNamedArgsForMake mapper expression args newtypes
274044+
recursivelyTransformNamedArgsForMake expression args newtypes
274047274045
| _ -> (args, newtypes, None)
274048274046
in
274049274047

@@ -274109,7 +274107,7 @@ let jsxMapper ~config =
274109274107
in
274110274108

274111274109
let nestedModules = ref [] in
274112-
let transformStructureItem mapper item =
274110+
let transformStructureItem item =
274113274111
match item with
274114274112
(* external *)
274115274113
| {
@@ -274348,7 +274346,7 @@ let jsxMapper ~config =
274348274346
let props = getPropsAttr payload in
274349274347
(* do stuff here! *)
274350274348
let namedArgList, newtypes, forwardRef =
274351-
recursivelyTransformNamedArgsForMake mapper
274349+
recursivelyTransformNamedArgsForMake
274352274350
(modifiedBindingOld binding)
274353274351
[] []
274354274352
in
@@ -275316,9 +275314,7 @@ let transformLowercaseCall3 ~config mapper jsxExprLoc callExprLoc attrs
275316275314
})
275317275315
args
275318275316

275319-
let rec recursivelyTransformNamedArgsForMake mapper expr args newtypes coreType
275320-
=
275321-
let expr = mapper.expr mapper expr in
275317+
let rec recursivelyTransformNamedArgsForMake expr args newtypes coreType =
275322275318
match expr.pexp_desc with
275323275319
(* TODO: make this show up with a loc. *)
275324275320
| Pexp_fun (Labelled "key", _, _, _) | Pexp_fun (Optional "key", _, _, _) ->
@@ -275365,7 +275361,7 @@ let rec recursivelyTransformNamedArgsForMake mapper expr args newtypes coreType
275365275361
| _ -> None
275366275362
in
275367275363

275368-
recursivelyTransformNamedArgsForMake mapper expression
275364+
recursivelyTransformNamedArgsForMake expression
275369275365
((arg, default, pattern, alias, pattern.ppat_loc, type_) :: args)
275370275366
newtypes coreType
275371275367
| Pexp_fun
@@ -275398,10 +275394,10 @@ let rec recursivelyTransformNamedArgsForMake mapper expr args newtypes coreType
275398275394
"React: react.component refs only support plain arguments and type \
275399275395
annotations."
275400275396
| Pexp_newtype (label, expression) ->
275401-
recursivelyTransformNamedArgsForMake mapper expression args
275402-
(label :: newtypes) coreType
275397+
recursivelyTransformNamedArgsForMake expression args (label :: newtypes)
275398+
coreType
275403275399
| Pexp_constraint (expression, coreType) ->
275404-
recursivelyTransformNamedArgsForMake mapper expression args newtypes
275400+
recursivelyTransformNamedArgsForMake expression args newtypes
275405275401
(Some coreType)
275406275402
| _ -> (args, newtypes, coreType)
275407275403

@@ -275442,7 +275438,7 @@ let check_string_int_attribute_iter =
275442275438

275443275439
{Ast_iterator.default_iterator with attribute}
275444275440

275445-
let transformStructureItem ~config mapper item =
275441+
let transformStructureItem ~config item =
275446275442
match item with
275447275443
(* external *)
275448275444
| {
@@ -275545,6 +275541,8 @@ let transformStructureItem ~config mapper item =
275545275541
binding with
275546275542
pvb_pat = {binding.pvb_pat with ppat_loc = emptyLoc};
275547275543
pvb_loc = emptyLoc;
275544+
pvb_attributes =
275545+
binding.pvb_attributes |> List.filter otherAttrsPure;
275548275546
}
275549275547
in
275550275548
let fnName = getFnName binding.pvb_pat in
@@ -275588,8 +275586,7 @@ let transformStructureItem ~config mapper item =
275588275586
let modifiedBinding binding =
275589275587
let hasApplication = ref false in
275590275588
let wrapExpressionWithBinding expressionFn expression =
275591-
Vb.mk ~loc:bindingLoc
275592-
~attrs:(List.filter otherAttrsPure binding.pvb_attributes)
275589+
Vb.mk ~loc:bindingLoc ~attrs:binding.pvb_attributes
275593275590
(Pat.var ~loc:bindingPatLoc {loc = bindingPatLoc; txt = fnName})
275594275591
(expressionFn expression)
275595275592
in
@@ -275697,7 +275694,7 @@ let transformStructureItem ~config mapper item =
275697275694
in
275698275695
(* do stuff here! *)
275699275696
let namedArgList, newtypes, _typeConstraints =
275700-
recursivelyTransformNamedArgsForMake mapper
275697+
recursivelyTransformNamedArgsForMake
275701275698
(modifiedBindingOld binding)
275702275699
[] [] None
275703275700
in
@@ -276340,8 +276337,8 @@ let getMapper ~config =
276340276337
| Pstr_attribute attr -> processConfigAttribute attr config
276341276338
| _ -> ());
276342276339
let item = default_mapper.structure_item mapper item in
276343-
if config.version = 3 then transformStructureItem3 mapper item
276344-
else if config.version = 4 then transformStructureItem4 mapper item
276340+
if config.version = 3 then transformStructureItem3 item
276341+
else if config.version = 4 then transformStructureItem4 item
276345276342
else [item])
276346276343
items
276347276344
|> List.flatten

0 commit comments

Comments
 (0)