Version 2.14.0-285.0.dev

Merge commit '12bf10ce397d8d31364b2ab29655d21931716a3b' into 'dev'
diff --git a/pkg/analyzer/lib/src/summary2/library_builder.dart b/pkg/analyzer/lib/src/summary2/library_builder.dart
index a36ee5c..2c1a0b3 100644
--- a/pkg/analyzer/lib/src/summary2/library_builder.dart
+++ b/pkg/analyzer/lib/src/summary2/library_builder.dart
@@ -8,7 +8,6 @@
 import 'package:analyzer/src/dart/ast/ast.dart' as ast;
 import 'package:analyzer/src/dart/ast/mixin_super_invoked_names.dart';
 import 'package:analyzer/src/dart/element/element.dart';
-import 'package:analyzer/src/dart/element/scope.dart';
 import 'package:analyzer/src/dart/resolver/scope.dart';
 import 'package:analyzer/src/summary2/combinator.dart';
 import 'package:analyzer/src/summary2/constructor_initializer_resolver.dart';
@@ -29,8 +28,6 @@
   final LibraryElementImpl element;
   final List<LinkingUnit> units;
 
-  late final LibraryScope scope;
-
   /// Local declarations.
   final Scope localScope = Scope.top();
 
@@ -130,10 +127,6 @@
     });
   }
 
-  void buildScope() {
-    scope = element.scope as LibraryScope;
-  }
-
   void collectMixinSuperInvokedNames() {
     for (var linkingUnit in units) {
       for (var declaration in linkingUnit.node.declarations) {
@@ -162,7 +155,7 @@
 
   void resolveMetadata() {
     for (var linkingUnit in units) {
-      var resolver = MetadataResolver(linker, scope, linkingUnit.element);
+      var resolver = MetadataResolver(linker, element, linkingUnit.element);
       linkingUnit.node.accept(resolver);
     }
   }
@@ -176,7 +169,6 @@
         element,
         linkingUnit.reference,
         linkingUnit.node.featureSet.isEnabled(Feature.non_nullable),
-        scope,
       );
       linkingUnit.node.accept(resolver);
     }
@@ -184,6 +176,7 @@
 
   void storeExportScope() {
     exports = exportScope.map.values.toList();
+    linker.elementFactory.setExportsOfLibrary('$uri', exports);
 
     var definedNames = <String, Element>{};
     for (var entry in exportScope.map.entries) {
@@ -200,8 +193,6 @@
     if (entryPoint is FunctionElement) {
       element.entryPoint = entryPoint;
     }
-
-    linker.elementFactory.setExportsOfLibrary('$uri', exports);
   }
 
   static void build(Linker linker, LinkInputLibrary inputLibrary) {
diff --git a/pkg/analyzer/lib/src/summary2/link.dart b/pkg/analyzer/lib/src/summary2/link.dart
index 4cc4a03..f0b0174 100644
--- a/pkg/analyzer/lib/src/summary2/link.dart
+++ b/pkg/analyzer/lib/src/summary2/link.dart
@@ -160,10 +160,6 @@
     for (var library in builders.values) {
       library.storeExportScope();
     }
-
-    for (var library in builders.values) {
-      library.buildScope();
-    }
   }
 
   void _createTypeSystem() {
diff --git a/pkg/analyzer/lib/src/summary2/metadata_resolver.dart b/pkg/analyzer/lib/src/summary2/metadata_resolver.dart
index 4b4a1ad..3bf8d56 100644
--- a/pkg/analyzer/lib/src/summary2/metadata_resolver.dart
+++ b/pkg/analyzer/lib/src/summary2/metadata_resolver.dart
@@ -17,8 +17,12 @@
   final CompilationUnitElementImpl _unitElement;
   Scope _scope;
 
-  MetadataResolver(this._linker, this._libraryScope, this._unitElement)
-      : _scope = _libraryScope;
+  MetadataResolver(
+    this._linker,
+    LibraryElementImpl libraryElement,
+    this._unitElement,
+  )   : _libraryScope = libraryElement.scope,
+        _scope = libraryElement.scope;
 
   @override
   void visitAnnotation(covariant AnnotationImpl node) {
diff --git a/pkg/analyzer/lib/src/summary2/reference_resolver.dart b/pkg/analyzer/lib/src/summary2/reference_resolver.dart
index 9169ffb..ea3f216 100644
--- a/pkg/analyzer/lib/src/summary2/reference_resolver.dart
+++ b/pkg/analyzer/lib/src/summary2/reference_resolver.dart
@@ -48,8 +48,8 @@
     LibraryElementImpl libraryElement,
     this.unitReference,
     this.isNNBD,
-    this.scope,
-  ) : _typeSystem = libraryElement.typeSystem;
+  )   : _typeSystem = libraryElement.typeSystem,
+        scope = libraryElement.scope;
 
   @override
   void visitBlockFunctionBody(BlockFunctionBody node) {}
diff --git a/pkg/analyzer/lib/src/summary2/top_level_inference.dart b/pkg/analyzer/lib/src/summary2/top_level_inference.dart
index a9072ab..7c85b60d 100644
--- a/pkg/analyzer/lib/src/summary2/top_level_inference.dart
+++ b/pkg/analyzer/lib/src/summary2/top_level_inference.dart
@@ -46,7 +46,7 @@
         unit.extensions.forEach(_resolveExtensionFields);
         unit.mixins.forEach(_resolveClassFields);
 
-        _scope = builder.scope;
+        _scope = builder.element.scope;
         unit.topLevelVariables.forEach(_resolveVariable);
       }
     }
@@ -338,7 +338,7 @@
         unit.extensions.forEach(_addExtensionElementFields);
         unit.mixins.forEach(_addClassElementFields);
 
-        _scope = builder.scope;
+        _scope = builder.element.scope;
         for (var element in unit.topLevelVariables) {
           _addVariableNode(element);
         }
diff --git a/tools/VERSION b/tools/VERSION
index c5429f5..51acfad 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 14
 PATCH 0
-PRERELEASE 284
+PRERELEASE 285
 PRERELEASE_PATCH 0
\ No newline at end of file