Skip to content

Commit 8dc36f3

Browse files
committed
Sync latest syntax.
1 parent ec0916c commit 8dc36f3

File tree

6 files changed

+74
-100
lines changed

6 files changed

+74
-100
lines changed

CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@
4747
- Fix issue with JSX V4 and newtype https://github.com/rescript-lang/syntax/pull/737
4848
- Fix issue with JSX V4 when components are nested https://github.com/rescript-lang/syntax/pull/738
4949
- Fix issue where generic compare on `float` values would be different from the compare for type `float` https://github.com/rescript-lang/rescript-compiler/pull/6043
50+
- Improve code generated for default arguments in JSX V4 https://github.com/rescript-lang/syntax/pull/739
51+
- Fix issue with JSX V4 props of the form `~p as module(...)` https://github.com/rescript-lang/syntax/pull/739
5052

5153
# 10.1.2
5254

jscomp/napkin/CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@
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
6868
- Fix issue with JSX V4 when components are nested https://github.com/rescript-lang/syntax/pull/738
69+
- Improve code generated for default arguments in JSX V4 https://github.com/rescript-lang/syntax/pull/739
70+
- Fix issue with JSX V4 props of the form `~p as module(...)` https://github.com/rescript-lang/syntax/pull/739
6971

7072
#### :eyeglasses: Spec Compliance
7173

lib/4.06.1/unstable/js_compiler.ml

+23-33
Original file line numberDiff line numberDiff line change
@@ -275360,6 +275360,7 @@ let rec recursivelyTransformNamedArgsForMake expr args newtypes coreType =
275360275360
in
275361275361
let type_ =
275362275362
match pattern with
275363+
| {ppat_desc = Ppat_constraint (_, {ptyp_desc = Ptyp_package _})} -> None
275363275364
| {ppat_desc = Ppat_constraint (_, type_)} -> Some type_
275364275365
| _ -> None
275365275366
in
@@ -275563,39 +275564,34 @@ let modifiedBinding ~bindingLoc ~bindingPatLoc ~fnName binding =
275563275564
in
275564275565
(wrapExpressionWithBinding wrapExpression, hasForwardRef, expression)
275565275566

275566-
let vbMatch (name, default, _, alias, loc, _) =
275567+
let vbMatch ~expr (name, default, _, alias, loc, _) =
275567275568
let label = getLabel name in
275568275569
match default with
275569275570
| Some default ->
275570-
Vb.mk
275571-
(Pat.var (Location.mkloc alias loc))
275572-
(Exp.match_
275573-
(Exp.field
275574-
(Exp.ident {txt = Lident "props"; loc = Location.none})
275575-
(Location.mknoloc @@ Lident label))
275576-
[
275577-
Exp.case
275578-
(Pat.construct
275579-
(Location.mknoloc @@ Lident "Some")
275580-
(Some (Pat.var (Location.mknoloc label))))
275581-
(Exp.ident (Location.mknoloc @@ Lident label));
275582-
Exp.case
275583-
(Pat.construct (Location.mknoloc @@ Lident "None") None)
275584-
default;
275585-
])
275586-
| None ->
275587-
Vb.mk
275588-
(Pat.var (Location.mkloc alias loc))
275589-
(Exp.field
275590-
(Exp.ident {txt = Lident "props"; loc = Location.none})
275591-
(Location.mknoloc @@ Lident label))
275571+
let value_binding =
275572+
Vb.mk
275573+
(Pat.var (Location.mkloc alias loc))
275574+
(Exp.match_
275575+
(Exp.ident {txt = Lident alias; loc = Location.none})
275576+
[
275577+
Exp.case
275578+
(Pat.construct
275579+
(Location.mknoloc @@ Lident "Some")
275580+
(Some (Pat.var (Location.mknoloc label))))
275581+
(Exp.ident (Location.mknoloc @@ Lident label));
275582+
Exp.case
275583+
(Pat.construct (Location.mknoloc @@ Lident "None") None)
275584+
default;
275585+
])
275586+
in
275587+
Exp.let_ Nonrecursive [value_binding] expr
275588+
| None -> expr
275592275589

275593275590
let vbMatchExpr namedArgList expr =
275594275591
let rec aux namedArgList =
275595275592
match namedArgList with
275596275593
| [] -> expr
275597-
| [namedArg] -> Exp.let_ Nonrecursive [vbMatch namedArg] expr
275598-
| namedArg :: rest -> Exp.let_ Nonrecursive [vbMatch namedArg] (aux rest)
275594+
| namedArg :: rest -> vbMatch namedArg ~expr:(aux rest)
275599275595
in
275600275596
aux (List.rev namedArgList)
275601275597

@@ -275690,11 +275686,10 @@ let mapBinding ~config ~emptyLoc ~pstr_loc ~fileName ~recFlag binding =
275690275686
in
275691275687
let rec stripConstraintUnpack ~label pattern =
275692275688
match pattern with
275689+
| {ppat_desc = Ppat_constraint (_, {ptyp_desc = Ptyp_package _})} ->
275690+
pattern
275693275691
| {ppat_desc = Ppat_constraint (pattern, _)} ->
275694275692
stripConstraintUnpack ~label pattern
275695-
| {ppat_desc = Ppat_unpack _; ppat_loc} ->
275696-
(* remove unpack e.g. model: module(T) *)
275697-
Pat.var ~loc:ppat_loc {txt = label; loc = ppat_loc}
275698275693
| _ -> pattern
275699275694
in
275700275695
let rec returnedExpression patternsWithLabel patternsWithNolabel
@@ -275763,11 +275758,6 @@ let mapBinding ~config ~emptyLoc ~pstr_loc ~fileName ~recFlag binding =
275763275758
| [] -> Pat.any ()
275764275759
| _ -> Pat.record (List.rev patternsWithLabel) Open
275765275760
in
275766-
let recordPattern =
275767-
if hasDefaultValue namedArgList then
275768-
Pat.var {txt = "props"; loc = emptyLoc}
275769-
else recordPattern
275770-
in
275771275761
let expression =
275772275762
Exp.fun_ Nolabel None
275773275763
(Pat.constraint_ recordPattern

lib/4.06.1/unstable/js_playground_compiler.ml

+23-33
Original file line numberDiff line numberDiff line change
@@ -275360,6 +275360,7 @@ let rec recursivelyTransformNamedArgsForMake expr args newtypes coreType =
275360275360
in
275361275361
let type_ =
275362275362
match pattern with
275363+
| {ppat_desc = Ppat_constraint (_, {ptyp_desc = Ptyp_package _})} -> None
275363275364
| {ppat_desc = Ppat_constraint (_, type_)} -> Some type_
275364275365
| _ -> None
275365275366
in
@@ -275563,39 +275564,34 @@ let modifiedBinding ~bindingLoc ~bindingPatLoc ~fnName binding =
275563275564
in
275564275565
(wrapExpressionWithBinding wrapExpression, hasForwardRef, expression)
275565275566

275566-
let vbMatch (name, default, _, alias, loc, _) =
275567+
let vbMatch ~expr (name, default, _, alias, loc, _) =
275567275568
let label = getLabel name in
275568275569
match default with
275569275570
| Some default ->
275570-
Vb.mk
275571-
(Pat.var (Location.mkloc alias loc))
275572-
(Exp.match_
275573-
(Exp.field
275574-
(Exp.ident {txt = Lident "props"; loc = Location.none})
275575-
(Location.mknoloc @@ Lident label))
275576-
[
275577-
Exp.case
275578-
(Pat.construct
275579-
(Location.mknoloc @@ Lident "Some")
275580-
(Some (Pat.var (Location.mknoloc label))))
275581-
(Exp.ident (Location.mknoloc @@ Lident label));
275582-
Exp.case
275583-
(Pat.construct (Location.mknoloc @@ Lident "None") None)
275584-
default;
275585-
])
275586-
| None ->
275587-
Vb.mk
275588-
(Pat.var (Location.mkloc alias loc))
275589-
(Exp.field
275590-
(Exp.ident {txt = Lident "props"; loc = Location.none})
275591-
(Location.mknoloc @@ Lident label))
275571+
let value_binding =
275572+
Vb.mk
275573+
(Pat.var (Location.mkloc alias loc))
275574+
(Exp.match_
275575+
(Exp.ident {txt = Lident alias; loc = Location.none})
275576+
[
275577+
Exp.case
275578+
(Pat.construct
275579+
(Location.mknoloc @@ Lident "Some")
275580+
(Some (Pat.var (Location.mknoloc label))))
275581+
(Exp.ident (Location.mknoloc @@ Lident label));
275582+
Exp.case
275583+
(Pat.construct (Location.mknoloc @@ Lident "None") None)
275584+
default;
275585+
])
275586+
in
275587+
Exp.let_ Nonrecursive [value_binding] expr
275588+
| None -> expr
275592275589

275593275590
let vbMatchExpr namedArgList expr =
275594275591
let rec aux namedArgList =
275595275592
match namedArgList with
275596275593
| [] -> expr
275597-
| [namedArg] -> Exp.let_ Nonrecursive [vbMatch namedArg] expr
275598-
| namedArg :: rest -> Exp.let_ Nonrecursive [vbMatch namedArg] (aux rest)
275594+
| namedArg :: rest -> vbMatch namedArg ~expr:(aux rest)
275599275595
in
275600275596
aux (List.rev namedArgList)
275601275597

@@ -275690,11 +275686,10 @@ let mapBinding ~config ~emptyLoc ~pstr_loc ~fileName ~recFlag binding =
275690275686
in
275691275687
let rec stripConstraintUnpack ~label pattern =
275692275688
match pattern with
275689+
| {ppat_desc = Ppat_constraint (_, {ptyp_desc = Ptyp_package _})} ->
275690+
pattern
275693275691
| {ppat_desc = Ppat_constraint (pattern, _)} ->
275694275692
stripConstraintUnpack ~label pattern
275695-
| {ppat_desc = Ppat_unpack _; ppat_loc} ->
275696-
(* remove unpack e.g. model: module(T) *)
275697-
Pat.var ~loc:ppat_loc {txt = label; loc = ppat_loc}
275698275693
| _ -> pattern
275699275694
in
275700275695
let rec returnedExpression patternsWithLabel patternsWithNolabel
@@ -275763,11 +275758,6 @@ let mapBinding ~config ~emptyLoc ~pstr_loc ~fileName ~recFlag binding =
275763275758
| [] -> Pat.any ()
275764275759
| _ -> Pat.record (List.rev patternsWithLabel) Open
275765275760
in
275766-
let recordPattern =
275767-
if hasDefaultValue namedArgList then
275768-
Pat.var {txt = "props"; loc = emptyLoc}
275769-
else recordPattern
275770-
in
275771275761
let expression =
275772275762
Exp.fun_ Nolabel None
275773275763
(Pat.constraint_ recordPattern

lib/4.06.1/whole_compiler.ml

+23-33
Original file line numberDiff line numberDiff line change
@@ -285757,6 +285757,7 @@ let rec recursivelyTransformNamedArgsForMake expr args newtypes coreType =
285757285757
in
285758285758
let type_ =
285759285759
match pattern with
285760+
| {ppat_desc = Ppat_constraint (_, {ptyp_desc = Ptyp_package _})} -> None
285760285761
| {ppat_desc = Ppat_constraint (_, type_)} -> Some type_
285761285762
| _ -> None
285762285763
in
@@ -285960,39 +285961,34 @@ let modifiedBinding ~bindingLoc ~bindingPatLoc ~fnName binding =
285960285961
in
285961285962
(wrapExpressionWithBinding wrapExpression, hasForwardRef, expression)
285962285963

285963-
let vbMatch (name, default, _, alias, loc, _) =
285964+
let vbMatch ~expr (name, default, _, alias, loc, _) =
285964285965
let label = getLabel name in
285965285966
match default with
285966285967
| Some default ->
285967-
Vb.mk
285968-
(Pat.var (Location.mkloc alias loc))
285969-
(Exp.match_
285970-
(Exp.field
285971-
(Exp.ident {txt = Lident "props"; loc = Location.none})
285972-
(Location.mknoloc @@ Lident label))
285973-
[
285974-
Exp.case
285975-
(Pat.construct
285976-
(Location.mknoloc @@ Lident "Some")
285977-
(Some (Pat.var (Location.mknoloc label))))
285978-
(Exp.ident (Location.mknoloc @@ Lident label));
285979-
Exp.case
285980-
(Pat.construct (Location.mknoloc @@ Lident "None") None)
285981-
default;
285982-
])
285983-
| None ->
285984-
Vb.mk
285985-
(Pat.var (Location.mkloc alias loc))
285986-
(Exp.field
285987-
(Exp.ident {txt = Lident "props"; loc = Location.none})
285988-
(Location.mknoloc @@ Lident label))
285968+
let value_binding =
285969+
Vb.mk
285970+
(Pat.var (Location.mkloc alias loc))
285971+
(Exp.match_
285972+
(Exp.ident {txt = Lident alias; loc = Location.none})
285973+
[
285974+
Exp.case
285975+
(Pat.construct
285976+
(Location.mknoloc @@ Lident "Some")
285977+
(Some (Pat.var (Location.mknoloc label))))
285978+
(Exp.ident (Location.mknoloc @@ Lident label));
285979+
Exp.case
285980+
(Pat.construct (Location.mknoloc @@ Lident "None") None)
285981+
default;
285982+
])
285983+
in
285984+
Exp.let_ Nonrecursive [value_binding] expr
285985+
| None -> expr
285989285986

285990285987
let vbMatchExpr namedArgList expr =
285991285988
let rec aux namedArgList =
285992285989
match namedArgList with
285993285990
| [] -> expr
285994-
| [namedArg] -> Exp.let_ Nonrecursive [vbMatch namedArg] expr
285995-
| namedArg :: rest -> Exp.let_ Nonrecursive [vbMatch namedArg] (aux rest)
285991+
| namedArg :: rest -> vbMatch namedArg ~expr:(aux rest)
285996285992
in
285997285993
aux (List.rev namedArgList)
285998285994

@@ -286087,11 +286083,10 @@ let mapBinding ~config ~emptyLoc ~pstr_loc ~fileName ~recFlag binding =
286087286083
in
286088286084
let rec stripConstraintUnpack ~label pattern =
286089286085
match pattern with
286086+
| {ppat_desc = Ppat_constraint (_, {ptyp_desc = Ptyp_package _})} ->
286087+
pattern
286090286088
| {ppat_desc = Ppat_constraint (pattern, _)} ->
286091286089
stripConstraintUnpack ~label pattern
286092-
| {ppat_desc = Ppat_unpack _; ppat_loc} ->
286093-
(* remove unpack e.g. model: module(T) *)
286094-
Pat.var ~loc:ppat_loc {txt = label; loc = ppat_loc}
286095286090
| _ -> pattern
286096286091
in
286097286092
let rec returnedExpression patternsWithLabel patternsWithNolabel
@@ -286160,11 +286155,6 @@ let mapBinding ~config ~emptyLoc ~pstr_loc ~fileName ~recFlag binding =
286160286155
| [] -> Pat.any ()
286161286156
| _ -> Pat.record (List.rev patternsWithLabel) Open
286162286157
in
286163-
let recordPattern =
286164-
if hasDefaultValue namedArgList then
286165-
Pat.var {txt = "props"; loc = emptyLoc}
286166-
else recordPattern
286167-
in
286168286158
let expression =
286169286159
Exp.fun_ Nolabel None
286170286160
(Pat.constraint_ recordPattern

0 commit comments

Comments
 (0)