| ... | @@ -2048,29 +2048,38 @@ fn renderNode(c: *Context, node: Node) Allocator.Error!NodeIndex { | ... | @@ -2048,29 +2048,38 @@ fn renderNode(c: *Context, node: Node) Allocator.Error!NodeIndex { |
| 2048 | } | 2048 | } |
| 2049 | _ = try c.addToken(.r_brace, "}"); | 2049 | _ = try c.addToken(.r_brace, "}"); |
| 2050 | | 2050 | |
| 2051 | if (payload.inits.len < 2) { | 2051 | return switch (payload.inits.len) { |
| 2052 | return c.addNode(.{ | 2052 | 0 => c.addNode(.{ |
| 2053 | .tag = .struct_init_one_comma, | 2053 | .tag = .struct_init_one, |
| 2054 | .main_token = l_brace, | 2054 | .main_token = l_brace, |
| 2055 | .data = .{ | 2055 | .data = .{ |
| 2056 | .lhs = lhs, | 2056 | .lhs = lhs, |
| 2057 | .rhs = inits[0], | 2057 | .rhs = 0, |
| 2058 | }, | 2058 | }, |
| 2059 | }); | 2059 | }), |
| 2060 | } else { | 2060 | 1 => c.addNode(.{ |
| 2061 | const span = try c.listToSpan(inits); | 2061 | .tag = .struct_init_one_comma, |
| 2062 | return c.addNode(.{ | | |
| 2063 | .tag = .struct_init_comma, | | |
| 2064 | .main_token = l_brace, | 2062 | .main_token = l_brace, |
| 2065 | .data = .{ | 2063 | .data = .{ |
| 2066 | .lhs = lhs, | 2064 | .lhs = lhs, |
| 2067 | .rhs = try c.addExtra(NodeSubRange{ | 2065 | .rhs = inits[0], |
| 2068 | .start = span.start, | | |
| 2069 | .end = span.end, | | |
| 2070 | }), | | |
| 2071 | }, | 2066 | }, |
| 2072 | }); | 2067 | }), |
| 2073 | } | 2068 | else => blk: { |
| | 2069 | const span = try c.listToSpan(inits); |
| | 2070 | break :blk c.addNode(.{ |
| | 2071 | .tag = .struct_init_comma, |
| | 2072 | .main_token = l_brace, |
| | 2073 | .data = .{ |
| | 2074 | .lhs = lhs, |
| | 2075 | .rhs = try c.addExtra(NodeSubRange{ |
| | 2076 | .start = span.start, |
| | 2077 | .end = span.end, |
| | 2078 | }), |
| | 2079 | }, |
| | 2080 | }); |
| | 2081 | }, |
| | 2082 | }; |
| 2074 | }, | 2083 | }, |
| 2075 | .@"anytype" => unreachable, // Handled in renderParams | 2084 | .@"anytype" => unreachable, // Handled in renderParams |
| 2076 | } | 2085 | } |