Version 2.14.0-110.0.dev

Merge commit '62d0d5ff4d1a26010382d790c49bbf31a8b6be94' into 'dev'
diff --git a/pkg/analyzer/CHANGELOG.md b/pkg/analyzer/CHANGELOG.md
index 762ea4b..6e3eab5 100644
--- a/pkg/analyzer/CHANGELOG.md
+++ b/pkg/analyzer/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 1.6.0-dev
+* Deprecated `AnalysisDriver` default constructor.  Added `tmp1`. The goal
+  is to allow deprecating and removing unused  parameters.
+
 ## 1.5.0
 * Support for the language version `2.14`.
 * Deprecated `AnalysisSession.getUnitElement()`.
diff --git a/pkg/analyzer/lib/src/context/builder.dart b/pkg/analyzer/lib/src/context/builder.dart
index 8887ae4..5a65513 100644
--- a/pkg/analyzer/lib/src/context/builder.dart
+++ b/pkg/analyzer/lib/src/context/builder.dart
@@ -13,7 +13,6 @@
 import 'package:analyzer/src/dart/analysis/byte_store.dart';
 import 'package:analyzer/src/dart/analysis/driver.dart'
     show AnalysisDriver, AnalysisDriverScheduler;
-import 'package:analyzer/src/dart/analysis/file_state.dart';
 import 'package:analyzer/src/dart/analysis/performance_logger.dart';
 import 'package:analyzer/src/dart/sdk/sdk.dart';
 import 'package:analyzer/src/generated/engine.dart';
@@ -110,15 +109,13 @@
     final sf =
         createSourceFactoryFromWorkspace(workspace, summaryData: summaryData);
 
-    AnalysisDriver driver = AnalysisDriver(
-      analysisDriverScheduler,
-      performanceLog,
-      resourceProvider,
-      byteStore,
-      FileContentOverlay(),
-      contextRoot,
-      sf,
-      options,
+    AnalysisDriver driver = AnalysisDriver.tmp1(
+      scheduler: analysisDriverScheduler,
+      logger: performanceLog,
+      resourceProvider: resourceProvider,
+      byteStore: byteStore,
+      sourceFactory: sf,
+      analysisOptions: options,
       packages: createPackageMap(
         resourceProvider: resourceProvider,
         options: builderOptions,
diff --git a/pkg/analyzer/lib/src/dart/analysis/driver.dart b/pkg/analyzer/lib/src/dart/analysis/driver.dart
index 712f844..a1ecf39 100644
--- a/pkg/analyzer/lib/src/dart/analysis/driver.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/driver.dart
@@ -126,10 +126,6 @@
   /// The declared environment variables.
   DeclaredVariables declaredVariables = DeclaredVariables();
 
-  /// Information about the context root being analyzed by this driver.
-  @Deprecated('Use analysisContext instead')
-  final ContextRoot? contextRoot;
-
   /// The analysis context that created this driver / session.
   api.AnalysisContext? analysisContext;
 
@@ -263,21 +259,62 @@
   ///
   /// The given [SourceFactory] is cloned to ensure that it does not contain a
   /// reference to a [AnalysisContext] in which it could have been used.
-  AnalysisDriver(
-      this._scheduler,
-      PerformanceLog logger,
-      this._resourceProvider,
-      this._byteStore,
-      this._contentOverlay,
-      this.contextRoot,
-      SourceFactory sourceFactory,
-      this._analysisOptions,
-      {Packages? packages,
-      this.enableIndex = false,
-      SummaryDataStore? externalSummaries,
-      bool retainDataForTesting = false})
-      : _logger = logger,
-        _packages = packages ?? Packages.empty,
+  @Deprecated('Use AnalysisDriver.tmp1() instead')
+  factory AnalysisDriver(
+    AnalysisDriverScheduler scheduler,
+    PerformanceLog logger,
+    ResourceProvider resourceProvider,
+    ByteStore byteStore,
+    FileContentOverlay? contentOverlay,
+    // ignore: avoid_unused_constructor_parameters
+    ContextRoot? contextRoot,
+    SourceFactory sourceFactory,
+    AnalysisOptionsImpl analysisOptions, {
+    Packages? packages,
+    bool enableIndex = false,
+    SummaryDataStore? externalSummaries,
+    bool retainDataForTesting = false,
+  }) {
+    return AnalysisDriver.tmp1(
+      scheduler: scheduler,
+      logger: logger,
+      resourceProvider: resourceProvider,
+      byteStore: byteStore,
+      contentOverlay: contentOverlay,
+      sourceFactory: sourceFactory,
+      analysisOptions: analysisOptions,
+      packages: packages ?? Packages.empty,
+      enableIndex: enableIndex,
+      externalSummaries: externalSummaries,
+      retainDataForTesting: retainDataForTesting,
+    );
+  }
+
+  /// Create a new instance of [AnalysisDriver].
+  ///
+  /// The given [SourceFactory] is cloned to ensure that it does not contain a
+  /// reference to a [AnalysisContext] in which it could have been used.
+  AnalysisDriver.tmp1({
+    required AnalysisDriverScheduler scheduler,
+    required PerformanceLog logger,
+    required ResourceProvider resourceProvider,
+    required ByteStore byteStore,
+    @Deprecated('Use OverlayResourceProvider instead')
+        FileContentOverlay? contentOverlay,
+    required SourceFactory sourceFactory,
+    required AnalysisOptionsImpl analysisOptions,
+    required Packages packages,
+    bool enableIndex = false,
+    SummaryDataStore? externalSummaries,
+    bool retainDataForTesting = false,
+  })  : _scheduler = scheduler,
+        _resourceProvider = resourceProvider,
+        _byteStore = byteStore,
+        _contentOverlay = contentOverlay ?? FileContentOverlay(),
+        _analysisOptions = analysisOptions,
+        enableIndex = enableIndex,
+        _logger = logger,
+        _packages = packages,
         _sourceFactory = sourceFactory,
         _externalSummaries = externalSummaries,
         testingData = retainDataForTesting ? TestingData() : null {
diff --git a/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart b/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
index 17deaf8..49162d7 100644
--- a/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
@@ -325,9 +325,10 @@
   void _computeLints(FileState file, LinterContextUnit currentUnit,
       List<LinterContextUnit> allUnits) {
     var unit = currentUnit.unit;
-    ErrorReporter errorReporter = _getErrorReporter(file);
+    var errorReporter = _getErrorReporter(file);
 
-    var nodeRegistry = NodeLintRegistry(_analysisOptions.enableTiming);
+    var enableTiming = _analysisOptions.enableTiming;
+    var nodeRegistry = NodeLintRegistry(enableTiming);
     var visitors = <AstVisitor>[];
 
     var context = LinterContextImpl(
@@ -340,9 +341,12 @@
       _analysisOptions,
       file.workspacePackage,
     );
-    for (Linter linter in _analysisOptions.lintRules) {
+    for (var linter in _analysisOptions.lintRules) {
       linter.reporter = errorReporter;
+      var timer = enableTiming ? lintRegistry.getTimer(linter) : null;
+      timer?.start();
       linter.registerNodeProcessors(nodeRegistry, context);
+      timer?.stop();
     }
 
     // Run lints that handle specific node types.
diff --git a/pkg/analyzer/lib/src/lint/analysis.dart b/pkg/analyzer/lib/src/lint/analysis.dart
index dceca73..c77fc12 100644
--- a/pkg/analyzer/lib/src/lint/analysis.dart
+++ b/pkg/analyzer/lib/src/lint/analysis.dart
@@ -17,7 +17,6 @@
 import 'package:analyzer/src/dart/analysis/driver.dart';
 import 'package:analyzer/src/dart/analysis/driver_based_analysis_context.dart'
     as api;
-import 'package:analyzer/src/dart/analysis/file_state.dart';
 import 'package:analyzer/src/dart/analysis/performance_logger.dart';
 import 'package:analyzer/src/dart/sdk/sdk.dart';
 import 'package:analyzer/src/generated/engine.dart';
@@ -159,15 +158,13 @@
 
     PerformanceLog log = PerformanceLog(null);
     AnalysisDriverScheduler scheduler = AnalysisDriverScheduler(log);
-    AnalysisDriver analysisDriver = AnalysisDriver(
-      scheduler,
-      log,
-      resourceProvider,
-      MemoryByteStore(),
-      FileContentOverlay(),
-      null,
-      sourceFactory,
-      _buildAnalyzerOptions(options),
+    AnalysisDriver analysisDriver = AnalysisDriver.tmp1(
+      scheduler: scheduler,
+      logger: log,
+      resourceProvider: resourceProvider,
+      byteStore: MemoryByteStore(),
+      sourceFactory: sourceFactory,
+      analysisOptions: _buildAnalyzerOptions(options),
       packages: Packages.empty,
     );
 
diff --git a/pkg/analyzer/pubspec.yaml b/pkg/analyzer/pubspec.yaml
index 5e98178..5d25278 100644
--- a/pkg/analyzer/pubspec.yaml
+++ b/pkg/analyzer/pubspec.yaml
@@ -1,5 +1,5 @@
 name: analyzer
-version: 1.5.0
+version: 1.6.0-dev
 description: This package provides a library that performs static analysis of Dart code.
 homepage: https://github.com/dart-lang/sdk/tree/master/pkg/analyzer
 
diff --git a/pkg/analyzer/test/src/dart/analysis/base.dart b/pkg/analyzer/test/src/dart/analysis/base.dart
index 6b9f30f..542e7f8 100644
--- a/pkg/analyzer/test/src/dart/analysis/base.dart
+++ b/pkg/analyzer/test/src/dart/analysis/base.dart
@@ -9,7 +9,6 @@
 import 'package:analyzer/src/dart/analysis/byte_store.dart';
 import 'package:analyzer/src/dart/analysis/driver.dart';
 import 'package:analyzer/src/dart/analysis/experiments.dart';
-import 'package:analyzer/src/dart/analysis/file_state.dart';
 import 'package:analyzer/src/dart/analysis/performance_logger.dart';
 import 'package:analyzer/src/dart/analysis/status.dart';
 import 'package:analyzer/src/generated/engine.dart' show AnalysisOptionsImpl;
@@ -25,7 +24,6 @@
 class BaseAnalysisDriverTest with ResourceProviderMixin {
   late final DartSdk sdk;
   final ByteStore byteStore = MemoryByteStore();
-  final FileContentOverlay contentOverlay = FileContentOverlay();
 
   final StringBuffer logBuffer = StringBuffer();
   late final PerformanceLog logger;
@@ -61,42 +59,41 @@
       'aaa': [getFolder('/aaa/lib')],
       'bbb': [getFolder('/bbb/lib')],
     };
-    return AnalysisDriver(
-        scheduler,
-        logger,
-        resourceProvider,
-        byteStore,
-        contentOverlay,
-        null,
-        SourceFactory([
-          DartUriResolver(sdk),
-          generatedUriResolver,
-          PackageMapUriResolver(resourceProvider, packageMap),
-          ResourceUriResolver(resourceProvider)
-        ]),
-        createAnalysisOptions(),
-        packages: Packages({
-          'test': Package(
-            name: 'test',
-            rootFolder: getFolder(testProject),
-            libFolder: getFolder('$testProject/lib'),
-            languageVersion: Version.parse('2.9.0'),
-          ),
-          'aaa': Package(
-            name: 'aaa',
-            rootFolder: getFolder('/aaa'),
-            libFolder: getFolder('/aaa/lib'),
-            languageVersion: Version.parse('2.9.0'),
-          ),
-          'bbb': Package(
-            name: 'bbb',
-            rootFolder: getFolder('/bbb'),
-            libFolder: getFolder('/bbb/lib'),
-            languageVersion: Version.parse('2.9.0'),
-          ),
-        }),
-        enableIndex: true,
-        externalSummaries: externalSummaries);
+    return AnalysisDriver.tmp1(
+      scheduler: scheduler,
+      logger: logger,
+      resourceProvider: resourceProvider,
+      byteStore: byteStore,
+      sourceFactory: SourceFactory([
+        DartUriResolver(sdk),
+        generatedUriResolver,
+        PackageMapUriResolver(resourceProvider, packageMap),
+        ResourceUriResolver(resourceProvider)
+      ]),
+      analysisOptions: createAnalysisOptions(),
+      packages: Packages({
+        'test': Package(
+          name: 'test',
+          rootFolder: getFolder(testProject),
+          libFolder: getFolder('$testProject/lib'),
+          languageVersion: Version.parse('2.9.0'),
+        ),
+        'aaa': Package(
+          name: 'aaa',
+          rootFolder: getFolder('/aaa'),
+          libFolder: getFolder('/aaa/lib'),
+          languageVersion: Version.parse('2.9.0'),
+        ),
+        'bbb': Package(
+          name: 'bbb',
+          rootFolder: getFolder('/bbb'),
+          libFolder: getFolder('/bbb/lib'),
+          languageVersion: Version.parse('2.9.0'),
+        ),
+      }),
+      enableIndex: true,
+      externalSummaries: externalSummaries,
+    );
   }
 
   AnalysisOptionsImpl createAnalysisOptions() => AnalysisOptionsImpl()
diff --git a/pkg/analyzer/test/src/dart/analysis/driver_test.dart b/pkg/analyzer/test/src/dart/analysis/driver_test.dart
index ab12ee4..c8925ec 100644
--- a/pkg/analyzer/test/src/dart/analysis/driver_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/driver_test.dart
@@ -10,7 +10,6 @@
 import 'package:analyzer/src/context/packages.dart';
 import 'package:analyzer/src/dart/analysis/byte_store.dart';
 import 'package:analyzer/src/dart/analysis/driver.dart';
-import 'package:analyzer/src/dart/analysis/file_state.dart';
 import 'package:analyzer/src/dart/analysis/performance_logger.dart';
 import 'package:analyzer/src/dart/analysis/status.dart';
 import 'package:analyzer/src/dart/ast/extensions.dart';
@@ -54,7 +53,6 @@
 class AnalysisDriverSchedulerTest with ResourceProviderMixin {
   late DartSdk sdk;
   final ByteStore byteStore = MemoryByteStore();
-  final FileContentOverlay contentOverlay = FileContentOverlay();
 
   final StringBuffer logBuffer = StringBuffer();
   late final PerformanceLog logger;
@@ -65,18 +63,17 @@
 
   AnalysisDriver newDriver() {
     sdk = MockSdk(resourceProvider: resourceProvider);
-    AnalysisDriver driver = AnalysisDriver(
-        scheduler,
-        logger,
-        resourceProvider,
-        byteStore,
-        contentOverlay,
-        null,
-        SourceFactory(
-          [DartUriResolver(sdk), ResourceUriResolver(resourceProvider)],
-        ),
-        AnalysisOptionsImpl(),
-        packages: Packages.empty);
+    AnalysisDriver driver = AnalysisDriver.tmp1(
+      scheduler: scheduler,
+      logger: logger,
+      resourceProvider: resourceProvider,
+      byteStore: byteStore,
+      sourceFactory: SourceFactory(
+        [DartUriResolver(sdk), ResourceUriResolver(resourceProvider)],
+      ),
+      analysisOptions: AnalysisOptionsImpl(),
+      packages: Packages.empty,
+    );
     driver.results.forEach(allResults.add);
     return driver;
   }
@@ -2417,25 +2414,6 @@
     expect(typeC.element.getField('bar'), isNull);
   }
 
-  test_hermetic_overlayOnly_part() async {
-    var a = convertPath('/test/lib/a.dart');
-    var b = convertPath('/test/lib/b.dart');
-    contentOverlay[a] = r'''
-library a;
-part 'b.dart';
-class A {}
-var b = new B();
-''';
-    contentOverlay[b] = 'part of a; class B {}';
-
-    driver.addFile(a);
-    driver.addFile(b);
-
-    ResolvedUnitResult result = await driver.getResultValid(a);
-    expect(result.errors, isEmpty);
-    _assertTopLevelVarType(result.unit!, 'b', 'B');
-  }
-
   test_importOfNonLibrary_part_afterLibrary() async {
     var a = convertPath('/test/lib/a.dart');
     var b = convertPath('/test/lib/b.dart');
diff --git a/pkg/analyzer/test/util/id_testing_helper.dart b/pkg/analyzer/test/util/id_testing_helper.dart
index e8c4e79..6d75b6f 100644
--- a/pkg/analyzer/test/util/id_testing_helper.dart
+++ b/pkg/analyzer/test/util/id_testing_helper.dart
@@ -19,7 +19,6 @@
 import 'package:analyzer/src/context/packages.dart';
 import 'package:analyzer/src/dart/analysis/byte_store.dart';
 import 'package:analyzer/src/dart/analysis/driver.dart';
-import 'package:analyzer/src/dart/analysis/file_state.dart';
 import 'package:analyzer/src/dart/analysis/performance_logger.dart';
 import 'package:analyzer/src/dart/analysis/testing_data.dart';
 import 'package:analyzer/src/generated/engine.dart';
@@ -146,21 +145,20 @@
   var byteStore = MemoryByteStore();
   var analysisOptions = AnalysisOptionsImpl()
     ..contextFeatures = config.featureSet;
-  var driver = AnalysisDriver(
-      scheduler,
-      logger,
-      resourceProvider,
-      byteStore,
-      FileContentOverlay(),
-      null,
-      SourceFactory([
-        DartUriResolver(sdk),
-        PackageMapUriResolver(resourceProvider, packageMap),
-        ResourceUriResolver(resourceProvider)
-      ]),
-      analysisOptions,
-      packages: Packages.empty,
-      retainDataForTesting: true);
+  var driver = AnalysisDriver.tmp1(
+    scheduler: scheduler,
+    logger: logger,
+    resourceProvider: resourceProvider,
+    byteStore: byteStore,
+    sourceFactory: SourceFactory([
+      DartUriResolver(sdk),
+      PackageMapUriResolver(resourceProvider, packageMap),
+      ResourceUriResolver(resourceProvider)
+    ]),
+    analysisOptions: analysisOptions,
+    packages: Packages.empty,
+    retainDataForTesting: true,
+  );
   scheduler.start();
 
   Map<Uri, Map<Id, ActualData<T>>> actualMaps = <Uri, Map<Id, ActualData<T>>>{};
diff --git a/tools/VERSION b/tools/VERSION
index f71302f..195dc9c 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 14
 PATCH 0
-PRERELEASE 109
+PRERELEASE 110
 PRERELEASE_PATCH 0
\ No newline at end of file