InternPool: eliminate var_args_param_type
This was a "fake" type used to handle C varargs parameters, much like generic poison. In fact, it is treated identically to generic poison in all cases other than one (the final coercion of a call argument), which is trivially special-cased. Thus, it makes sense to remove this special tag and instead use `generic_poison_type` in its place. This fixes several bugs in Sema related to missing handling of this tag. Resolves: #19781
This commit is contained in:
@@ -2818,7 +2818,6 @@ pub const Index = enum(u32) {
|
||||
generic_poison,
|
||||
|
||||
/// Used by Air/Sema only.
|
||||
var_args_param_type = std.math.maxInt(u32) - 1,
|
||||
none = std.math.maxInt(u32),
|
||||
|
||||
_,
|
||||
@@ -8938,7 +8937,6 @@ pub fn typeOf(ip: *const InternPool, index: Index) Index {
|
||||
.memoized_call => unreachable,
|
||||
},
|
||||
|
||||
.var_args_param_type => unreachable,
|
||||
.none => unreachable,
|
||||
};
|
||||
}
|
||||
@@ -9153,8 +9151,6 @@ pub fn zigTypeTagOrPoison(ip: *const InternPool, index: Index) error{GenericPois
|
||||
.empty_struct => unreachable,
|
||||
.generic_poison => unreachable,
|
||||
|
||||
.var_args_param_type => unreachable, // special tag
|
||||
|
||||
_ => switch (ip.items.items(.tag)[@intFromEnum(index)]) {
|
||||
.removed => unreachable,
|
||||
|
||||
|
||||
Reference in New Issue
Block a user