| ... | ... | @@ -177,7 +177,6 @@ pub fn generate(gpa: Allocator, tree: Ast) Allocator.Error!Zir { |
| 177 | 177 | var gen_scope: GenZir = .{ |
| 178 | 178 | .is_comptime = true, |
| 179 | 179 | .parent = &top_scope.base, |
| 180 | | .anon_name_strategy = .parent, |
| 181 | 180 | .decl_node_index = .root, |
| 182 | 181 | .decl_line = 0, |
| 183 | 182 | .astgen = &astgen, |
| ... | ... | @@ -196,6 +195,7 @@ pub fn generate(gpa: Allocator, tree: Ast) Allocator.Error!Zir { |
| 196 | 195 | tree.containerDeclRoot(), |
| 197 | 196 | .auto, |
| 198 | 197 | .none, |
| 198 | .parent, |
| 199 | 199 | )) |struct_decl_ref| { |
| 200 | 200 | assert(struct_decl_ref.toIndex().? == .main_struct_inst); |
| 201 | 201 | break :fatal false; |
| ... | ... | @@ -640,12 +640,6 @@ fn expr(gz: *GenZir, scope: *Scope, ri: ResultInfo, node: Ast.Node.Index) InnerE |
| 640 | 640 | const astgen = gz.astgen; |
| 641 | 641 | const tree = astgen.tree; |
| 642 | 642 | |
| 643 | | const prev_anon_name_strategy = gz.anon_name_strategy; |
| 644 | | defer gz.anon_name_strategy = prev_anon_name_strategy; |
| 645 | | if (!nodeUsesAnonNameStrategy(tree, node)) { |
| 646 | | gz.anon_name_strategy = .anon; |
| 647 | | } |
| 648 | | |
| 649 | 643 | switch (tree.nodeTag(node)) { |
| 650 | 644 | .root => unreachable, // Top-level declaration. |
| 651 | 645 | .@"usingnamespace" => unreachable, // Top-level declaration. |
| ... | ... | @@ -1104,7 +1098,7 @@ fn expr(gz: *GenZir, scope: *Scope, ri: ResultInfo, node: Ast.Node.Index) InnerE |
| 1104 | 1098 | .tagged_union_two_trailing, |
| 1105 | 1099 | => { |
| 1106 | 1100 | var buf: [2]Ast.Node.Index = undefined; |
| 1107 | | return containerDecl(gz, scope, ri, node, tree.fullContainerDecl(&buf, node).?); |
| 1101 | return containerDecl(gz, scope, ri, node, tree.fullContainerDecl(&buf, node).?, .anon); |
| 1108 | 1102 | }, |
| 1109 | 1103 | |
| 1110 | 1104 | .@"break" => return breakExpr(gz, scope, node), |
| ... | ... | @@ -1162,6 +1156,53 @@ fn expr(gz: *GenZir, scope: *Scope, ri: ResultInfo, node: Ast.Node.Index) InnerE |
| 1162 | 1156 | } |
| 1163 | 1157 | } |
| 1164 | 1158 | |
| 1159 | /// When a name strategy other than `.anon` is available, for instance when analyzing the init expr |
| 1160 | /// of a variable declaration, try this function before `expr`/`comptimeExpr`/etc, so that the name |
| 1161 | /// strategy can be applied if necessary. If `null` is returned, then `node` does not consume a name |
| 1162 | /// strategy, and a normal evaluation function like `expr` should be used instead. Otherwise, `node` |
| 1163 | /// does consume a name strategy; the expression has been evaluated like `expr`, but using the given |
| 1164 | /// name strategy. |
| 1165 | fn nameStratExpr( |
| 1166 | gz: *GenZir, |
| 1167 | scope: *Scope, |
| 1168 | ri: ResultInfo, |
| 1169 | node: Ast.Node.Index, |
| 1170 | name_strat: Zir.Inst.NameStrategy, |
| 1171 | ) InnerError!?Zir.Inst.Ref { |
| 1172 | const astgen = gz.astgen; |
| 1173 | const tree = astgen.tree; |
| 1174 | switch (tree.nodeTag(node)) { |
| 1175 | .container_decl, |
| 1176 | .container_decl_trailing, |
| 1177 | .container_decl_two, |
| 1178 | .container_decl_two_trailing, |
| 1179 | .container_decl_arg, |
| 1180 | .container_decl_arg_trailing, |
| 1181 | .tagged_union, |
| 1182 | .tagged_union_trailing, |
| 1183 | .tagged_union_two, |
| 1184 | .tagged_union_two_trailing, |
| 1185 | .tagged_union_enum_tag, |
| 1186 | .tagged_union_enum_tag_trailing, |
| 1187 | => { |
| 1188 | var buf: [2]Ast.Node.Index = undefined; |
| 1189 | return try containerDecl(gz, scope, ri, node, tree.fullContainerDecl(&buf, node).?, name_strat); |
| 1190 | }, |
| 1191 | .builtin_call_two, |
| 1192 | .builtin_call_two_comma, |
| 1193 | => { |
| 1194 | const builtin_token = tree.nodeMainToken(node); |
| 1195 | const builtin_name = tree.tokenSlice(builtin_token); |
| 1196 | if (!std.mem.eql(u8, builtin_name, "@Type")) return null; |
| 1197 | var buf: [2]Ast.Node.Index = undefined; |
| 1198 | const params = tree.builtinCallParams(&buf, node).?; |
| 1199 | if (params.len != 1) return null; // let `builtinCall` error |
| 1200 | return try builtinReify(gz, scope, ri, node, params[0], name_strat); |
| 1201 | }, |
| 1202 | else => return null, |
| 1203 | } |
| 1204 | } |
| 1205 | |
| 1165 | 1206 | fn nosuspendExpr( |
| 1166 | 1207 | gz: *GenZir, |
| 1167 | 1208 | scope: *Scope, |
| ... | ... | @@ -3241,10 +3282,8 @@ fn varDecl( |
| 3241 | 3282 | .rl = .{ .ty = try typeExpr(gz, scope, type_node) }, |
| 3242 | 3283 | .ctx = .const_init, |
| 3243 | 3284 | } else .{ .rl = .none, .ctx = .const_init }; |
| 3244 | | const prev_anon_name_strategy = gz.anon_name_strategy; |
| 3245 | | gz.anon_name_strategy = .dbg_var; |
| 3246 | | const init_inst = try reachableExprComptime(gz, scope, result_info, init_node, node, if (force_comptime) .comptime_keyword else null); |
| 3247 | | gz.anon_name_strategy = prev_anon_name_strategy; |
| 3285 | const init_inst: Zir.Inst.Ref = try nameStratExpr(gz, scope, result_info, init_node, .dbg_var) orelse |
| 3286 | try reachableExprComptime(gz, scope, result_info, init_node, node, if (force_comptime) .comptime_keyword else null); |
| 3248 | 3287 | |
| 3249 | 3288 | _ = try gz.addUnNode(.validate_const, init_inst, init_node); |
| 3250 | 3289 | try gz.addDbgVar(.dbg_var_val, ident_name, init_inst); |
| ... | ... | @@ -3307,10 +3346,8 @@ fn varDecl( |
| 3307 | 3346 | }; |
| 3308 | 3347 | const init_result_info: ResultInfo = .{ .rl = init_rl, .ctx = .const_init }; |
| 3309 | 3348 | |
| 3310 | | const prev_anon_name_strategy = gz.anon_name_strategy; |
| 3311 | | gz.anon_name_strategy = .dbg_var; |
| 3312 | | defer gz.anon_name_strategy = prev_anon_name_strategy; |
| 3313 | | const init_inst = try reachableExprComptime(gz, scope, init_result_info, init_node, node, if (force_comptime) .comptime_keyword else null); |
| 3349 | const init_inst: Zir.Inst.Ref = try nameStratExpr(gz, scope, init_result_info, init_node, .dbg_var) orelse |
| 3350 | try reachableExprComptime(gz, scope, init_result_info, init_node, node, if (force_comptime) .comptime_keyword else null); |
| 3314 | 3351 | |
| 3315 | 3352 | // The const init expression may have modified the error return trace, so signal |
| 3316 | 3353 | // to Sema that it should save the new index for restoring later. |
| ... | ... | @@ -3380,9 +3417,13 @@ fn varDecl( |
| 3380 | 3417 | }; |
| 3381 | 3418 | break :a .{ alloc, true, .{ .rl = .{ .inferred_ptr = alloc } } }; |
| 3382 | 3419 | }; |
| 3383 | | const prev_anon_name_strategy = gz.anon_name_strategy; |
| 3384 | | gz.anon_name_strategy = .dbg_var; |
| 3385 | | _ = try reachableExprComptime( |
| 3420 | _ = try nameStratExpr( |
| 3421 | gz, |
| 3422 | scope, |
| 3423 | result_info, |
| 3424 | init_node, |
| 3425 | .dbg_var, |
| 3426 | ) orelse try reachableExprComptime( |
| 3386 | 3427 | gz, |
| 3387 | 3428 | scope, |
| 3388 | 3429 | result_info, |
| ... | ... | @@ -3390,7 +3431,6 @@ fn varDecl( |
| 3390 | 3431 | node, |
| 3391 | 3432 | if (var_decl.comptime_token != null) .comptime_keyword else null, |
| 3392 | 3433 | ); |
| 3393 | | gz.anon_name_strategy = prev_anon_name_strategy; |
| 3394 | 3434 | const final_ptr: Zir.Inst.Ref = if (resolve_inferred) ptr: { |
| 3395 | 3435 | break :ptr try gz.addUnNode(.resolve_inferred_alloc, alloc, node); |
| 3396 | 3436 | } else alloc; |
| ... | ... | @@ -4605,11 +4645,12 @@ fn globalVarDecl( |
| 4605 | 4645 | defer init_gz.unstack(); |
| 4606 | 4646 | |
| 4607 | 4647 | if (var_decl.ast.init_node.unwrap()) |init_node| { |
| 4608 | | init_gz.anon_name_strategy = .parent; |
| 4609 | 4648 | const init_ri: ResultInfo = if (var_decl.ast.type_node != .none) .{ |
| 4610 | 4649 | .rl = .{ .coerced_ty = decl_inst.toRef() }, |
| 4611 | 4650 | } else .{ .rl = .none }; |
| 4612 | | const init_inst = try expr(&init_gz, &init_gz.base, init_ri, init_node); |
| 4651 | const init_inst: Zir.Inst.Ref = try nameStratExpr(&init_gz, &init_gz.base, init_ri, init_node, .parent) orelse init: { |
| 4652 | break :init try expr(&init_gz, &init_gz.base, init_ri, init_node); |
| 4653 | }; |
| 4613 | 4654 | _ = try init_gz.addBreakWithSrcNode(.break_inline, decl_inst, init_inst, node); |
| 4614 | 4655 | } |
| 4615 | 4656 | |
| ... | ... | @@ -4986,6 +5027,7 @@ fn structDeclInner( |
| 4986 | 5027 | container_decl: Ast.full.ContainerDecl, |
| 4987 | 5028 | layout: std.builtin.Type.ContainerLayout, |
| 4988 | 5029 | backing_int_node: Ast.Node.OptionalIndex, |
| 5030 | name_strat: Zir.Inst.NameStrategy, |
| 4989 | 5031 | ) InnerError!Zir.Inst.Ref { |
| 4990 | 5032 | const astgen = gz.astgen; |
| 4991 | 5033 | const gpa = astgen.gpa; |
| ... | ... | @@ -5020,6 +5062,7 @@ fn structDeclInner( |
| 5020 | 5062 | .any_default_inits = false, |
| 5021 | 5063 | .any_aligned_fields = false, |
| 5022 | 5064 | .fields_hash = std.zig.hashSrc(@tagName(layout)), |
| 5065 | .name_strat = name_strat, |
| 5023 | 5066 | }); |
| 5024 | 5067 | return decl_inst.toRef(); |
| 5025 | 5068 | } |
| ... | ... | @@ -5216,6 +5259,7 @@ fn structDeclInner( |
| 5216 | 5259 | .any_default_inits = any_default_inits, |
| 5217 | 5260 | .any_aligned_fields = any_aligned_fields, |
| 5218 | 5261 | .fields_hash = fields_hash, |
| 5262 | .name_strat = name_strat, |
| 5219 | 5263 | }); |
| 5220 | 5264 | |
| 5221 | 5265 | wip_members.finishBits(bits_per_field); |
| ... | ... | @@ -5347,6 +5391,7 @@ fn unionDeclInner( |
| 5347 | 5391 | layout: std.builtin.Type.ContainerLayout, |
| 5348 | 5392 | opt_arg_node: Ast.Node.OptionalIndex, |
| 5349 | 5393 | auto_enum_tok: ?Ast.TokenIndex, |
| 5394 | name_strat: Zir.Inst.NameStrategy, |
| 5350 | 5395 | ) InnerError!Zir.Inst.Ref { |
| 5351 | 5396 | const decl_inst = try gz.reserveInstructionIndex(); |
| 5352 | 5397 | |
| ... | ... | @@ -5497,6 +5542,7 @@ fn unionDeclInner( |
| 5497 | 5542 | .auto_enum_tag = auto_enum_tok != null, |
| 5498 | 5543 | .any_aligned_fields = any_aligned_fields, |
| 5499 | 5544 | .fields_hash = fields_hash, |
| 5545 | .name_strat = name_strat, |
| 5500 | 5546 | }); |
| 5501 | 5547 | |
| 5502 | 5548 | wip_members.finishBits(bits_per_field); |
| ... | ... | @@ -5519,6 +5565,7 @@ fn containerDecl( |
| 5519 | 5565 | ri: ResultInfo, |
| 5520 | 5566 | node: Ast.Node.Index, |
| 5521 | 5567 | container_decl: Ast.full.ContainerDecl, |
| 5568 | name_strat: Zir.Inst.NameStrategy, |
| 5522 | 5569 | ) InnerError!Zir.Inst.Ref { |
| 5523 | 5570 | const astgen = gz.astgen; |
| 5524 | 5571 | const gpa = astgen.gpa; |
| ... | ... | @@ -5539,7 +5586,7 @@ fn containerDecl( |
| 5539 | 5586 | else => unreachable, |
| 5540 | 5587 | } else .auto; |
| 5541 | 5588 | |
| 5542 | | const result = try structDeclInner(gz, scope, node, container_decl, layout, container_decl.ast.arg); |
| 5589 | const result = try structDeclInner(gz, scope, node, container_decl, layout, container_decl.ast.arg, name_strat); |
| 5543 | 5590 | return rvalue(gz, ri, result, node); |
| 5544 | 5591 | }, |
| 5545 | 5592 | .keyword_union => { |
| ... | ... | @@ -5549,7 +5596,7 @@ fn containerDecl( |
| 5549 | 5596 | else => unreachable, |
| 5550 | 5597 | } else .auto; |
| 5551 | 5598 | |
| 5552 | | const result = try unionDeclInner(gz, scope, node, container_decl.ast.members, layout, container_decl.ast.arg, container_decl.ast.enum_token); |
| 5599 | const result = try unionDeclInner(gz, scope, node, container_decl.ast.members, layout, container_decl.ast.arg, container_decl.ast.enum_token, name_strat); |
| 5553 | 5600 | return rvalue(gz, ri, result, node); |
| 5554 | 5601 | }, |
| 5555 | 5602 | .keyword_enum => { |
| ... | ... | @@ -5758,6 +5805,7 @@ fn containerDecl( |
| 5758 | 5805 | .fields_len = @intCast(counts.total_fields), |
| 5759 | 5806 | .decls_len = @intCast(counts.decls), |
| 5760 | 5807 | .fields_hash = fields_hash, |
| 5808 | .name_strat = name_strat, |
| 5761 | 5809 | }); |
| 5762 | 5810 | |
| 5763 | 5811 | wip_members.finishBits(bits_per_field); |
| ... | ... | @@ -5819,6 +5867,7 @@ fn containerDecl( |
| 5819 | 5867 | .src_node = node, |
| 5820 | 5868 | .captures_len = @intCast(namespace.captures.count()), |
| 5821 | 5869 | .decls_len = decl_count, |
| 5870 | .name_strat = name_strat, |
| 5822 | 5871 | }); |
| 5823 | 5872 | |
| 5824 | 5873 | wip_members.finishBits(0); |
| ... | ... | @@ -8207,10 +8256,8 @@ fn ret(gz: *GenZir, scope: *Scope, node: Ast.Node.Index) InnerError!Zir.Inst.Ref |
| 8207 | 8256 | .rl = .{ .coerced_ty = astgen.fn_ret_ty }, |
| 8208 | 8257 | .ctx = .@"return", |
| 8209 | 8258 | }; |
| 8210 | | const prev_anon_name_strategy = gz.anon_name_strategy; |
| 8211 | | gz.anon_name_strategy = .func; |
| 8212 | | const operand = try reachableExpr(gz, scope, ri, operand_node, node); |
| 8213 | | gz.anon_name_strategy = prev_anon_name_strategy; |
| 8259 | const operand: Zir.Inst.Ref = try nameStratExpr(gz, scope, ri, operand_node, .func) orelse |
| 8260 | try reachableExpr(gz, scope, ri, operand_node, node); |
| 8214 | 8261 | |
| 8215 | 8262 | switch (nodeMayEvalToError(tree, operand_node)) { |
| 8216 | 8263 | .never => { |
| ... | ... | @@ -9472,31 +9519,7 @@ fn builtinCall( |
| 9472 | 9519 | }, |
| 9473 | 9520 | |
| 9474 | 9521 | .Type => { |
| 9475 | | const type_info_ty = try gz.addBuiltinValue(node, .type_info); |
| 9476 | | const operand = try expr(gz, scope, .{ .rl = .{ .coerced_ty = type_info_ty } }, params[0]); |
| 9477 | | |
| 9478 | | const gpa = gz.astgen.gpa; |
| 9479 | | |
| 9480 | | try gz.instructions.ensureUnusedCapacity(gpa, 1); |
| 9481 | | try gz.astgen.instructions.ensureUnusedCapacity(gpa, 1); |
| 9482 | | |
| 9483 | | const payload_index = try gz.astgen.addExtra(Zir.Inst.Reify{ |
| 9484 | | .node = node, // Absolute node index -- see the definition of `Reify`. |
| 9485 | | .operand = operand, |
| 9486 | | .src_line = astgen.source_line, |
| 9487 | | }); |
| 9488 | | const new_index: Zir.Inst.Index = @enumFromInt(gz.astgen.instructions.len); |
| 9489 | | gz.astgen.instructions.appendAssumeCapacity(.{ |
| 9490 | | .tag = .extended, |
| 9491 | | .data = .{ .extended = .{ |
| 9492 | | .opcode = .reify, |
| 9493 | | .small = @intFromEnum(gz.anon_name_strategy), |
| 9494 | | .operand = payload_index, |
| 9495 | | } }, |
| 9496 | | }); |
| 9497 | | gz.instructions.appendAssumeCapacity(new_index); |
| 9498 | | const result = new_index.toRef(); |
| 9499 | | return rvalue(gz, ri, result, node); |
| 9522 | return builtinReify(gz, scope, ri, node, params[0], .anon); |
| 9500 | 9523 | }, |
| 9501 | 9524 | .panic => { |
| 9502 | 9525 | try emitDbgNode(gz, node); |
| ... | ... | @@ -9827,6 +9850,41 @@ fn builtinCall( |
| 9827 | 9850 | }, |
| 9828 | 9851 | } |
| 9829 | 9852 | } |
| 9853 | fn builtinReify( |
| 9854 | gz: *GenZir, |
| 9855 | scope: *Scope, |
| 9856 | ri: ResultInfo, |
| 9857 | node: Ast.Node.Index, |
| 9858 | arg_node: Ast.Node.Index, |
| 9859 | name_strat: Zir.Inst.NameStrategy, |
| 9860 | ) InnerError!Zir.Inst.Ref { |
| 9861 | const astgen = gz.astgen; |
| 9862 | const gpa = astgen.gpa; |
| 9863 | |
| 9864 | const type_info_ty = try gz.addBuiltinValue(node, .type_info); |
| 9865 | const operand = try expr(gz, scope, .{ .rl = .{ .coerced_ty = type_info_ty } }, arg_node); |
| 9866 | |
| 9867 | try gz.instructions.ensureUnusedCapacity(gpa, 1); |
| 9868 | try astgen.instructions.ensureUnusedCapacity(gpa, 1); |
| 9869 | |
| 9870 | const payload_index = try astgen.addExtra(Zir.Inst.Reify{ |
| 9871 | .node = node, // Absolute node index -- see the definition of `Reify`. |
| 9872 | .operand = operand, |
| 9873 | .src_line = astgen.source_line, |
| 9874 | }); |
| 9875 | const new_index: Zir.Inst.Index = @enumFromInt(astgen.instructions.len); |
| 9876 | astgen.instructions.appendAssumeCapacity(.{ |
| 9877 | .tag = .extended, |
| 9878 | .data = .{ .extended = .{ |
| 9879 | .opcode = .reify, |
| 9880 | .small = @intFromEnum(name_strat), |
| 9881 | .operand = payload_index, |
| 9882 | } }, |
| 9883 | }); |
| 9884 | gz.instructions.appendAssumeCapacity(new_index); |
| 9885 | const result = new_index.toRef(); |
| 9886 | return rvalue(gz, ri, result, node); |
| 9887 | } |
| 9830 | 9888 | |
| 9831 | 9889 | fn hasDeclOrField( |
| 9832 | 9890 | gz: *GenZir, |
| ... | ... | @@ -11087,31 +11145,6 @@ fn nodeImpliesComptimeOnly(tree: *const Ast, start_node: Ast.Node.Index) bool { |
| 11087 | 11145 | } |
| 11088 | 11146 | } |
| 11089 | 11147 | |
| 11090 | | /// Returns `true` if the node uses `gz.anon_name_strategy`. |
| 11091 | | fn nodeUsesAnonNameStrategy(tree: *const Ast, node: Ast.Node.Index) bool { |
| 11092 | | switch (tree.nodeTag(node)) { |
| 11093 | | .container_decl, |
| 11094 | | .container_decl_trailing, |
| 11095 | | .container_decl_two, |
| 11096 | | .container_decl_two_trailing, |
| 11097 | | .container_decl_arg, |
| 11098 | | .container_decl_arg_trailing, |
| 11099 | | .tagged_union, |
| 11100 | | .tagged_union_trailing, |
| 11101 | | .tagged_union_two, |
| 11102 | | .tagged_union_two_trailing, |
| 11103 | | .tagged_union_enum_tag, |
| 11104 | | .tagged_union_enum_tag_trailing, |
| 11105 | | => return true, |
| 11106 | | .builtin_call_two, .builtin_call_two_comma, .builtin_call, .builtin_call_comma => { |
| 11107 | | const builtin_token = tree.nodeMainToken(node); |
| 11108 | | const builtin_name = tree.tokenSlice(builtin_token); |
| 11109 | | return std.mem.eql(u8, builtin_name, "@Type"); |
| 11110 | | }, |
| 11111 | | else => return false, |
| 11112 | | } |
| 11113 | | } |
| 11114 | | |
| 11115 | 11148 | /// Applies `rl` semantics to `result`. Expressions which do not do their own handling of |
| 11116 | 11149 | /// result locations must call this function on their result. |
| 11117 | 11150 | /// As an example, if `ri.rl` is `.ptr`, it will write the result to the pointer. |
| ... | ... | @@ -11875,8 +11908,6 @@ const GenZir = struct { |
| 11875 | 11908 | /// exits from this block should use `break_inline` rather than `break`. |
| 11876 | 11909 | is_inline: bool = false, |
| 11877 | 11910 | c_import: bool = false, |
| 11878 | | /// How decls created in this scope should be named. |
| 11879 | | anon_name_strategy: Zir.Inst.NameStrategy = .anon, |
| 11880 | 11911 | /// The containing decl AST node. |
| 11881 | 11912 | decl_node_index: Ast.Node.Index, |
| 11882 | 11913 | /// The containing decl line index, absolute. |
| ... | ... | @@ -13043,6 +13074,7 @@ const GenZir = struct { |
| 13043 | 13074 | any_default_inits: bool, |
| 13044 | 13075 | any_aligned_fields: bool, |
| 13045 | 13076 | fields_hash: std.zig.SrcHash, |
| 13077 | name_strat: Zir.Inst.NameStrategy, |
| 13046 | 13078 | }) !void { |
| 13047 | 13079 | const astgen = gz.astgen; |
| 13048 | 13080 | const gpa = astgen.gpa; |
| ... | ... | @@ -13082,7 +13114,7 @@ const GenZir = struct { |
| 13082 | 13114 | .has_backing_int = args.has_backing_int, |
| 13083 | 13115 | .known_non_opv = args.known_non_opv, |
| 13084 | 13116 | .known_comptime_only = args.known_comptime_only, |
| 13085 | | .name_strategy = gz.anon_name_strategy, |
| 13117 | .name_strategy = args.name_strat, |
| 13086 | 13118 | .layout = args.layout, |
| 13087 | 13119 | .any_comptime_fields = args.any_comptime_fields, |
| 13088 | 13120 | .any_default_inits = args.any_default_inits, |
| ... | ... | @@ -13104,6 +13136,7 @@ const GenZir = struct { |
| 13104 | 13136 | auto_enum_tag: bool, |
| 13105 | 13137 | any_aligned_fields: bool, |
| 13106 | 13138 | fields_hash: std.zig.SrcHash, |
| 13139 | name_strat: Zir.Inst.NameStrategy, |
| 13107 | 13140 | }) !void { |
| 13108 | 13141 | const astgen = gz.astgen; |
| 13109 | 13142 | const gpa = astgen.gpa; |
| ... | ... | @@ -13147,7 +13180,7 @@ const GenZir = struct { |
| 13147 | 13180 | .has_body_len = args.body_len != 0, |
| 13148 | 13181 | .has_fields_len = args.fields_len != 0, |
| 13149 | 13182 | .has_decls_len = args.decls_len != 0, |
| 13150 | | .name_strategy = gz.anon_name_strategy, |
| 13183 | .name_strategy = args.name_strat, |
| 13151 | 13184 | .layout = args.layout, |
| 13152 | 13185 | .auto_enum_tag = args.auto_enum_tag, |
| 13153 | 13186 | .any_aligned_fields = args.any_aligned_fields, |
| ... | ... | @@ -13166,6 +13199,7 @@ const GenZir = struct { |
| 13166 | 13199 | decls_len: u32, |
| 13167 | 13200 | nonexhaustive: bool, |
| 13168 | 13201 | fields_hash: std.zig.SrcHash, |
| 13202 | name_strat: Zir.Inst.NameStrategy, |
| 13169 | 13203 | }) !void { |
| 13170 | 13204 | const astgen = gz.astgen; |
| 13171 | 13205 | const gpa = astgen.gpa; |
| ... | ... | @@ -13209,7 +13243,7 @@ const GenZir = struct { |
| 13209 | 13243 | .has_body_len = args.body_len != 0, |
| 13210 | 13244 | .has_fields_len = args.fields_len != 0, |
| 13211 | 13245 | .has_decls_len = args.decls_len != 0, |
| 13212 | | .name_strategy = gz.anon_name_strategy, |
| 13246 | .name_strategy = args.name_strat, |
| 13213 | 13247 | .nonexhaustive = args.nonexhaustive, |
| 13214 | 13248 | }), |
| 13215 | 13249 | .operand = payload_index, |
| ... | ... | @@ -13221,6 +13255,7 @@ const GenZir = struct { |
| 13221 | 13255 | src_node: Ast.Node.Index, |
| 13222 | 13256 | captures_len: u32, |
| 13223 | 13257 | decls_len: u32, |
| 13258 | name_strat: Zir.Inst.NameStrategy, |
| 13224 | 13259 | }) !void { |
| 13225 | 13260 | const astgen = gz.astgen; |
| 13226 | 13261 | const gpa = astgen.gpa; |
| ... | ... | @@ -13246,7 +13281,7 @@ const GenZir = struct { |
| 13246 | 13281 | .small = @bitCast(Zir.Inst.OpaqueDecl.Small{ |
| 13247 | 13282 | .has_captures_len = args.captures_len != 0, |
| 13248 | 13283 | .has_decls_len = args.decls_len != 0, |
| 13249 | | .name_strategy = gz.anon_name_strategy, |
| 13284 | .name_strategy = args.name_strat, |
| 13250 | 13285 | }), |
| 13251 | 13286 | .operand = payload_index, |
| 13252 | 13287 | } }, |