Index: pkg/kernel/lib/transformations/mixin_full_resolution.dart |
diff --git a/pkg/kernel/lib/transformations/mixin_full_resolution.dart b/pkg/kernel/lib/transformations/mixin_full_resolution.dart |
index b045ee6b511defbdb1c0bc288ce20edc6f615cf7..92ed3b7685e502e92bcf3d573ddd79747acb2e70 100644 |
--- a/pkg/kernel/lib/transformations/mixin_full_resolution.dart |
+++ b/pkg/kernel/lib/transformations/mixin_full_resolution.dart |
@@ -31,6 +31,8 @@ class MixinFullResolution { |
// the mixin and constructors from the base class. |
var processedClasses = new Set<Class>(); |
for (var library in program.libraries) { |
+ if (library.isExternal) continue; |
+ |
for (var class_ in library.classes) { |
transformClass(processedClasses, transformedClasses, class_); |
} |
@@ -41,6 +43,8 @@ class MixinFullResolution { |
// Resolve all super call expressions and super initializers. |
for (var library in program.libraries) { |
+ if (library.isExternal) continue; |
+ |
for (var class_ in library.classes) { |
final bool hasTransformedSuperclass = |
transformedClasses.contains(class_.superclass); |
@@ -82,6 +86,12 @@ class MixinFullResolution { |
// constructors in this class. |
if (!class_.isMixinApplication) return; |
+ if (class_.mixedInClass.level != ClassLevel.Body) { |
+ throw new Exception( |
+ 'Class "${class_.name}" mixes in "${class_.mixedInClass.name}" from' |
+ ' an external library. Did you forget --link?'); |
+ } |
+ |
transformedClasses.add(class_); |
// Clone fields and methods from the mixin class. |