Skip to content

Commit

Permalink
Sync latest syntax.
Browse files Browse the repository at this point in the history
  • Loading branch information
cristianoc committed Mar 6, 2023
1 parent ec0916c commit 8dc36f3
Show file tree
Hide file tree
Showing 6 changed files with 74 additions and 100 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@
- Fix issue with JSX V4 and newtype https://github.com/rescript-lang/syntax/pull/737
- Fix issue with JSX V4 when components are nested https://github.com/rescript-lang/syntax/pull/738
- 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
- Improve code generated for default arguments in JSX V4 https://github.com/rescript-lang/syntax/pull/739
- Fix issue with JSX V4 props of the form `~p as module(...)` https://github.com/rescript-lang/syntax/pull/739

# 10.1.2

Expand Down
2 changes: 2 additions & 0 deletions jscomp/napkin/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,8 @@
- Fix formatting of props spread for multiline JSX expression https://github.com/rescript-lang/syntax/pull/736
- Fix issue with JSX V4 and newtype https://github.com/rescript-lang/syntax/pull/737
- Fix issue with JSX V4 when components are nested https://github.com/rescript-lang/syntax/pull/738
- Improve code generated for default arguments in JSX V4 https://github.com/rescript-lang/syntax/pull/739
- Fix issue with JSX V4 props of the form `~p as module(...)` https://github.com/rescript-lang/syntax/pull/739

#### :eyeglasses: Spec Compliance

Expand Down
56 changes: 23 additions & 33 deletions lib/4.06.1/unstable/js_compiler.ml
Original file line number Diff line number Diff line change
Expand Up @@ -275360,6 +275360,7 @@ let rec recursivelyTransformNamedArgsForMake expr args newtypes coreType =
in
let type_ =
match pattern with
| {ppat_desc = Ppat_constraint (_, {ptyp_desc = Ptyp_package _})} -> None
| {ppat_desc = Ppat_constraint (_, type_)} -> Some type_
| _ -> None
in
Expand Down Expand Up @@ -275563,39 +275564,34 @@ let modifiedBinding ~bindingLoc ~bindingPatLoc ~fnName binding =
in
(wrapExpressionWithBinding wrapExpression, hasForwardRef, expression)

let vbMatch (name, default, _, alias, loc, _) =
let vbMatch ~expr (name, default, _, alias, loc, _) =
let label = getLabel name in
match default with
| Some default ->
Vb.mk
(Pat.var (Location.mkloc alias loc))
(Exp.match_
(Exp.field
(Exp.ident {txt = Lident "props"; loc = Location.none})
(Location.mknoloc @@ Lident label))
[
Exp.case
(Pat.construct
(Location.mknoloc @@ Lident "Some")
(Some (Pat.var (Location.mknoloc label))))
(Exp.ident (Location.mknoloc @@ Lident label));
Exp.case
(Pat.construct (Location.mknoloc @@ Lident "None") None)
default;
])
| None ->
Vb.mk
(Pat.var (Location.mkloc alias loc))
(Exp.field
(Exp.ident {txt = Lident "props"; loc = Location.none})
(Location.mknoloc @@ Lident label))
let value_binding =
Vb.mk
(Pat.var (Location.mkloc alias loc))
(Exp.match_
(Exp.ident {txt = Lident alias; loc = Location.none})
[
Exp.case
(Pat.construct
(Location.mknoloc @@ Lident "Some")
(Some (Pat.var (Location.mknoloc label))))
(Exp.ident (Location.mknoloc @@ Lident label));
Exp.case
(Pat.construct (Location.mknoloc @@ Lident "None") None)
default;
])
in
Exp.let_ Nonrecursive [value_binding] expr
| None -> expr

let vbMatchExpr namedArgList expr =
let rec aux namedArgList =
match namedArgList with
| [] -> expr
| [namedArg] -> Exp.let_ Nonrecursive [vbMatch namedArg] expr
| namedArg :: rest -> Exp.let_ Nonrecursive [vbMatch namedArg] (aux rest)
| namedArg :: rest -> vbMatch namedArg ~expr:(aux rest)
in
aux (List.rev namedArgList)

Expand Down Expand Up @@ -275690,11 +275686,10 @@ let mapBinding ~config ~emptyLoc ~pstr_loc ~fileName ~recFlag binding =
in
let rec stripConstraintUnpack ~label pattern =
match pattern with
| {ppat_desc = Ppat_constraint (_, {ptyp_desc = Ptyp_package _})} ->
pattern
| {ppat_desc = Ppat_constraint (pattern, _)} ->
stripConstraintUnpack ~label pattern
| {ppat_desc = Ppat_unpack _; ppat_loc} ->
(* remove unpack e.g. model: module(T) *)
Pat.var ~loc:ppat_loc {txt = label; loc = ppat_loc}
| _ -> pattern
in
let rec returnedExpression patternsWithLabel patternsWithNolabel
Expand Down Expand Up @@ -275763,11 +275758,6 @@ let mapBinding ~config ~emptyLoc ~pstr_loc ~fileName ~recFlag binding =
| [] -> Pat.any ()
| _ -> Pat.record (List.rev patternsWithLabel) Open
in
let recordPattern =
if hasDefaultValue namedArgList then
Pat.var {txt = "props"; loc = emptyLoc}
else recordPattern
in
let expression =
Exp.fun_ Nolabel None
(Pat.constraint_ recordPattern
Expand Down
56 changes: 23 additions & 33 deletions lib/4.06.1/unstable/js_playground_compiler.ml
Original file line number Diff line number Diff line change
Expand Up @@ -275360,6 +275360,7 @@ let rec recursivelyTransformNamedArgsForMake expr args newtypes coreType =
in
let type_ =
match pattern with
| {ppat_desc = Ppat_constraint (_, {ptyp_desc = Ptyp_package _})} -> None
| {ppat_desc = Ppat_constraint (_, type_)} -> Some type_
| _ -> None
in
Expand Down Expand Up @@ -275563,39 +275564,34 @@ let modifiedBinding ~bindingLoc ~bindingPatLoc ~fnName binding =
in
(wrapExpressionWithBinding wrapExpression, hasForwardRef, expression)

let vbMatch (name, default, _, alias, loc, _) =
let vbMatch ~expr (name, default, _, alias, loc, _) =
let label = getLabel name in
match default with
| Some default ->
Vb.mk
(Pat.var (Location.mkloc alias loc))
(Exp.match_
(Exp.field
(Exp.ident {txt = Lident "props"; loc = Location.none})
(Location.mknoloc @@ Lident label))
[
Exp.case
(Pat.construct
(Location.mknoloc @@ Lident "Some")
(Some (Pat.var (Location.mknoloc label))))
(Exp.ident (Location.mknoloc @@ Lident label));
Exp.case
(Pat.construct (Location.mknoloc @@ Lident "None") None)
default;
])
| None ->
Vb.mk
(Pat.var (Location.mkloc alias loc))
(Exp.field
(Exp.ident {txt = Lident "props"; loc = Location.none})
(Location.mknoloc @@ Lident label))
let value_binding =
Vb.mk
(Pat.var (Location.mkloc alias loc))
(Exp.match_
(Exp.ident {txt = Lident alias; loc = Location.none})
[
Exp.case
(Pat.construct
(Location.mknoloc @@ Lident "Some")
(Some (Pat.var (Location.mknoloc label))))
(Exp.ident (Location.mknoloc @@ Lident label));
Exp.case
(Pat.construct (Location.mknoloc @@ Lident "None") None)
default;
])
in
Exp.let_ Nonrecursive [value_binding] expr
| None -> expr

let vbMatchExpr namedArgList expr =
let rec aux namedArgList =
match namedArgList with
| [] -> expr
| [namedArg] -> Exp.let_ Nonrecursive [vbMatch namedArg] expr
| namedArg :: rest -> Exp.let_ Nonrecursive [vbMatch namedArg] (aux rest)
| namedArg :: rest -> vbMatch namedArg ~expr:(aux rest)
in
aux (List.rev namedArgList)

Expand Down Expand Up @@ -275690,11 +275686,10 @@ let mapBinding ~config ~emptyLoc ~pstr_loc ~fileName ~recFlag binding =
in
let rec stripConstraintUnpack ~label pattern =
match pattern with
| {ppat_desc = Ppat_constraint (_, {ptyp_desc = Ptyp_package _})} ->
pattern
| {ppat_desc = Ppat_constraint (pattern, _)} ->
stripConstraintUnpack ~label pattern
| {ppat_desc = Ppat_unpack _; ppat_loc} ->
(* remove unpack e.g. model: module(T) *)
Pat.var ~loc:ppat_loc {txt = label; loc = ppat_loc}
| _ -> pattern
in
let rec returnedExpression patternsWithLabel patternsWithNolabel
Expand Down Expand Up @@ -275763,11 +275758,6 @@ let mapBinding ~config ~emptyLoc ~pstr_loc ~fileName ~recFlag binding =
| [] -> Pat.any ()
| _ -> Pat.record (List.rev patternsWithLabel) Open
in
let recordPattern =
if hasDefaultValue namedArgList then
Pat.var {txt = "props"; loc = emptyLoc}
else recordPattern
in
let expression =
Exp.fun_ Nolabel None
(Pat.constraint_ recordPattern
Expand Down
56 changes: 23 additions & 33 deletions lib/4.06.1/whole_compiler.ml
Original file line number Diff line number Diff line change
Expand Up @@ -285757,6 +285757,7 @@ let rec recursivelyTransformNamedArgsForMake expr args newtypes coreType =
in
let type_ =
match pattern with
| {ppat_desc = Ppat_constraint (_, {ptyp_desc = Ptyp_package _})} -> None
| {ppat_desc = Ppat_constraint (_, type_)} -> Some type_
| _ -> None
in
Expand Down Expand Up @@ -285960,39 +285961,34 @@ let modifiedBinding ~bindingLoc ~bindingPatLoc ~fnName binding =
in
(wrapExpressionWithBinding wrapExpression, hasForwardRef, expression)

let vbMatch (name, default, _, alias, loc, _) =
let vbMatch ~expr (name, default, _, alias, loc, _) =
let label = getLabel name in
match default with
| Some default ->
Vb.mk
(Pat.var (Location.mkloc alias loc))
(Exp.match_
(Exp.field
(Exp.ident {txt = Lident "props"; loc = Location.none})
(Location.mknoloc @@ Lident label))
[
Exp.case
(Pat.construct
(Location.mknoloc @@ Lident "Some")
(Some (Pat.var (Location.mknoloc label))))
(Exp.ident (Location.mknoloc @@ Lident label));
Exp.case
(Pat.construct (Location.mknoloc @@ Lident "None") None)
default;
])
| None ->
Vb.mk
(Pat.var (Location.mkloc alias loc))
(Exp.field
(Exp.ident {txt = Lident "props"; loc = Location.none})
(Location.mknoloc @@ Lident label))
let value_binding =
Vb.mk
(Pat.var (Location.mkloc alias loc))
(Exp.match_
(Exp.ident {txt = Lident alias; loc = Location.none})
[
Exp.case
(Pat.construct
(Location.mknoloc @@ Lident "Some")
(Some (Pat.var (Location.mknoloc label))))
(Exp.ident (Location.mknoloc @@ Lident label));
Exp.case
(Pat.construct (Location.mknoloc @@ Lident "None") None)
default;
])
in
Exp.let_ Nonrecursive [value_binding] expr
| None -> expr

let vbMatchExpr namedArgList expr =
let rec aux namedArgList =
match namedArgList with
| [] -> expr
| [namedArg] -> Exp.let_ Nonrecursive [vbMatch namedArg] expr
| namedArg :: rest -> Exp.let_ Nonrecursive [vbMatch namedArg] (aux rest)
| namedArg :: rest -> vbMatch namedArg ~expr:(aux rest)
in
aux (List.rev namedArgList)

Expand Down Expand Up @@ -286087,11 +286083,10 @@ let mapBinding ~config ~emptyLoc ~pstr_loc ~fileName ~recFlag binding =
in
let rec stripConstraintUnpack ~label pattern =
match pattern with
| {ppat_desc = Ppat_constraint (_, {ptyp_desc = Ptyp_package _})} ->
pattern
| {ppat_desc = Ppat_constraint (pattern, _)} ->
stripConstraintUnpack ~label pattern
| {ppat_desc = Ppat_unpack _; ppat_loc} ->
(* remove unpack e.g. model: module(T) *)
Pat.var ~loc:ppat_loc {txt = label; loc = ppat_loc}
| _ -> pattern
in
let rec returnedExpression patternsWithLabel patternsWithNolabel
Expand Down Expand Up @@ -286160,11 +286155,6 @@ let mapBinding ~config ~emptyLoc ~pstr_loc ~fileName ~recFlag binding =
| [] -> Pat.any ()
| _ -> Pat.record (List.rev patternsWithLabel) Open
in
let recordPattern =
if hasDefaultValue namedArgList then
Pat.var {txt = "props"; loc = emptyLoc}
else recordPattern
in
let expression =
Exp.fun_ Nolabel None
(Pat.constraint_ recordPattern
Expand Down

0 comments on commit 8dc36f3

Please sign in to comment.