Description
commit(s) to merge: ec48e8f
merge instructions: clean merge
What is the issue: DDC uses a different code path when compiling mixins or extends clauses that lead to a circular reference of the class itself. That code path was losing nullability information (nullable, or legacy) of the types when they appear in those positions.
What is the fix: Stop ignoring the nullability and emit them properly in those code patterns.
Why cherrypick: This is a correctness issue, mostly noticeable when running in sound null safety mode. The bug has been present since we unforked the SDK but it was noticed and reported recently by an external Flutter Web user.
Risk: Low risk because the fix targets a code path that is only used by circular class hierarchies and then the hierarchy must include a nullable type for the change to make any difference.
Link to original issue(s): #45767
/cc @kevmoo @mit-mit @whesse @athomas @vsmenon @franklinyow @sigmundch