zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 73720b6975e2650ece48cc5f38495c091360c6c9 (tree)
parent f7bd42785bf763e66557f886188ec53824cc45e0
Author: Andrew Kelley <andrew@ziglang.org>
Date:   Fri,  5 May 2023 20:50:01 -0700

Sema: update onePossibleValue for InternPool

Diffstat:
Msrc/type.zig | 20++++++++++++++++----
1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/src/type.zig b/src/type.zig @@ -3909,15 +3909,27 @@ pub const Type = struct { return null; } }, - .ptr_type => @panic("TODO"), - .array_type => @panic("TODO"), + .ptr_type => return null, + .array_type => |array_type| { + if (array_type.len == 0) + return Value.initTag(.empty_array); + if (array_type.child.toType().onePossibleValue(mod) != null) + return Value.initTag(.the_only_possible_value); + return null; + }, .vector_type => |vector_type| { if (vector_type.len == 0) return Value.initTag(.empty_array); if (vector_type.child.toType().onePossibleValue(mod)) |v| return v; return null; }, - .opt_type => @panic("TODO"), - .error_union_type => @panic("TODO"), + .opt_type => |child| { + if (child.toType().isNoReturn()) { + return Value.null; + } else { + return null; + } + }, + .error_union_type => return null, .simple_type => |t| switch (t) { .f16, .f32,