@@ -38,8 +38,6 @@ typed macro macro::let(lhs: macro::set-binding, rhs: lazy): lazy = (
3838);
3939
4040typed macro macro::lhs-index(base: lazy, index: lazy): lazy = (base; index);
41- typed macro macro::lhs-field(base: lazy, field: lazy): lazy = (base; field);
42- typed macro macro::lhs-field(base field1: macro::lhs-field, field2: lazy): lazy = (macro::concat($".", field1)(base); field2);
4341
4442typed macro macro::assign(tag-guard fields-guard: macro::lhs-tagged, rhs: lazy): Nil = (
4543 let uuid(term) = rhs;
@@ -60,10 +58,10 @@ typed macro macro::fallible-bind(lhs-base lhs-index: macro::lhs-index, rhs: lazy
6058);
6159
6260typed macro macro::assign(lhs-base lhs-field-name: macro::lhs-field, rhs: lazy): Nil = (
63- macro::concat($"set.", lhs-field-name)(lhs-base, rhs)
61+ macro::concat($"set.", lhs-field-name)(macro:: lhs-as-rhs(lhs- base) , rhs)
6462);
6563typed macro macro::fallible-bind(lhs-base lhs-field-name: macro::lhs-field, rhs: lazy): Bool = (
66- macro::concat($"set.", lhs-field-name)(lhs-base, rhs); true
64+ macro::concat($"set.", lhs-field-name)(macro:: lhs-as-rhs(lhs- base) , rhs); true
6765);
6866
6967typed macro macro::assign(lhs: macro::variable, rhs: lazy): Nil = (
@@ -103,17 +101,25 @@ typed macro macro::set(base index: macro::lhs-index, rhs: lazy): lazy = (
103101);
104102
105103typed macro macro::set(base field: macro::lhs-field, rhs: lazy): lazy = (
106- macro::concat($"set.", field) (base, rhs)
104+ macro::concat($"set.", field) (macro::lhs-as-rhs( base) , rhs)
107105);
108106
109107typed macro macro::lhs-as-rhs(v: macro::variable): lazy = (
110108 v
111109);
112110
111+ typed macro macro::lhs-as-rhs(base idx: macro::lhs-index): lazy = (
112+ macro::lhs-as-rhs(base)[idx]
113+ );
114+
113115typed macro macro::lhs-as-rhs(base: macro::lhs-address-of): lazy = (
114116 &v
115117);
116118
119+ typed macro macro::lhs-as-rhs(base field: macro::lhs-field): lazy = (
120+ macro::concat($".", field)(macro::lhs-as-rhs(base))
121+ );
122+
117123typed macro macro::lhs-address-of(base: lazy): lazy = (
118124 base
119125);
@@ -122,10 +128,6 @@ typed macro macro::lhs-field(base: lazy, field: lazy): lazy = (
122128 base; field
123129);
124130
125- typed macro macro::lhs-as-rhs(base field: macro::lhs-index): lazy = (
126- macro::concat(l".", field)(base)
127- );
128-
129131typed macro macro::lhs-index(base: lazy, index: lazy): lazy = (
130132 base; index
131133);
0 commit comments