| author | |
| committer | |
| log | 3bd62e1bb62f4f490aeaa68c3cbf9c6c09c40726 |
| tree | 6d86cbef38241714677bfe50848378657af63d0a |
| parent | d00aee021befe7555a30854e777358eb98ce549a |
point at the var not at the init expression6 files changed, 36 insertions(+), 34 deletions(-)
src/Sema.zig+13-13| ... | ... | @@ -3756,9 +3756,9 @@ fn zirAllocExtended( |
| 3756 | 3756 | const pt = sema.pt; |
| 3757 | 3757 | const gpa = sema.gpa; |
| 3758 | 3758 | const extra = sema.code.extraData(Zir.Inst.AllocExtended, extended.operand); |
| 3759 | const var_src = block.nodeOffset(extra.data.src_node); | |
| 3759 | 3760 | const ty_src = block.src(.{ .node_offset_var_decl_ty = extra.data.src_node }); |
| 3760 | 3761 | const align_src = block.src(.{ .node_offset_var_decl_align = extra.data.src_node }); |
| 3761 | const init_src = block.src(.{ .node_offset_var_decl_init = extra.data.src_node }); | |
| 3762 | 3762 | const small: Zir.Inst.AllocExtended.Small = @bitCast(extended.small); |
| 3763 | 3763 | |
| 3764 | 3764 | var extra_index: usize = extra.end; |
| ... | ... | @@ -3777,7 +3777,7 @@ fn zirAllocExtended( |
| 3777 | 3777 | |
| 3778 | 3778 | if (block.isComptime() or small.is_comptime) { |
| 3779 | 3779 | if (small.has_type) { |
| 3780 | return sema.analyzeComptimeAlloc(block, init_src, var_ty, alignment); | |
| 3780 | return sema.analyzeComptimeAlloc(block, var_src, var_ty, alignment); | |
| 3781 | 3781 | } else { |
| 3782 | 3782 | try sema.air_instructions.append(gpa, .{ |
| 3783 | 3783 | .tag = .inferred_alloc_comptime, |
| ... | ... | @@ -3792,7 +3792,7 @@ fn zirAllocExtended( |
| 3792 | 3792 | } |
| 3793 | 3793 | |
| 3794 | 3794 | if (small.has_type and try var_ty.comptimeOnlySema(pt)) { |
| 3795 | return sema.analyzeComptimeAlloc(block, init_src, var_ty, alignment); | |
| 3795 | return sema.analyzeComptimeAlloc(block, var_src, var_ty, alignment); | |
| 3796 | 3796 | } |
| 3797 | 3797 | |
| 3798 | 3798 | if (small.has_type) { |
| ... | ... | @@ -3802,8 +3802,8 @@ fn zirAllocExtended( |
| 3802 | 3802 | const target = pt.zcu.getTarget(); |
| 3803 | 3803 | try var_ty.resolveLayout(pt); |
| 3804 | 3804 | if (sema.func_is_naked and try var_ty.hasRuntimeBitsSema(pt)) { |
| 3805 | const var_src = block.src(.{ .node_offset_store_ptr = extra.data.src_node }); | |
| 3806 | return sema.fail(block, var_src, "local variable in naked function", .{}); | |
| 3805 | const store_src = block.src(.{ .node_offset_store_ptr = extra.data.src_node }); | |
| 3806 | return sema.fail(block, store_src, "local variable in naked function", .{}); | |
| 3807 | 3807 | } |
| 3808 | 3808 | const ptr_type = try sema.pt.ptrTypeSema(.{ |
| 3809 | 3809 | .child = var_ty.toIntern(), |
| ... | ... | @@ -3842,9 +3842,9 @@ fn zirAllocComptime(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileErr |
| 3842 | 3842 | |
| 3843 | 3843 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 3844 | 3844 | const ty_src = block.src(.{ .node_offset_var_decl_ty = inst_data.src_node }); |
| 3845 | const init_src = block.src(.{ .node_offset_var_decl_init = inst_data.src_node }); | |
| 3845 | const var_src = block.nodeOffset(inst_data.src_node); | |
| 3846 | 3846 | const var_ty = try sema.resolveType(block, ty_src, inst_data.operand); |
| 3847 | return sema.analyzeComptimeAlloc(block, init_src, var_ty, .none); | |
| 3847 | return sema.analyzeComptimeAlloc(block, var_src, var_ty, .none); | |
| 3848 | 3848 | } |
| 3849 | 3849 | |
| 3850 | 3850 | fn zirMakePtrConst(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Inst.Ref { |
| ... | ... | @@ -4254,11 +4254,11 @@ fn zirAlloc(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.I |
| 4254 | 4254 | |
| 4255 | 4255 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 4256 | 4256 | const ty_src = block.src(.{ .node_offset_var_decl_ty = inst_data.src_node }); |
| 4257 | const init_src = block.src(.{ .node_offset_var_decl_init = inst_data.src_node }); | |
| 4257 | const var_src = block.nodeOffset(inst_data.src_node); | |
| 4258 | 4258 | |
| 4259 | 4259 | const var_ty = try sema.resolveType(block, ty_src, inst_data.operand); |
| 4260 | 4260 | if (block.isComptime() or try var_ty.comptimeOnlySema(pt)) { |
| 4261 | return sema.analyzeComptimeAlloc(block, init_src, var_ty, .none); | |
| 4261 | return sema.analyzeComptimeAlloc(block, var_src, var_ty, .none); | |
| 4262 | 4262 | } |
| 4263 | 4263 | if (sema.func_is_naked and try var_ty.hasRuntimeBitsSema(pt)) { |
| 4264 | 4264 | const mut_src = block.src(.{ .node_offset_store_ptr = inst_data.src_node }); |
| ... | ... | @@ -4284,14 +4284,14 @@ fn zirAllocMut(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai |
| 4284 | 4284 | |
| 4285 | 4285 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 4286 | 4286 | const ty_src = block.src(.{ .node_offset_var_decl_ty = inst_data.src_node }); |
| 4287 | const init_src = block.src(.{ .node_offset_var_decl_init = inst_data.src_node }); | |
| 4287 | const var_src = block.nodeOffset(inst_data.src_node); | |
| 4288 | 4288 | const var_ty = try sema.resolveType(block, ty_src, inst_data.operand); |
| 4289 | 4289 | if (block.isComptime()) { |
| 4290 | return sema.analyzeComptimeAlloc(block, init_src, var_ty, .none); | |
| 4290 | return sema.analyzeComptimeAlloc(block, var_src, var_ty, .none); | |
| 4291 | 4291 | } |
| 4292 | 4292 | if (sema.func_is_naked and try var_ty.hasRuntimeBitsSema(pt)) { |
| 4293 | const var_src = block.src(.{ .node_offset_store_ptr = inst_data.src_node }); | |
| 4294 | return sema.fail(block, var_src, "local variable in naked function", .{}); | |
| 4293 | const store_src = block.src(.{ .node_offset_store_ptr = inst_data.src_node }); | |
| 4294 | return sema.fail(block, store_src, "local variable in naked function", .{}); | |
| 4295 | 4295 | } |
| 4296 | 4296 | try sema.validateVarType(block, ty_src, var_ty, false); |
| 4297 | 4297 | const target = pt.zcu.getTarget(); |
test/cases/compile_errors/comptime_var_referenced_at_runtime.zig+10-10| ... | ... | @@ -75,31 +75,31 @@ export fn bax() void { |
| 75 | 75 | // |
| 76 | 76 | // :5:19: error: runtime value contains reference to comptime var |
| 77 | 77 | // :5:19: note: comptime var pointers are not available at runtime |
| 78 | // :4:27: note: 'runtime_value' points to comptime var declared here | |
| 78 | // :4:14: note: 'runtime_value' points to comptime var declared here | |
| 79 | 79 | // :12:40: error: runtime value contains reference to comptime var |
| 80 | 80 | // :12:40: note: comptime var pointers are not available at runtime |
| 81 | // :11:27: note: 'runtime_value' points to comptime var declared here | |
| 81 | // :11:14: note: 'runtime_value' points to comptime var declared here | |
| 82 | 82 | // :19:50: error: runtime value contains reference to comptime var |
| 83 | 83 | // :19:50: note: comptime var pointers are not available at runtime |
| 84 | // :18:27: note: 'runtime_value' points to comptime var declared here | |
| 84 | // :18:14: note: 'runtime_value' points to comptime var declared here | |
| 85 | 85 | // :28:9: error: runtime value contains reference to comptime var |
| 86 | 86 | // :28:9: note: comptime var pointers are not available at runtime |
| 87 | // :27:27: note: 'runtime_value' points to comptime var declared here | |
| 87 | // :27:14: note: 'runtime_value' points to comptime var declared here | |
| 88 | 88 | // :36:9: error: runtime value contains reference to comptime var |
| 89 | 89 | // :36:9: note: comptime var pointers are not available at runtime |
| 90 | // :35:27: note: 'runtime_value' points to comptime var declared here | |
| 90 | // :35:14: note: 'runtime_value' points to comptime var declared here | |
| 91 | 91 | // :41:12: error: runtime value contains reference to comptime var |
| 92 | 92 | // :41:12: note: comptime var pointers are not available at runtime |
| 93 | // :40:27: note: 'runtime_value' points to comptime var declared here | |
| 93 | // :40:14: note: 'runtime_value' points to comptime var declared here | |
| 94 | 94 | // :46:39: error: runtime value contains reference to comptime var |
| 95 | 95 | // :46:39: note: comptime var pointers are not available at runtime |
| 96 | // :45:27: note: 'runtime_value' points to comptime var declared here | |
| 96 | // :45:14: note: 'runtime_value' points to comptime var declared here | |
| 97 | 97 | // :55:18: error: runtime value contains reference to comptime var |
| 98 | 98 | // :55:18: note: comptime var pointers are not available at runtime |
| 99 | // :51:30: note: 'runtime_value' points to comptime var declared here | |
| 99 | // :51:14: note: 'runtime_value' points to comptime var declared here | |
| 100 | 100 | // :63:18: error: runtime value contains reference to comptime var |
| 101 | 101 | // :63:18: note: comptime var pointers are not available at runtime |
| 102 | // :59:27: note: 'runtime_value' points to comptime var declared here | |
| 102 | // :59:14: note: 'runtime_value' points to comptime var declared here | |
| 103 | 103 | // :71:19: error: runtime value contains reference to comptime var |
| 104 | 104 | // :71:19: note: comptime var pointers are not available at runtime |
| 105 | // :67:30: note: 'runtime_value' points to comptime var declared here | |
| 105 | // :67:14: note: 'runtime_value' points to comptime var declared here |
test/cases/compile_errors/comptime_var_referenced_by_decl.zig+8-8| ... | ... | @@ -47,19 +47,19 @@ export var h: *[1]u32 = h: { |
| 47 | 47 | // error |
| 48 | 48 | // |
| 49 | 49 | // :1:27: error: global variable contains reference to comptime var |
| 50 | // :2:18: note: 'a' points to comptime var declared here | |
| 50 | // :2:5: note: 'a' points to comptime var declared here | |
| 51 | 51 | // :6:30: error: global variable contains reference to comptime var |
| 52 | // :7:18: note: 'b[0]' points to comptime var declared here | |
| 52 | // :7:5: note: 'b[0]' points to comptime var declared here | |
| 53 | 53 | // :11:30: error: global variable contains reference to comptime var |
| 54 | // :12:18: note: 'c' points to comptime var declared here | |
| 54 | // :12:5: note: 'c' points to comptime var declared here | |
| 55 | 55 | // :16:33: error: global variable contains reference to comptime var |
| 56 | // :17:18: note: 'd' points to comptime var declared here | |
| 56 | // :17:5: note: 'd' points to comptime var declared here | |
| 57 | 57 | // :22:24: error: global variable contains reference to comptime var |
| 58 | // :23:18: note: 'e.ptr' points to comptime var declared here | |
| 58 | // :23:5: note: 'e.ptr' points to comptime var declared here | |
| 59 | 59 | // :28:33: error: global variable contains reference to comptime var |
| 60 | // :29:18: note: 'f' points to comptime var declared here | |
| 60 | // :29:5: note: 'f' points to comptime var declared here | |
| 61 | 61 | // :34:40: error: global variable contains reference to comptime var |
| 62 | 62 | // :34:40: note: 'g' points to 'v0[0]', where |
| 63 | // :36:24: note: 'v0[1]' points to comptime var declared here | |
| 63 | // :36:5: note: 'v0[1]' points to comptime var declared here | |
| 64 | 64 | // :42:28: error: global variable contains reference to comptime var |
| 65 | // :43:22: note: 'h' points to comptime var declared here | |
| 65 | // :43:5: note: 'h' points to comptime var declared here |
test/cases/compile_errors/comptime_var_referenced_by_type.zig+2-1| ... | ... | @@ -21,5 +21,6 @@ comptime { |
| 21 | 21 | // error |
| 22 | 22 | // |
| 23 | 23 | // :7:16: error: captured value contains reference to comptime var |
| 24 | // :16:30: note: 'wrapper.ptr' points to comptime var declared here | |
| 24 | // :7:16: note: 'wrapper' points to '@as(*const tmp.Wrapper, @ptrCast(&v0)).*', where | |
| 25 | // :16:5: note: 'v0.ptr' points to comptime var declared here | |
| 25 | 26 | // :17:29: note: called at comptime here |
test/cases/compile_errors/enum_field_value_references_enum.zig+2-1| ... | ... | @@ -10,4 +10,5 @@ const D = 1; |
| 10 | 10 | |
| 11 | 11 | // error |
| 12 | 12 | // |
| 13 | // :1:5: error: dependency loop detected | |
| 13 | // :2:13: error: enum 'tmp.Foo' has no member named 'B' | |
| 14 | // :1:17: note: enum declared here |
test/cases/compile_errors/for_comptime_array_pointer.zig+1-1| ... | ... | @@ -9,4 +9,4 @@ export fn foo() void { |
| 9 | 9 | // |
| 10 | 10 | // :3:10: error: runtime value contains reference to comptime var |
| 11 | 11 | // :3:10: note: comptime var pointers are not available at runtime |
| 12 | // :2:34: note: 'runtime_value' points to comptime var declared here | |
| 12 | // :2:14: note: 'runtime_value' points to comptime var declared here |