InternPool: implement typeHasOnePossibleValue for simple_type

This commit is contained in:
Andrew Kelley 2023-05-03 12:30:06 -07:00
parent 50f33734c6
commit b125063dcf
2 changed files with 92 additions and 2 deletions

View File

@ -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,

View File

@ -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,