Commit 762c4a876b
Changed files (3)
src/AstGen.zig
@@ -4092,15 +4092,17 @@ fn structDeclInner(
const doc_comment_index = try astgen.docCommentAsString(member.firstToken());
wip_members.appendToField(doc_comment_index);
- known_non_opv = known_non_opv or
- nodeImpliesMoreThanOnePossibleValue(tree, member.ast.type_expr);
- known_comptime_only = known_comptime_only or
- nodeImpliesComptimeOnly(tree, member.ast.type_expr);
-
const have_align = member.ast.align_expr != 0;
const have_value = member.ast.value_expr != 0;
const is_comptime = member.comptime_token != null;
const unused = false;
+
+ if (!is_comptime) {
+ known_non_opv = known_non_opv or
+ nodeImpliesMoreThanOnePossibleValue(tree, member.ast.type_expr);
+ known_comptime_only = known_comptime_only or
+ nodeImpliesComptimeOnly(tree, member.ast.type_expr);
+ }
wip_members.nextField(bits_per_field, .{ have_align, have_value, is_comptime, unused });
if (have_align) {
src/Sema.zig
@@ -20860,6 +20860,7 @@ pub fn typeHasOnePossibleValue(
const resolved_ty = try sema.resolveTypeFields(block, src, ty);
const s = resolved_ty.castTag(.@"struct").?.data;
for (s.fields.values()) |value| {
+ if (value.is_comptime) continue;
if ((try sema.typeHasOnePossibleValue(block, src, value.ty)) == null) {
return null;
}
@@ -21532,6 +21533,7 @@ fn typeRequiresComptime(sema: *Sema, block: *Block, src: LazySrcLoc, ty: Type) C
struct_obj.requires_comptime = .wip;
for (struct_obj.fields.values()) |field| {
+ if (field.is_comptime) continue;
if (try sema.typeRequiresComptime(block, src, field.ty)) {
struct_obj.requires_comptime = .yes;
return true;
src/type.zig
@@ -2098,6 +2098,7 @@ pub const Type = extern union {
}
assert(struct_obj.haveFieldTypes());
for (struct_obj.fields.values()) |value| {
+ if (value.is_comptime) continue;
if (value.ty.hasRuntimeBitsAdvanced(ignore_comptime_only))
return true;
} else {