added error for implicit cast from *const T to *[1]T. credit: @kristate
This commit is contained in:
@@ -11090,6 +11090,7 @@ static IrInstruction *ir_analyze_ptr_to_array(IrAnalyze *ira, IrInstruction *sou
|
||||
Error err;
|
||||
if ((err = type_resolve(ira->codegen, target->value.type->data.pointer.child_type, ResolveStatusAlignmentKnown)))
|
||||
return ira->codegen->invalid_instruction;
|
||||
assert((wanted_type->data.pointer.is_const && target->value.type->data.pointer.is_const) || !target->value.type->data.pointer.is_const);
|
||||
wanted_type = adjust_ptr_align(ira->codegen, wanted_type, get_ptr_align(ira->codegen, target->value.type));
|
||||
ZigType *array_type = wanted_type->data.pointer.child_type;
|
||||
assert(array_type->id == ZigTypeIdArray);
|
||||
@@ -11651,7 +11652,11 @@ static IrInstruction *ir_analyze_cast(IrAnalyze *ira, IrInstruction *source_inst
|
||||
if (array_type->id == ZigTypeIdArray && array_type->data.array.len == 1 &&
|
||||
types_match_const_cast_only(ira, array_type->data.array.child_type,
|
||||
actual_type->data.pointer.child_type, source_node,
|
||||
!wanted_type->data.pointer.is_const).id == ConstCastResultIdOk)
|
||||
!wanted_type->data.pointer.is_const).id == ConstCastResultIdOk &&
|
||||
// This should be the job of `types_match_const_cast_only`
|
||||
// but `types_match_const_cast_only` only gets info for child_types
|
||||
((wanted_type->data.pointer.is_const && actual_type->data.pointer.is_const) ||
|
||||
!actual_type->data.pointer.is_const))
|
||||
{
|
||||
if ((err = type_resolve(ira->codegen, wanted_type->data.pointer.child_type,
|
||||
ResolveStatusAlignmentKnown)))
|
||||
|
||||
Reference in New Issue
Block a user