bb2775b16a
The code in class_hierarchy.dart that looped over override pairs included implementations inherited from its superclass as potential overriders, presumably in a broken attempt to include some interface checks into the mix. With this problem fixed, the special case in kernel_class_builder.dart that excluded overriders not declared in the current class (i.e. declared in a mixin) could be removed without incurring false positives. These override checks performed on members from a mixin produce an extra context message indicating the class where the two members meet, giving rise to the override relation (similarly to interface checks). Since the same member can now override more than one member (or even the same member more than once), the diagnostics message duplication check has been extended to also include the context in the comparison. Fixes https://github.com/dart-lang/sdk/issues/34235 Fixes https://github.com/dart-lang/sdk/issues/34285 Change-Id: I990e5719ae1749fd1aad1ad478aaa6e173cb170b Reviewed-on: https://dart-review.googlesource.com/c/76900 Reviewed-by: Daniel Hillerström <hillerstrom@google.com>