zig

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

commit b125063dcfb95b470bc7830b188614361d3ba4cb (tree)
parent 50f33734c6cec10a0132644c08ee443c2dd224e2
Author: Andrew Kelley <andrew@ziglang.org>
Date:   Wed,  3 May 2023 12:30:06 -0700

InternPool: implement typeHasOnePossibleValue for simple_type

Diffstat:
Msrc/Sema.zig | 47++++++++++++++++++++++++++++++++++++++++++++++-
Msrc/type.zig | 47++++++++++++++++++++++++++++++++++++++++++++++-
2 files changed, 92 insertions(+), 2 deletions(-)

diff --git a/src/Sema.zig b/src/Sema.zig @@ -32776,7 +32776,52 @@ pub fn typeHasOnePossibleValue(sema: *Sema, ty: Type) CompileError!?Value { .vector_type => @panic("TODO"), .optional_type => @panic("TODO"), .error_union_type => @panic("TODO"), - .simple_type => @panic("TODO"), + .simple_type => |t| switch (t) { + .f16, + .f32, + .f64, + .f80, + .f128, + .usize, + .isize, + .c_char, + .c_short, + .c_ushort, + .c_int, + .c_uint, + .c_long, + .c_ulong, + .c_longlong, + .c_ulonglong, + .c_longdouble, + .anyopaque, + .bool, + .type, + .anyerror, + .comptime_int, + .comptime_float, + .@"anyframe", + .enum_literal, + .atomic_order, + .atomic_rmw_op, + .calling_convention, + .address_space, + .float_mode, + .reduce_op, + .call_modifier, + .prefetch_options, + .export_options, + .extern_options, + .type_info, + => return null, + + .void => return Value.void, + .noreturn => return Value.initTag(.unreachable_value), + .null => return Value.null, + .undefined => return Value.undef, + + .generic_poison => return error.GenericPoison, + }, .struct_type => @panic("TODO"), .simple_value => unreachable, .extern_func => unreachable, diff --git a/src/type.zig b/src/type.zig @@ -5030,7 +5030,52 @@ pub const Type = struct { .vector_type => @panic("TODO"), .optional_type => @panic("TODO"), .error_union_type => @panic("TODO"), - .simple_type => @panic("TODO"), + .simple_type => |t| switch (t) { + .f16, + .f32, + .f64, + .f80, + .f128, + .usize, + .isize, + .c_char, + .c_short, + .c_ushort, + .c_int, + .c_uint, + .c_long, + .c_ulong, + .c_longlong, + .c_ulonglong, + .c_longdouble, + .anyopaque, + .bool, + .type, + .anyerror, + .comptime_int, + .comptime_float, + .@"anyframe", + .enum_literal, + .atomic_order, + .atomic_rmw_op, + .calling_convention, + .address_space, + .float_mode, + .reduce_op, + .call_modifier, + .prefetch_options, + .export_options, + .extern_options, + .type_info, + => return null, + + .void => return Value.void, + .noreturn => return Value.initTag(.unreachable_value), + .null => return Value.null, + .undefined => return Value.undef, + + .generic_poison => unreachable, + }, .struct_type => @panic("TODO"), .simple_value => unreachable, .extern_func => unreachable,