mirror of
https://github.com/ziglang/zig.git
synced 2026-02-12 20:37:54 +00:00
DRY 'is slice?' conditionals in parser (#750)
This commit is contained in:
parent
917e6fe370
commit
0090c2d70b
@ -3380,11 +3380,7 @@ bool types_match_const_cast_only(TypeTableEntry *expected_type, TypeTableEntry *
|
||||
}
|
||||
|
||||
// slice const
|
||||
if (expected_type->id == TypeTableEntryIdStruct &&
|
||||
actual_type->id == TypeTableEntryIdStruct &&
|
||||
expected_type->data.structure.is_slice &&
|
||||
actual_type->data.structure.is_slice)
|
||||
{
|
||||
if (is_slice(expected_type) && is_slice(actual_type)) {
|
||||
TypeTableEntry *actual_ptr_type = actual_type->data.structure.fields[slice_ptr_index].type_entry;
|
||||
TypeTableEntry *expected_ptr_type = expected_type->data.structure.fields[slice_ptr_index].type_entry;
|
||||
if ((!actual_ptr_type->data.pointer.is_const || expected_ptr_type->data.pointer.is_const) &&
|
||||
|
||||
@ -6369,10 +6369,7 @@ static ImplicitCastMatchResult ir_types_match_with_implicit_cast(IrAnalyze *ira,
|
||||
}
|
||||
|
||||
// implicit [N]T to []const T
|
||||
if (expected_type->id == TypeTableEntryIdStruct &&
|
||||
expected_type->data.structure.is_slice &&
|
||||
actual_type->id == TypeTableEntryIdArray)
|
||||
{
|
||||
if (is_slice(expected_type) && actual_type->id == TypeTableEntryIdArray) {
|
||||
TypeTableEntry *ptr_type = expected_type->data.structure.fields[slice_ptr_index].type_entry;
|
||||
assert(ptr_type->id == TypeTableEntryIdPointer);
|
||||
|
||||
@ -6384,8 +6381,7 @@ static ImplicitCastMatchResult ir_types_match_with_implicit_cast(IrAnalyze *ira,
|
||||
}
|
||||
|
||||
// implicit &const [N]T to []const T
|
||||
if (expected_type->id == TypeTableEntryIdStruct &&
|
||||
expected_type->data.structure.is_slice &&
|
||||
if (is_slice(expected_type) &&
|
||||
actual_type->id == TypeTableEntryIdPointer &&
|
||||
actual_type->data.pointer.is_const &&
|
||||
actual_type->data.pointer.child_type->id == TypeTableEntryIdArray)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user