Version 2.11.0-211.0.dev

Merge commit '5b52dfccf563824f273295a978ddd9404c16492b' into 'dev'
diff --git a/pkg/analyzer/lib/src/dart/analysis/driver.dart b/pkg/analyzer/lib/src/dart/analysis/driver.dart
index e429f2b..8e30f1f 100644
--- a/pkg/analyzer/lib/src/dart/analysis/driver.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/driver.dart
@@ -1450,6 +1450,8 @@
       resourceProvider: _resourceProvider,
       packages: _packages,
       packageDefaultFeatureSet: _analysisOptions.contextFeatures,
+      nonPackageDefaultLanguageVersion:
+          _analysisOptions.nonPackageLanguageVersion,
       nonPackageDefaultFeatureSet: _analysisOptions.nonPackageFeatureSet,
     );
 
diff --git a/pkg/analyzer/lib/src/dart/analysis/feature_set_provider.dart b/pkg/analyzer/lib/src/dart/analysis/feature_set_provider.dart
index 45de3c8..16a57bd 100644
--- a/pkg/analyzer/lib/src/dart/analysis/feature_set_provider.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/feature_set_provider.dart
@@ -23,6 +23,7 @@
   final ResourceProvider _resourceProvider;
   final Packages _packages;
   final FeatureSet _packageDefaultFeatureSet;
+  final Version _nonPackageDefaultLanguageVersion;
   final FeatureSet _nonPackageDefaultFeatureSet;
 
   FeatureSetProvider._({
@@ -31,12 +32,14 @@
     @required ResourceProvider resourceProvider,
     @required Packages packages,
     @required FeatureSet packageDefaultFeatureSet,
+    @required Version nonPackageDefaultLanguageVersion,
     @required FeatureSet nonPackageDefaultFeatureSet,
   })  : _sdkLanguageVersion = sdkLanguageVersion,
         _allowedExperiments = allowedExperiments,
         _resourceProvider = resourceProvider,
         _packages = packages,
         _packageDefaultFeatureSet = packageDefaultFeatureSet,
+        _nonPackageDefaultLanguageVersion = nonPackageDefaultLanguageVersion,
         _nonPackageDefaultFeatureSet = nonPackageDefaultFeatureSet;
 
   FeatureSet featureSetForExperiments(List<String> experiments) {
@@ -90,9 +93,10 @@
       if (languageVersion != null) {
         return languageVersion;
       }
+      return ExperimentStatus.currentVersion;
     }
 
-    return ExperimentStatus.currentVersion;
+    return _nonPackageDefaultLanguageVersion;
   }
 
   /// Return the package corresponding to the [uri] or [path], `null` if none.
@@ -130,6 +134,7 @@
     @required ResourceProvider resourceProvider,
     @required Packages packages,
     @required FeatureSet packageDefaultFeatureSet,
+    @required Version nonPackageDefaultLanguageVersion,
     @required FeatureSet nonPackageDefaultFeatureSet,
   }) {
     var sdk = sourceFactory.dartSdk;
@@ -140,6 +145,7 @@
       resourceProvider: resourceProvider,
       packages: packages,
       packageDefaultFeatureSet: packageDefaultFeatureSet,
+      nonPackageDefaultLanguageVersion: nonPackageDefaultLanguageVersion,
       nonPackageDefaultFeatureSet: nonPackageDefaultFeatureSet,
     );
   }
diff --git a/pkg/analyzer/lib/src/dart/micro/resolve_file.dart b/pkg/analyzer/lib/src/dart/micro/resolve_file.dart
index 1547218..53409d0 100644
--- a/pkg/analyzer/lib/src/dart/micro/resolve_file.dart
+++ b/pkg/analyzer/lib/src/dart/micro/resolve_file.dart
@@ -15,6 +15,7 @@
 import 'package:analyzer/src/dart/analysis/byte_store.dart';
 import 'package:analyzer/src/dart/analysis/context_root.dart';
 import 'package:analyzer/src/dart/analysis/driver.dart' show ErrorEncoding;
+import 'package:analyzer/src/dart/analysis/experiments.dart';
 import 'package:analyzer/src/dart/analysis/feature_set_provider.dart';
 import 'package:analyzer/src/dart/analysis/performance_logger.dart';
 import 'package:analyzer/src/dart/analysis/results.dart';
@@ -393,6 +394,7 @@
         resourceProvider: resourceProvider,
         packages: Packages.empty,
         packageDefaultFeatureSet: analysisOptions.contextFeatures,
+        nonPackageDefaultLanguageVersion: ExperimentStatus.currentVersion,
         nonPackageDefaultFeatureSet: analysisOptions.nonPackageFeatureSet,
       );
 
diff --git a/pkg/analyzer/lib/src/generated/engine.dart b/pkg/analyzer/lib/src/generated/engine.dart
index 4bbf974..f1baaf4 100644
--- a/pkg/analyzer/lib/src/generated/engine.dart
+++ b/pkg/analyzer/lib/src/generated/engine.dart
@@ -287,6 +287,12 @@
 
   ExperimentStatus _contextFeatures = ExperimentStatus();
 
+  /// The language version to use for libraries that are not in a package.
+  ///
+  /// If a library is in a package, this language version is *not* used,
+  /// even if the package does not specify the language version.
+  Version nonPackageLanguageVersion = ExperimentStatus.currentVersion;
+
   /// The set of features to use for libraries that are not in a package.
   ///
   /// If a library is in a package, this feature set is *not* used, even if the
diff --git a/pkg/analyzer/test/src/dart/analysis/feature_set_provider_test.dart b/pkg/analyzer/test/src/dart/analysis/feature_set_provider_test.dart
index edcdbb7..b304d11 100644
--- a/pkg/analyzer/test/src/dart/analysis/feature_set_provider_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/feature_set_provider_test.dart
@@ -83,6 +83,7 @@
       resourceProvider: resourceProvider,
       packages: packages,
       packageDefaultFeatureSet: FeatureSet.latestLanguageVersion(),
+      nonPackageDefaultLanguageVersion: ExperimentStatus.currentVersion,
       nonPackageDefaultFeatureSet: FeatureSet.latestLanguageVersion(),
     );
 
@@ -130,6 +131,7 @@
       resourceProvider: resourceProvider,
       packages: packages,
       packageDefaultFeatureSet: FeatureSet.latestLanguageVersion(),
+      nonPackageDefaultLanguageVersion: ExperimentStatus.currentVersion,
       nonPackageDefaultFeatureSet: FeatureSet.latestLanguageVersion(),
     );
 
@@ -177,6 +179,7 @@
       resourceProvider: resourceProvider,
       packages: packages,
       packageDefaultFeatureSet: FeatureSet.latestLanguageVersion(),
+      nonPackageDefaultLanguageVersion: ExperimentStatus.currentVersion,
       nonPackageDefaultFeatureSet: FeatureSet.latestLanguageVersion(),
     );
 
@@ -245,6 +248,7 @@
       resourceProvider: resourceProvider,
       packages: packages,
       packageDefaultFeatureSet: ExperimentStatus.latestWithNullSafety,
+      nonPackageDefaultLanguageVersion: ExperimentStatus.currentVersion,
       nonPackageDefaultFeatureSet: FeatureSet.latestLanguageVersion(),
     );
 
@@ -275,6 +279,7 @@
       resourceProvider: resourceProvider,
       packages: findPackagesFrom(resourceProvider, getFolder('/test')),
       packageDefaultFeatureSet: FeatureSet.latestLanguageVersion(),
+      nonPackageDefaultLanguageVersion: ExperimentStatus.currentVersion,
       nonPackageDefaultFeatureSet: FeatureSet.latestLanguageVersion(),
     );
 
@@ -307,6 +312,7 @@
       resourceProvider: resourceProvider,
       packages: findPackagesFrom(resourceProvider, getFolder('/test')),
       packageDefaultFeatureSet: FeatureSet.latestLanguageVersion(),
+      nonPackageDefaultLanguageVersion: ExperimentStatus.currentVersion,
       nonPackageDefaultFeatureSet: FeatureSet.latestLanguageVersion(),
     );
 
@@ -323,6 +329,7 @@
       resourceProvider: resourceProvider,
       packages: findPackagesFrom(resourceProvider, getFolder('/test')),
       packageDefaultFeatureSet: FeatureSet.latestLanguageVersion(),
+      nonPackageDefaultLanguageVersion: ExperimentStatus.currentVersion,
       nonPackageDefaultFeatureSet: FeatureSet.latestLanguageVersion(),
     );
 
diff --git a/pkg/analyzer/test/src/dart/analysis/file_state_test.dart b/pkg/analyzer/test/src/dart/analysis/file_state_test.dart
index 0432c93..b2a098a 100644
--- a/pkg/analyzer/test/src/dart/analysis/file_state_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/file_state_test.dart
@@ -10,6 +10,7 @@
 import 'package:analyzer/file_system/file_system.dart';
 import 'package:analyzer/src/context/packages.dart';
 import 'package:analyzer/src/dart/analysis/byte_store.dart';
+import 'package:analyzer/src/dart/analysis/experiments.dart';
 import 'package:analyzer/src/dart/analysis/feature_set_provider.dart';
 import 'package:analyzer/src/dart/analysis/file_state.dart';
 import 'package:analyzer/src/dart/analysis/library_graph.dart';
@@ -76,6 +77,7 @@
       resourceProvider: resourceProvider,
       packages: Packages.empty,
       packageDefaultFeatureSet: FeatureSet.latestLanguageVersion(),
+      nonPackageDefaultLanguageVersion: ExperimentStatus.currentVersion,
       nonPackageDefaultFeatureSet: FeatureSet.latestLanguageVersion(),
     );
     fileSystemState = FileSystemState(
diff --git a/pkg/analyzer_cli/lib/src/context_cache.dart b/pkg/analyzer_cli/lib/src/context_cache.dart
index 276ac43..6c0bb25 100644
--- a/pkg/analyzer_cli/lib/src/context_cache.dart
+++ b/pkg/analyzer_cli/lib/src/context_cache.dart
@@ -86,19 +86,21 @@
   String get analysisRoot => _analysisRoot ??= _getAnalysisRoot();
 
   void _buildContextFeatureSet(AnalysisOptionsImpl analysisOptions) {
-    var sdkLanguageVersion = ExperimentStatus.currentVersion;
-    if (clOptions.defaultLanguageVersion != null) {
-      sdkLanguageVersion = Version.parse(
-        clOptions.defaultLanguageVersion + '.0',
-      );
-    }
-
     var featureSet = FeatureSet.fromEnableFlags2(
-      sdkLanguageVersion: sdkLanguageVersion,
+      sdkLanguageVersion: ExperimentStatus.currentVersion,
       flags: clOptions.enabledExperiments,
     );
 
     analysisOptions.contextFeatures = featureSet;
+
+    if (clOptions.defaultLanguageVersion != null) {
+      var nonPackageLanguageVersion = Version.parse(
+        clOptions.defaultLanguageVersion + '.0',
+      );
+      analysisOptions.nonPackageLanguageVersion = nonPackageLanguageVersion;
+      analysisOptions.nonPackageFeatureSet = FeatureSet.latestLanguageVersion()
+          .restrictToVersion(nonPackageLanguageVersion);
+    }
   }
 
   /// The actual calculation to get the [AnalysisOptionsImpl], with no caching.
diff --git a/tools/VERSION b/tools/VERSION
index 538e518..6e5de11 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 11
 PATCH 0
-PRERELEASE 210
+PRERELEASE 211
 PRERELEASE_PATCH 0
\ No newline at end of file