aboutsummaryrefslogtreecommitdiff
path: root/src/Sema.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/Sema.zig')
-rw-r--r--src/Sema.zig8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/Sema.zig b/src/Sema.zig
index 7b9f7da769..f2b3cee3e3 100644
--- a/src/Sema.zig
+++ b/src/Sema.zig
@@ -18749,6 +18749,10 @@ fn bitOffsetOf(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!u6
break :blk try sema.tupleFieldIndex(block, ty, field_name, rhs_src);
} else try sema.structFieldIndex(block, ty, field_name, rhs_src);
+ if (ty.structFieldIsComptime(field_index)) {
+ return sema.fail(block, src, "no offset available for comptime field", .{});
+ }
+
switch (ty.containerLayout()) {
.Packed => {
var bit_sum: u64 = 0;
@@ -20132,6 +20136,10 @@ fn zirFieldParentPtr(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileEr
break :blk try sema.tupleFieldIndex(block, struct_ty, field_name, name_src);
} else try sema.structFieldIndex(block, struct_ty, field_name, name_src);
+ if (struct_ty.structFieldIsComptime(field_index)) {
+ return sema.fail(block, src, "cannot get @fieldParentPtr of a comptime field", .{});
+ }
+
try sema.checkPtrOperand(block, ptr_src, field_ptr_ty);
const field_ptr_ty_info = field_ptr_ty.ptrInfo().data;