diff --git a/pkg/analyzer/lib/src/summary2/builder/source_library_builder.dart b/pkg/analyzer/lib/src/summary2/builder/source_library_builder.dart
index a459974f6..99a42f9 100644
--- a/pkg/analyzer/lib/src/summary2/builder/source_library_builder.dart
+++ b/pkg/analyzer/lib/src/summary2/builder/source_library_builder.dart
@@ -33,7 +33,7 @@
   LinkedLibraryContext context;
 
   LibraryElementImpl element;
-  LibraryScope libraryScope;
+  LibraryScope scope;
 
   /// Local declarations.
   final Scope localScope = Scope.top();
@@ -212,7 +212,7 @@
 
   void buildElement() {
     element = linker.elementFactory.libraryOfUri('$uri');
-    libraryScope = LibraryScope(element);
+    scope = LibraryScope(element);
   }
 
   void buildInitialExportScope() {
@@ -249,7 +249,7 @@
 
   void resolveMetadata() {
     for (CompilationUnitElementImpl unit in element.units) {
-      var resolver = MetadataResolver(linker, element, unit);
+      var resolver = MetadataResolver(linker, element, scope, unit);
       unit.linkedNode.accept(resolver);
     }
   }
@@ -265,7 +265,7 @@
         element,
         unitReference,
         linker.contextFeatures.isEnabled(Feature.non_nullable),
-        libraryScope,
+        scope,
       );
       unitContext.unit.accept(resolver);
     }
diff --git a/pkg/analyzer/lib/src/summary2/metadata_resolver.dart b/pkg/analyzer/lib/src/summary2/metadata_resolver.dart
index 7c9e52f..a9265e1 100644
--- a/pkg/analyzer/lib/src/summary2/metadata_resolver.dart
+++ b/pkg/analyzer/lib/src/summary2/metadata_resolver.dart
@@ -14,11 +14,11 @@
 class MetadataResolver extends ThrowingAstVisitor<void> {
   final Linker _linker;
   final LibraryElement _libraryElement;
+  final Scope _libraryScope;
   final CompilationUnitElement _unitElement;
 
-  Scope scope;
-
-  MetadataResolver(this._linker, this._libraryElement, this._unitElement);
+  MetadataResolver(this._linker, this._libraryElement, this._libraryScope,
+      this._unitElement);
 
   @override
   void visitAnnotation(Annotation node) {
@@ -27,7 +27,7 @@
     var holder = ElementHolder();
     node.accept(LocalElementBuilder(holder, null));
 
-    var astResolver = AstResolver(_linker, _libraryElement, scope);
+    var astResolver = AstResolver(_linker, _libraryElement, _libraryScope);
     astResolver.resolve(node);
   }
 
diff --git a/pkg/analyzer/lib/src/summary2/top_level_inference.dart b/pkg/analyzer/lib/src/summary2/top_level_inference.dart
index 5b35375..eef737d 100644
--- a/pkg/analyzer/lib/src/summary2/top_level_inference.dart
+++ b/pkg/analyzer/lib/src/summary2/top_level_inference.dart
@@ -50,7 +50,7 @@
       _library = builder.element;
       for (var unitContext in builder.context.units) {
         for (var unitMember in unitContext.unit.declarations) {
-          _scope = builder.libraryScope;
+          _scope = builder.scope;
           if (unitMember is TopLevelVariableDeclaration) {
             _variableDeclarationList(unitMember.variables);
           } else if (unitMember is ClassOrMixinDeclaration) {
@@ -330,7 +330,7 @@
         unit.types.forEach(_addClassElementFields);
         unit.mixins.forEach(_addClassElementFields);
 
-        _scope = builder.libraryScope;
+        _scope = builder.scope;
         for (var element in unit.topLevelVariables) {
           _addNode(element);
         }
