From 08e97639513f09e2797bd7afcdfdfecdad6c6fd8 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Fri, 5 May 2023 18:35:08 -0700 Subject: stage2: add missing comptimeOnly logic for InternPool --- src/type.zig | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'src/type.zig') diff --git a/src/type.zig b/src/type.zig index cbc0b5bcea..a51ae273c1 100644 --- a/src/type.zig +++ b/src/type.zig @@ -4076,11 +4076,18 @@ pub const Type = struct { pub fn comptimeOnly(ty: Type, mod: *const Module) bool { if (ty.ip_index != .none) return switch (mod.intern_pool.indexToKey(ty.ip_index)) { .int_type => false, - .ptr_type => @panic("TODO"), - .array_type => |array_type| return array_type.child.toType().comptimeOnly(mod), - .vector_type => |vector_type| return vector_type.child.toType().comptimeOnly(mod), - .opt_type => @panic("TODO"), - .error_union_type => @panic("TODO"), + .ptr_type => |ptr_type| { + const child_ty = ptr_type.elem_type.toType(); + if (child_ty.zigTypeTag(mod) == .Fn) { + return false; + } else { + return child_ty.comptimeOnly(mod); + } + }, + .array_type => |array_type| array_type.child.toType().comptimeOnly(mod), + .vector_type => |vector_type| vector_type.child.toType().comptimeOnly(mod), + .opt_type => |child| child.toType().comptimeOnly(mod), + .error_union_type => |error_union_type| error_union_type.payload_type.toType().comptimeOnly(mod), .simple_type => |t| switch (t) { .f16, .f32, -- cgit v1.2.3