Index: pkg/compiler/lib/src/serialization/modelz.dart |
diff --git a/pkg/compiler/lib/src/serialization/modelz.dart b/pkg/compiler/lib/src/serialization/modelz.dart |
index e06cb037efeeba8d0d085cf3b2192ddff6c754dd..b34f787af495ddf812127d047571bba43e0a6172 100644 |
--- a/pkg/compiler/lib/src/serialization/modelz.dart |
+++ b/pkg/compiler/lib/src/serialization/modelz.dart |
@@ -588,6 +588,7 @@ abstract class LibraryMemberMixin implements DeserializedElementZ { |
abstract class ClassMemberMixin implements DeserializedElementZ { |
ClassElement _class; |
+ CompilationUnitElement _compilationUnit; |
@override |
Element get enclosingElement => enclosingClass; |
@@ -607,7 +608,16 @@ abstract class ClassMemberMixin implements DeserializedElementZ { |
LibraryElement get library => enclosingClass.library; |
@override |
- CompilationUnitElement get compilationUnit => enclosingClass.compilationUnit; |
+ CompilationUnitElement get compilationUnit { |
+ if (_compilationUnit == null) { |
+ _compilationUnit = |
+ _decoder.getElement(Key.COMPILATION_UNIT, isOptional: true); |
+ if (_compilationUnit == null) { |
+ _compilationUnit = enclosingClass.compilationUnit; |
+ } |
+ } |
+ return _compilationUnit; |
+ } |
} |
abstract class InstanceMemberMixin implements DeserializedElementZ { |