@@ -440,9 +440,11 @@ class Mixin extends Class {
440440 _inheritanceChain.add (this );
441441
442442 // Mix-in interfaces come before other interfaces.
443- _inheritanceChain.addAll (superclassConstraints.expand (
444- (ParameterizedElementType i) =>
445- (i.element as Class ).inheritanceChain));
443+ _inheritanceChain.addAll (superclassConstraints
444+ .expand ((ParameterizedElementType i) =>
445+ (i.element as Class ).inheritanceChain)
446+ .where ((Class c) =>
447+ c != packageGraph.specialClasses[SpecialClass .object]));
446448
447449 // Interfaces need to come last, because classes in the superChain might
448450 // implement them even when they aren't mentioned.
@@ -2151,9 +2153,13 @@ class Library extends ModelElement with Categorization, TopLevelContainer {
21512153 @override
21522154 List <Mixin > get mixins {
21532155 if (_mixins != null ) return _mixins;
2154- List <MixinElementImpl > mixinClasses = [];
2155- mixinClasses.addAll (
2156- _exportedNamespace.definedNames.values.whereType <MixinElementImpl >());
2156+
2157+ /// Can not be [MixinElementImpl] because [ClassHandle] s are sometimes
2158+ /// returned from _exportedNamespace.
2159+ List <ClassElement > mixinClasses = [];
2160+ mixinClasses.addAll (_exportedNamespace.definedNames.values
2161+ .whereType <ClassElement >()
2162+ .where ((ClassElement c) => c.isMixin));
21572163 _mixins = mixinClasses
21582164 .map ((e) => new ModelElement .from (e, this , packageGraph) as Mixin )
21592165 .toList (growable: false )
@@ -2302,7 +2308,7 @@ class Library extends ModelElement with Categorization, TopLevelContainer {
23022308 }
23032309
23042310 types.addAll (_exportedNamespace.definedNames.values
2305- .where ((e) => e is ClassElement && e is ! MixinElementImpl )
2311+ .where ((e) => e is ClassElement && ! e.isMixin )
23062312 .cast <ClassElement >()
23072313 .where ((element) => ! element.isEnum));
23082314
@@ -2311,6 +2317,7 @@ class Library extends ModelElement with Categorization, TopLevelContainer {
23112317 .toList (growable: false )
23122318 ..sort (byName);
23132319
2320+ assert (! _classes.any ((Class c) => c is Mixin ));
23142321 return _classes;
23152322 }
23162323
0 commit comments