DDC relies on the kernel implementation of DartTypeEquivalence to determine if some casts can be elided or replaced as null checks.
Some instances of record types can cause an infinite loop when checking if they are equivalent.
Originally reported here: flutter/flutter#129482
This code will cause the DDC compiler to hang:
main() {
Object value = 'x';
(a: 'a', b: value) as ({String a, String b});
}
DDC relies on the kernel implementation of
DartTypeEquivalenceto determine if some casts can be elided or replaced as null checks.Some instances of record types can cause an infinite loop when checking if they are equivalent.
Originally reported here: flutter/flutter#129482
This code will cause the DDC compiler to hang: