File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -103,8 +103,10 @@ fn (mut g Gen) assign_stmt(node_ ast.AssignStmt) {
103103 mut return_type := ast.void_type
104104 is_decl := node.op == .decl_assign
105105 g.assign_op = node.op
106+ g.inside_assign = true
106107 defer {
107108 g.assign_op = .unknown
109+ g.inside_assign = false
108110 }
109111 op := if is_decl { token.Kind.assign } else { node.op }
110112 right_expr := node.right[0 ]
Original file line number Diff line number Diff line change 120120 inside_ternary int // ?: comma separated statements on a single line
121121 inside_map_postfix bool // inside map++/-- postfix expr
122122 inside_map_infix bool // inside map<</+=/-= infix expr
123+ inside_assign bool
123124 inside_map_index bool
124125 inside_opt_or_res bool
125126 inside_opt_data bool
@@ -4123,7 +4124,7 @@ fn (mut g Gen) ident(node ast.Ident) {
41234124 styp := g.base_type (node.info.typ)
41244125 g.write ('(*(${styp} *)${name} .data)' )
41254126 }
4126- if node.or_expr.kind != .absent {
4127+ if node.or_expr.kind != .absent && ! (g.inside_assign && ! g.is_assign_lhs) {
41274128 stmt_str := g.go_before_stmt (0 ).trim_space ()
41284129 g.empty_line = true
41294130 g.or_block (name, node.or_expr, node.info.typ)
Original file line number Diff line number Diff line change @@ -15,10 +15,12 @@ fn test_option_var() {
1515 assert true
1616 }
1717
18+ mut counter := 0
1819 val := other or {
19- println ( 'without name' )
20+ counter ++
2021 'default'
2122 }
2223
2324 assert val == 'default'
25+ assert counter == 1
2426}
You can’t perform that action at this time.
0 commit comments