+6
-1
compiler-core/src/erlang.rs
+6
-1
compiler-core/src/erlang.rs
···
1986
1986
1987
1987
fn needs_begin_end_wrapping(expression: &TypedExpr) -> bool {
1988
1988
match expression {
1989
-
TypedExpr::RecordUpdate { .. } | TypedExpr::Pipeline { .. } => true,
1989
+
// Record updates are 1 expression if there's no assignment, multiple otherwise.
1990
+
TypedExpr::RecordUpdate {
1991
+
record_assignment, ..
1992
+
} => record_assignment.is_some(),
1993
+
1994
+
TypedExpr::Pipeline { .. } => true,
1990
1995
1991
1996
TypedExpr::Int { .. }
1992
1997
| TypedExpr::Float { .. }
+1
-6
compiler-core/src/erlang/tests/snapshots/gleam_core__erlang__tests__echo__record_update_printed_by_echo_is_wrapped_in_begin_end_block.snap
+1
-6
compiler-core/src/erlang/tests/snapshots/gleam_core__erlang__tests__echo__record_update_printed_by_echo_is_wrapped_in_begin_end_block.snap
···
27
27
-spec main() -> wobble().
28
28
main() ->
29
29
Wobble = {wobble, 1, <<"wobble"/utf8>>},
30
-
echo(
31
-
begin
32
-
{wobble, 1, erlang:element(3, Wobble)}
33
-
end,
34
-
6
35
-
).
30
+
echo({wobble, 1, erlang:element(3, Wobble)}, 6).
36
31
37
32
% ...omitted code from `templates/echo.erl`...
+1
-3
compiler-core/src/erlang/tests/snapshots/gleam_core__erlang__tests__records__record_updates.snap
+1
-3
compiler-core/src/erlang/tests/snapshots/gleam_core__erlang__tests__records__record_updates.snap
+1
-3
compiler-core/src/erlang/tests/snapshots/gleam_core__erlang__tests__records__record_updates1.snap
+1
-3
compiler-core/src/erlang/tests/snapshots/gleam_core__erlang__tests__records__record_updates1.snap
+1
-3
compiler-core/src/erlang/tests/snapshots/gleam_core__erlang__tests__records__record_updates2.snap
+1
-3
compiler-core/src/erlang/tests/snapshots/gleam_core__erlang__tests__records__record_updates2.snap
+8
-2
compiler-core/src/javascript/expression.rs
+8
-2
compiler-core/src/javascript/expression.rs
···
621
621
| TypedExpr::Todo { .. }
622
622
| TypedExpr::Case { .. }
623
623
| TypedExpr::Pipeline { .. }
624
-
| TypedExpr::RecordUpdate { .. },
624
+
| TypedExpr::RecordUpdate {
625
+
record_assignment: Some(_),
626
+
..
627
+
},
625
628
Position::NotTail(Ordering::Loose),
626
629
) => self.wrap_block(|this| this.expression(expression)),
627
630
(
···
629
632
| TypedExpr::Todo { .. }
630
633
| TypedExpr::Case { .. }
631
634
| TypedExpr::Pipeline { .. }
632
-
| TypedExpr::RecordUpdate { .. },
635
+
| TypedExpr::RecordUpdate {
636
+
record_assignment: Some(_),
637
+
..
638
+
},
633
639
Position::NotTail(Ordering::Strict),
634
640
) => self.immediately_invoked_function_expression(expression, |this, expr| {
635
641
this.expression(expr)
+2
-6
compiler-core/src/javascript/tests/snapshots/gleam_core__javascript__tests__case__record_update_in_pipeline_in_case_clause.snap
+2
-6
compiler-core/src/javascript/tests/snapshots/gleam_core__javascript__tests__case__record_update_in_pipeline_in_case_clause.snap
···
43
43
export function go(x) {
44
44
let $ = x.wibble;
45
45
if ($ === 1) {
46
-
let _block;
47
-
_block = new Wibble(4, x.wobble);
48
-
let _pipe = _block;
46
+
let _pipe = new Wibble(4, x.wobble);
49
47
return identity(_pipe);
50
48
} else {
51
49
let $1 = x.wobble;
52
50
if ($1 === 3) {
53
-
let _block;
54
-
_block = new Wibble(x.wibble, 10);
55
-
let _pipe = _block;
51
+
let _pipe = new Wibble(x.wibble, 10);
56
52
return identity(_pipe);
57
53
} else {
58
54
throw makeError(
+1
-3
compiler-core/src/javascript/tests/snapshots/gleam_core__javascript__tests__custom_types__record_with_field_named_constructor.snap
+1
-3
compiler-core/src/javascript/tests/snapshots/gleam_core__javascript__tests__custom_types__record_with_field_named_constructor.snap
+1
-3
compiler-core/src/javascript/tests/snapshots/gleam_core__javascript__tests__custom_types__record_with_field_named_then.snap
+1
-3
compiler-core/src/javascript/tests/snapshots/gleam_core__javascript__tests__custom_types__record_with_field_named_then.snap