@@ -197,7 +197,6 @@ abstract class ModelElement
197197 _cacheNewModelElement (e, newModelElement, library,
198198 enclosingContainer: enclosingContainer);
199199
200- assert (newModelElement.element is ! MultiplyInheritedExecutableElement );
201200 return newModelElement;
202201 }
203202
@@ -255,7 +254,6 @@ abstract class ModelElement
255254 _cacheNewModelElement (e, newModelElement, library,
256255 enclosingContainer: enclosingContainer);
257256
258- assert (newModelElement.element is ! MultiplyInheritedExecutableElement );
259257 return newModelElement;
260258 }
261259
@@ -288,8 +286,6 @@ abstract class ModelElement
288286 Member ? originalMember,
289287 }) {
290288 return switch (e) {
291- MultiplyInheritedExecutableElement () => e.resolveMultiplyInheritedElement (
292- library, packageGraph, enclosingContainer as Class ),
293289 LibraryElement () => packageGraph.findButDoNotCreateLibraryFor (e)! ,
294290 PrefixElement () => Prefix (e, library, packageGraph),
295291 EnumElement () => Enum (e, library, packageGraph),
@@ -349,8 +345,7 @@ abstract class ModelElement
349345 }) {
350346 // Accessors can be part of a [Container], or a part of a [Library].
351347 if (e.enclosingElement3 is ExtensionElement ||
352- e.enclosingElement3 is InterfaceElement ||
353- e is MultiplyInheritedExecutableElement ) {
348+ e.enclosingElement3 is InterfaceElement ) {
354349 if (enclosingContainer == null || enclosingContainer is Extension ) {
355350 return ContainerAccessor (e, library, packageGraph, enclosingContainer);
356351 }
@@ -796,27 +791,3 @@ abstract class ModelElement
796791
797792 String get linkedObjectType => _packageGraph.dartCoreObject;
798793}
799-
800- extension on MultiplyInheritedExecutableElement {
801- /// Resolves this very rare case incorrectly by picking the closest element in
802- /// the inheritance and interface chains from the analyzer.
803- // TODO(jcollins-g): Implement resolution per ECMA-408 4th edition, page 39
804- // #22.
805- ModelElement resolveMultiplyInheritedElement (
806- Library library, PackageGraph packageGraph, Class enclosingClass) {
807- var inheritables = inheritedElements
808- .map ((e) => ModelElement .forElement (e, packageGraph) as Inheritable );
809- late Inheritable foundInheritable;
810- var lowIndex = enclosingClass.inheritanceChain.length;
811- for (var inheritable in inheritables) {
812- var index = enclosingClass.inheritanceChain
813- .indexOf (inheritable.enclosingElement as InheritingContainer );
814- if (index < lowIndex) {
815- foundInheritable = inheritable;
816- lowIndex = index;
817- }
818- }
819- return ModelElement .for_ (foundInheritable.element, library, packageGraph,
820- enclosingContainer: enclosingClass);
821- }
822- }
0 commit comments