Implement &foo record updater syntax sugar

This commit is contained in:
Sam Mohr 2024-08-16 01:41:59 -07:00
parent a14a110293
commit b1a972ab21
No known key found for this signature in database
GPG key ID: EA41D161A3C1BC99
22 changed files with 302 additions and 41 deletions

View file

@ -0,0 +1,5 @@
data =
{ x: 5, y: 0 }
|> &y 3
data

View file

@ -0,0 +1,86 @@
SpaceAfter(
Defs(
Defs {
tags: [
Index(2147483648),
],
regions: [
@0-42,
],
space_before: [
Slice(start = 0, length = 0),
],
space_after: [
Slice(start = 0, length = 0),
],
spaces: [],
type_defs: [],
value_defs: [
Body(
@0-4 Identifier {
ident: "data",
},
@11-42 SpaceBefore(
BinOps(
[
(
@11-25 SpaceAfter(
Record(
[
@13-17 RequiredValue(
@13-14 "x",
[],
@16-17 Num(
"5",
),
),
@19-23 RequiredValue(
@19-20 "y",
[],
@22-23 Num(
"0",
),
),
],
),
[
Newline,
],
),
@34-36 Pizza,
),
],
@37-42 Apply(
@37-39 RecordUpdater(
"y",
),
[
@41-42 Num(
"3",
),
],
Space,
),
),
[
Newline,
],
),
),
],
},
@44-48 SpaceBefore(
Var {
module_name: "",
ident: "data",
},
[
Newline,
Newline,
],
),
),
[
Newline,
],
)

View file

@ -0,0 +1,5 @@
data =
{ x: 5, y: 0 }
|> &y 3
data

View file

@ -0,0 +1,20 @@
SpaceAfter(
Apply(
@0-3 Var {
module_name: "",
ident: "foo",
},
[
@3-7 RecordUpdater(
"bar",
),
@9-10 Num(
"5",
),
],
Space,
),
[
Newline,
],
)

View file

@ -455,6 +455,8 @@ mod test_snapshots {
pass/record_func_type_decl.expr,
pass/record_type_with_function.expr,
pass/record_update.expr,
pass/record_updater_literal_apply.expr,
pass/record_updater_var_apply.expr,
pass/record_with_if.expr,
pass/requires_type.header,
pass/separate_defs.moduledefs,