Version 2.10.0-121.0.dev

Merge commit 'ba78db411ae159698c642a460f9e6966f5efcb3c' into 'dev'
diff --git a/pkg/analysis_server/lib/src/context_manager.dart b/pkg/analysis_server/lib/src/context_manager.dart
index 9b61e31..a10f7eb 100644
--- a/pkg/analysis_server/lib/src/context_manager.dart
+++ b/pkg/analysis_server/lib/src/context_manager.dart
@@ -1035,7 +1035,7 @@
   /// given [folder].
   SourceFactory _createSourceFactory(AnalysisOptions options, Folder folder) {
     var builder = callbacks.createContextBuilder(folder, options);
-    return builder.createSourceFactory(folder.path, options);
+    return builder.createSourceFactory(folder.path);
   }
 
   /// Clean up and destroy the context associated with the given folder.
@@ -1398,7 +1398,7 @@
         callbacks.createContextBuilder(info.folder, defaultContextOptions);
     var options = builder.getAnalysisOptions(contextRoot,
         contextRoot: driver.contextRoot);
-    var factory = builder.createSourceFactory(contextRoot, options);
+    var factory = builder.createSourceFactory(contextRoot);
     driver.configure(analysisOptions: options, sourceFactory: factory);
     callbacks.analysisOptionsUpdated(driver);
   }
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/data_driven.dart b/pkg/analysis_server/lib/src/services/correction/dart/data_driven.dart
index b9bfecb..bcf7198 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/data_driven.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/data_driven.dart
@@ -4,6 +4,7 @@
 
 import 'package:analysis_server/src/services/correction/dart/abstract_producer.dart';
 import 'package:analysis_server/src/services/correction/fix.dart';
+import 'package:analysis_server/src/services/correction/fix/data_driven/element_descriptor.dart';
 import 'package:analysis_server/src/services/correction/fix/data_driven/transform.dart';
 import 'package:analysis_server/src/services/correction/fix/data_driven/transform_set.dart';
 import 'package:analysis_server/src/services/correction/fix/data_driven/transform_set_manager.dart';
@@ -83,6 +84,9 @@
 
   DataDrivenFix(this._transform);
 
+  /// Return a description of the element that was changed.
+  ElementDescriptor get element => _transform.element;
+
   @override
   List<Object> get fixArguments => [_transform.title];
 
diff --git a/pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_descriptor.dart b/pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_descriptor.dart
index b8f0b84..c34212d 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_descriptor.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_descriptor.dart
@@ -9,18 +9,30 @@
   /// The URIs of the library in which the element is defined.
   final List<String> libraryUris;
 
+  /// The kind of element that was changed.
+  final String kind;
+
   /// The components that uniquely identify the element within its library.
   final List<String> components;
 
   /// Initialize a newly created element descriptor to describe an element
   /// accessible via any of the [libraryUris] where the path to the element
-  /// within the library is given by the list of [components].
-  ElementDescriptor({@required this.libraryUris, @required this.components});
+  /// within the library is given by the list of [components]. The [kind] of the
+  /// element is represented by the key used in the data file.
+  ElementDescriptor(
+      {@required this.libraryUris,
+      @required this.kind,
+      @required this.components});
 
   /// Return `true` if this descriptor matches an element with the given [name]
   /// in a library that imports the [importedUris].
   bool matches(String name, List<String> importedUris) {
-    if (components.last != name) {
+    var lastComponent = components.last;
+    if (lastComponent.isEmpty) {
+      if (components[components.length - 2] != name) {
+        return false;
+      }
+    } else if (lastComponent != name) {
       return false;
     }
     for (var importedUri in importedUris) {
diff --git a/pkg/analysis_server/lib/src/services/correction/fix/data_driven/rename.dart b/pkg/analysis_server/lib/src/services/correction/fix/data_driven/rename.dart
index 46135f0..326122e 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix/data_driven/rename.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix/data_driven/rename.dart
@@ -21,7 +21,45 @@
   @override
   void apply(DartFileEditBuilder builder, DataDrivenFix fix,
       SimpleIdentifier nameNode) {
-    builder.addSimpleReplacement(range.node(nameNode), newName);
+    if (fix.element.kind == 'constructor') {
+      var parent = nameNode.parent;
+      if (parent is ConstructorName) {
+        if (nameNode != null && newName.isEmpty) {
+          // The constructor was renamed from a named constructor to an unnamed
+          // constructor.
+          builder.addDeletion(range.startEnd(parent.period, parent));
+        } else if (nameNode == null && newName.isNotEmpty) {
+          // The constructor was renamed from an unnamed constructor to a named
+          // constructor.
+          builder.addSimpleInsertion(parent.end, '.$newName');
+        } else {
+          // The constructor was renamed from a named constructor to another
+          // named constructor.
+          builder.addSimpleReplacement(range.node(nameNode), newName);
+        }
+      } else if (parent is MethodInvocation) {
+        if (newName.isEmpty) {
+          // The constructor was renamed from a named constructor to an unnamed
+          // constructor.
+          builder.addDeletion(range.startEnd(parent.operator, nameNode));
+        } else {
+          // The constructor was renamed from a named constructor to another
+          // named constructor.
+          builder.addSimpleReplacement(range.node(nameNode), newName);
+        }
+      } else if (parent is TypeName && parent.parent is ConstructorName) {
+        // The constructor was renamed from an unnamed constructor to a named
+        // constructor.
+        builder.addSimpleInsertion(parent.end, '.$newName');
+      } else {
+        // The constructor was renamed from a named constructor to another named
+        // constructor.
+        builder.addSimpleReplacement(range.node(nameNode), newName);
+      }
+    } else {
+      // The name is a simple identifier.
+      builder.addSimpleReplacement(range.node(nameNode), newName);
+    }
   }
 
   @override
diff --git a/pkg/analysis_server/lib/src/services/correction/fix/data_driven/transform_set_parser.dart b/pkg/analysis_server/lib/src/services/correction/fix/data_driven/transform_set_parser.dart
index 5d3d086..e07d6b4 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix/data_driven/transform_set_parser.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix/data_driven/transform_set_parser.dart
@@ -373,7 +373,8 @@
       } else {
         components.insert(0, containerName);
       }
-      return ElementDescriptor(libraryUris: uris, components: components);
+      return ElementDescriptor(
+          libraryUris: uris, kind: elementKey, components: components);
     } else if (node == null) {
       // TODO(brianwilkerson) Report the missing YAML.
       return null;
diff --git a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
index 7160cf4..adfaa6e 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
@@ -528,6 +528,9 @@
     CompileTimeErrorCode.NEW_WITH_NON_TYPE: [
       ImportLibrary.forType,
     ],
+    CompileTimeErrorCode.NEW_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT: [
+      DataDriven.newInstance,
+    ],
     CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_EXPLICIT: [
       AddSuperConstructorInvocation.newInstance,
     ],
diff --git a/pkg/analysis_server/lib/src/status/diagnostics.dart b/pkg/analysis_server/lib/src/status/diagnostics.dart
index dcbc8f0..540843b 100644
--- a/pkg/analysis_server/lib/src/status/diagnostics.dart
+++ b/pkg/analysis_server/lib/src/status/diagnostics.dart
@@ -500,16 +500,6 @@
 
     buf.writeln('</div>');
 
-    buf.writeln('<div class="column one-half">');
-    var sdk = driver?.sourceFactory?.dartSdk;
-    AnalysisOptionsImpl sdkOptions = sdk?.context?.analysisOptions;
-    if (sdkOptions != null) {
-      h3('SDK analysis options');
-      p(describe(sdkOptions), raw: true);
-    }
-
-    buf.writeln('</div>');
-
     buf.writeln('</div>');
 
     h3('Lints');
diff --git a/pkg/analysis_server/test/src/services/correction/fix/data_driven/add_type_parameter_test.dart b/pkg/analysis_server/test/src/services/correction/fix/data_driven/add_type_parameter_test.dart
index a296cb0..5a29c7a 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/data_driven/add_type_parameter_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/data_driven/add_type_parameter_test.dart
@@ -459,7 +459,10 @@
       Transform(
           title: 'title',
           element: ElementDescriptor(
-              libraryUris: [importUri], components: components ?? ['C', 'm']),
+              libraryUris: [importUri],
+              // The kind isn't important to these tests.
+              kind: '',
+              components: components ?? ['C', 'm']),
           changes: [
             AddTypeParameter(
                 extendedType: extendedType,
diff --git a/pkg/analysis_server/test/src/services/correction/fix/data_driven/modify_parameters_test.dart b/pkg/analysis_server/test/src/services/correction/fix/data_driven/modify_parameters_test.dart
index a3f26a4..4dd1eb4 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/data_driven/modify_parameters_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/data_driven/modify_parameters_test.dart
@@ -873,11 +873,15 @@
 
 abstract class _ModifyParameters extends DataDrivenFixProcessorTest {
   Transform _modify(List<String> originalComponents,
-          List<ParameterModification> modifications, {String newName}) =>
+          List<ParameterModification> modifications,
+          {String newName}) =>
       Transform(
           title: 'title',
           element: ElementDescriptor(
-              libraryUris: [importUri], components: originalComponents),
+              libraryUris: [importUri],
+              // The kind isn't important to these tests.
+              kind: '',
+              components: originalComponents),
           changes: [
             ModifyParameters(modifications: modifications),
             if (newName != null) Rename(newName: newName),
diff --git a/pkg/analysis_server/test/src/services/correction/fix/data_driven/rename_test.dart b/pkg/analysis_server/test/src/services/correction/fix/data_driven/rename_test.dart
index 74bda48..4aff96a 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/data_driven/rename_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/data_driven/rename_test.dart
@@ -24,6 +24,109 @@
 
 @reflectiveTest
 class RenameClassTest extends _AbstractRenameTest {
+  @override
+  String get _kind => 'class';
+
+  Future<void> test_constructor_named_deprecated() async {
+    setPackageContent('''
+@deprecated
+class Old {
+  Old.c();
+}
+class New {
+  New.c();
+}
+''');
+    setPackageData(_rename(['Old'], 'New'));
+    await resolveTestUnit('''
+import '$importUri';
+
+void f() {
+  Old.c();
+}
+''');
+    await assertHasFix('''
+import '$importUri';
+
+void f() {
+  New.c();
+}
+''');
+  }
+
+  Future<void> test_constructor_named_removed() async {
+    setPackageContent('''
+class New {
+  New.c();
+}
+''');
+    setPackageData(_rename(['Old'], 'New'));
+    await resolveTestUnit('''
+import '$importUri';
+
+void f() {
+  Old.c();
+}
+''');
+    await assertHasFix('''
+import '$importUri';
+
+void f() {
+  New.c();
+}
+''', errorFilter: ignoreUnusedImport);
+  }
+
+  Future<void> test_constructor_unnamed_deprecated() async {
+    setPackageContent('''
+@deprecated
+class Old {
+  Old();
+}
+class New {
+  New();
+}
+''');
+    setPackageData(_rename(['Old'], 'New'));
+    await resolveTestUnit('''
+import '$importUri';
+
+void f() {
+  Old();
+}
+''');
+    await assertHasFix('''
+import '$importUri';
+
+void f() {
+  New();
+}
+''');
+  }
+
+  Future<void> test_constructor_unnamed_removed() async {
+    setPackageContent('''
+class New {
+  New();
+}
+''');
+    setPackageData(_rename(['Old'], 'New'));
+    await resolveTestUnit('''
+import '$importUri';
+
+void f() {
+  Old();
+}
+''');
+    await assertHasFix('''
+import '$importUri';
+
+void f() {
+  New();
+}
+''', errorFilter: ignoreUnusedImport);
+  }
+
   Future<void> test_inExtends_deprecated() async {
     setPackageContent('''
 @deprecated
@@ -249,7 +352,10 @@
 
 @reflectiveTest
 class RenameConstructorTest extends _AbstractRenameTest {
-  Future<void> test_named_deprecated() async {
+  @override
+  String get _kind => 'constructor';
+
+  Future<void> test_named_named_deprecated() async {
     setPackageContent('''
 class C {
   @deprecated
@@ -274,7 +380,7 @@
 ''');
   }
 
-  Future<void> test_named_removed() async {
+  Future<void> test_named_named_removed() async {
     setPackageContent('''
 class C {
   C.new();
@@ -297,59 +403,108 @@
 ''');
   }
 
-  Future<void> test_unnamed_deprecated() async {
+  Future<void> test_named_unnamed_deprecated() async {
     setPackageContent('''
-@deprecated
-class Old {
-  Old();
-}
-class New {
-  New();
+class C {
+  @deprecated
+  C.old();
+  C();
 }
 ''');
-    setPackageData(_rename(['Old'], 'New'));
+    setPackageData(_rename(['C', 'old'], ''));
     await resolveTestUnit('''
 import '$importUri';
 
 void f() {
-  Old();
+  C.old();
 }
 ''');
     await assertHasFix('''
 import '$importUri';
 
 void f() {
-  New();
+  C();
 }
 ''');
   }
 
-  Future<void> test_unnamed_removed() async {
+  Future<void> test_named_unnamed_removed() async {
     setPackageContent('''
-class New {
-  New();
+class C {
+  C();
 }
 ''');
-    setPackageData(_rename(['Old'], 'New'));
+    setPackageData(_rename(['C', 'old'], ''));
     await resolveTestUnit('''
 import '$importUri';
 
 void f() {
-  Old();
+  C.old();
 }
 ''');
     await assertHasFix('''
 import '$importUri';
 
 void f() {
-  New();
+  C();
 }
-''', errorFilter: ignoreUnusedImport);
+''');
+  }
+
+  Future<void> test_unnamed_named_deprecated() async {
+    setPackageContent('''
+class C {
+  @deprecated
+  C();
+  C.new();
+}
+''');
+    setPackageData(_rename(['C', ''], 'new'));
+    await resolveTestUnit('''
+import '$importUri';
+
+void f() {
+  C();
+}
+''');
+    await assertHasFix('''
+import '$importUri';
+
+void f() {
+  C.new();
+}
+''');
+  }
+
+  Future<void> test_unnamed_named_removed() async {
+    setPackageContent('''
+class C {
+  C.new();
+}
+''');
+    setPackageData(_rename(['C', ''], 'new'));
+    await resolveTestUnit('''
+import '$importUri';
+
+void f() {
+  C();
+}
+''');
+    await assertHasFix('''
+import '$importUri';
+
+void f() {
+  C.new();
+}
+''');
   }
 }
 
 @reflectiveTest
 class RenameExtensionTest extends _AbstractRenameTest {
+  @override
+  String get _kind => 'extension';
+
   Future<void> test_override_deprecated() async {
     setPackageContent('''
 @deprecated
@@ -437,6 +592,9 @@
 
 @reflectiveTest
 class RenameFieldTest extends _AbstractRenameTest {
+  @override
+  String get _kind => 'field';
+
   Future<void> test_instance_reference_deprecated() async {
     setPackageContent('''
 class C {
@@ -584,6 +742,9 @@
 
 @reflectiveTest
 class RenameMethodTest extends _AbstractRenameTest {
+  @override
+  String get _kind => 'method';
+
   @failingTest
   Future<void> test_instance_override_deprecated() async {
     setPackageContent('''
@@ -736,6 +897,9 @@
 
 @reflectiveTest
 class RenameMixinTest extends _AbstractRenameTest {
+  @override
+  String get _kind => 'mixin';
+
   Future<void> test_inWith_deprecated() async {
     setPackageContent('''
 @deprecated
@@ -775,6 +939,9 @@
 
 @reflectiveTest
 class RenameTopLevelFunctionTest extends _AbstractRenameTest {
+  @override
+  String get _kind => 'function';
+
   Future<void> test_deprecated() async {
     setPackageContent('''
 @deprecated
@@ -822,6 +989,9 @@
 
 @reflectiveTest
 class RenameTypedefTest extends _AbstractRenameTest {
+  @override
+  String get _kind => 'typedef';
+
   Future<void> test_deprecated() async {
     setPackageContent('''
 @deprecated
@@ -859,11 +1029,14 @@
   }
 }
 
-class _AbstractRenameTest extends DataDrivenFixProcessorTest {
+abstract class _AbstractRenameTest extends DataDrivenFixProcessorTest {
+  /// Return the kind of element being renamed.
+  String get _kind;
+
   Transform _rename(List<String> components, String newName) => Transform(
           title: 'title',
           element: ElementDescriptor(
-              libraryUris: [importUri], components: components),
+              libraryUris: [importUri], kind: _kind, components: components),
           changes: [
             Rename(newName: newName),
           ]);
diff --git a/pkg/analyzer/lib/dart/sdk/build_sdk_summary.dart b/pkg/analyzer/lib/dart/sdk/build_sdk_summary.dart
index 8f2757b..8705915 100644
--- a/pkg/analyzer/lib/dart/sdk/build_sdk_summary.dart
+++ b/pkg/analyzer/lib/dart/sdk/build_sdk_summary.dart
@@ -5,11 +5,13 @@
 import 'dart:typed_data';
 
 import 'package:_fe_analyzer_shared/src/sdk/allowed_experiments.dart';
+import 'package:analyzer/dart/analysis/declared_variables.dart';
 import 'package:analyzer/dart/analysis/features.dart';
 import 'package:analyzer/dart/analysis/utilities.dart';
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/file_system/file_system.dart';
+import 'package:analyzer/src/context/context.dart';
 import 'package:analyzer/src/dart/analysis/experiments.dart';
 import 'package:analyzer/src/dart/analysis/session.dart';
 import 'package:analyzer/src/dart/ast/ast.dart';
@@ -38,7 +40,6 @@
     resourceProvider,
     resourceProvider.getFolder(sdkPath),
   );
-  sdk.analysisOptions = AnalysisOptionsImpl();
 
   // Append libraries from the embedder.
   if (embedderYamlPath != null) {
@@ -62,8 +63,13 @@
     return sdk.mapDartUri(e.shortName);
   }).toList();
 
+  var analysisContext = AnalysisContextImpl(
+    SynchronousSession(AnalysisOptionsImpl(), DeclaredVariables()),
+    SourceFactory([DartUriResolver(sdk)]),
+  );
+
   return _Builder(
-    sdk.context,
+    analysisContext,
     sdk.allowedExperimentsJson,
     sdk.languageVersion,
     librarySources,
@@ -71,7 +77,7 @@
 }
 
 class _Builder {
-  final AnalysisContext context;
+  final AnalysisContextImpl context;
   final String allowedExperimentsJson;
   final Iterable<Source> librarySources;
 
diff --git a/pkg/analyzer/lib/src/context/builder.dart b/pkg/analyzer/lib/src/context/builder.dart
index 839db04..7a43df7 100644
--- a/pkg/analyzer/lib/src/context/builder.dart
+++ b/pkg/analyzer/lib/src/context/builder.dart
@@ -114,7 +114,7 @@
     if (builderOptions.librarySummaryPaths != null) {
       summaryData = SummaryDataStore(builderOptions.librarySummaryPaths);
     }
-    final sf = createSourceFactory(path, options, summaryData: summaryData);
+    final sf = createSourceFactory(path, summaryData: summaryData);
 
     AnalysisDriver driver = AnalysisDriver(
       analysisDriverScheduler,
@@ -198,11 +198,11 @@
     }
   }
 
-  SourceFactory createSourceFactory(String rootPath, AnalysisOptions options,
+  SourceFactory createSourceFactory(String rootPath,
       {SummaryDataStore summaryData}) {
     Workspace workspace =
         ContextBuilder.createWorkspace(resourceProvider, rootPath, this);
-    DartSdk sdk = findSdk(workspace, options);
+    DartSdk sdk = findSdk(workspace);
     if (summaryData != null && sdk is SummaryBasedDartSdk) {
       summaryData.addBundle(null, sdk.bundle);
     }
@@ -220,10 +220,8 @@
   }
 
   /// Return the SDK that should be used to analyze code. Use the given
-  /// [workspace] and [analysisOptions] to locate the SDK.
-  ///
-  /// TODO(scheglov) Remove [analysisOptions]?
-  DartSdk findSdk(Workspace workspace, AnalysisOptions analysisOptions) {
+  /// [workspace] to locate the SDK.
+  DartSdk findSdk(Workspace workspace) {
     String summaryPath = builderOptions.dartSdkSummaryPath;
     if (summaryPath != null) {
       return SummaryBasedDartSdk(summaryPath, true,
@@ -235,12 +233,10 @@
       String sdkPath = sdkManager.defaultSdkDirectory;
       SdkDescription description = SdkDescription(sdkPath);
       folderSdk = sdkManager.getSdk(description, () {
-        var sdk = FolderBasedDartSdk(
+        return FolderBasedDartSdk(
           resourceProvider,
           resourceProvider.getFolder(sdkPath),
         );
-        sdk.analysisOptions = analysisOptions;
-        return sdk;
       });
     }
 
diff --git a/pkg/analyzer/lib/src/context/context.dart b/pkg/analyzer/lib/src/context/context.dart
index 78b0a00..28cdb0c 100644
--- a/pkg/analyzer/lib/src/context/context.dart
+++ b/pkg/analyzer/lib/src/context/context.dart
@@ -70,12 +70,3 @@
     );
   }
 }
-
-/// An [AnalysisContext] that only contains sources for a Dart SDK.
-class SdkAnalysisContext extends AnalysisContextImpl {
-  /// Initialize a newly created SDK analysis context with the given [options].
-  /// Analysis options cannot be changed afterwards.  If the given [options] are
-  /// `null`, then default options are used.
-  SdkAnalysisContext(AnalysisOptions options, SourceFactory sourceFactory)
-      : super(SynchronousSession(options, DeclaredVariables()), sourceFactory);
-}
diff --git a/pkg/analyzer/lib/src/dart/sdk/sdk.dart b/pkg/analyzer/lib/src/dart/sdk/sdk.dart
index a5db15b..5c3e5c9 100644
--- a/pkg/analyzer/lib/src/dart/sdk/sdk.dart
+++ b/pkg/analyzer/lib/src/dart/sdk/sdk.dart
@@ -10,7 +10,6 @@
 import 'package:analyzer/exception/exception.dart';
 import 'package:analyzer/file_system/file_system.dart';
 import 'package:analyzer/file_system/memory_file_system.dart';
-import 'package:analyzer/src/context/context.dart';
 import 'package:analyzer/src/generated/engine.dart';
 import 'package:analyzer/src/generated/java_engine_io.dart';
 import 'package:analyzer/src/generated/sdk.dart';
@@ -35,37 +34,9 @@
   /// A mapping from Dart library URI's to the library represented by that URI.
   LibraryMap libraryMap = LibraryMap();
 
-  /// The [AnalysisOptions] to use to create the [context].
-  AnalysisOptions _analysisOptions;
-
-  /// The [AnalysisContext] which is used for all of the sources in this SDK.
-  SdkAnalysisContext _analysisContext;
-
   /// The mapping from Dart URI's to the corresponding sources.
   final Map<String, Source> _uriToSourceMap = HashMap<String, Source>();
 
-  /// Return the analysis options for this SDK analysis context.
-  AnalysisOptions get analysisOptions => _analysisOptions;
-
-  /// Set the [options] for this SDK analysis context.  Throw [StateError] if
-  /// the context has been already created.
-  set analysisOptions(AnalysisOptions options) {
-    if (_analysisContext != null) {
-      throw StateError(
-          'Analysis options cannot be changed after context creation.');
-    }
-    _analysisOptions = options;
-  }
-
-  @override
-  AnalysisContext get context {
-    if (_analysisContext == null) {
-      var factory = SourceFactory([DartUriResolver(this)]);
-      _analysisContext = SdkAnalysisContext(_analysisOptions, factory);
-    }
-    return _analysisContext;
-  }
-
   @override
   List<SdkLibrary> get sdkLibraries => libraryMap.sdkLibraries;
 
diff --git a/pkg/analyzer/lib/src/generated/sdk.dart b/pkg/analyzer/lib/src/generated/sdk.dart
index 1f141f7..2ac5298 100644
--- a/pkg/analyzer/lib/src/generated/sdk.dart
+++ b/pkg/analyzer/lib/src/generated/sdk.dart
@@ -6,7 +6,6 @@
 
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/ast/visitor.dart';
-import 'package:analyzer/src/generated/engine.dart' show AnalysisContext;
 import 'package:analyzer/src/generated/source.dart' show Source;
 import 'package:pub_semver/pub_semver.dart';
 
@@ -32,9 +31,6 @@
   /// if the file cannot be read, e.g. does not exist.
   String get allowedExperimentsJson;
 
-  /// Return the analysis context used for all of the sources in this [DartSdk].
-  AnalysisContext get context;
-
   /// Return the language version of this SDK, or throws an exception.
   ///
   /// The language version has only major/minor components, the patch number
diff --git a/pkg/analyzer/lib/src/summary/summary_sdk.dart b/pkg/analyzer/lib/src/summary/summary_sdk.dart
index 80cd239..809db0f 100644
--- a/pkg/analyzer/lib/src/summary/summary_sdk.dart
+++ b/pkg/analyzer/lib/src/summary/summary_sdk.dart
@@ -3,11 +3,8 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/file_system/file_system.dart' show ResourceProvider;
-import 'package:analyzer/src/context/context.dart';
-import 'package:analyzer/src/generated/engine.dart';
 import 'package:analyzer/src/generated/sdk.dart';
-import 'package:analyzer/src/generated/source.dart'
-    show DartUriResolver, Source, SourceFactory;
+import 'package:analyzer/src/generated/source.dart' show Source;
 import 'package:analyzer/src/summary/idl.dart';
 import 'package:analyzer/src/summary/package_bundle_reader.dart';
 import 'package:pub_semver/pub_semver.dart';
@@ -22,9 +19,6 @@
   PackageBundle _bundle;
   ResourceProvider resourceProvider;
 
-  /// The [AnalysisContext] which is used for all of the sources in this sdk.
-  SdkAnalysisContext _analysisContext;
-
   SummaryBasedDartSdk(String summaryPath, bool _, {this.resourceProvider}) {
     _dataStore = SummaryDataStore(<String>[summaryPath],
         resourceProvider: resourceProvider);
@@ -49,16 +43,6 @@
   PackageBundle get bundle => _bundle;
 
   @override
-  AnalysisContext get context {
-    if (_analysisContext == null) {
-      var analysisOptions = AnalysisOptionsImpl();
-      var factory = SourceFactory([DartUriResolver(this)]);
-      _analysisContext = SdkAnalysisContext(analysisOptions, factory);
-    }
-    return _analysisContext;
-  }
-
-  @override
   Version get languageVersion {
     var version = _bundle.sdk.languageVersion;
     return Version(version.major, version.minor, 0);
diff --git a/pkg/analyzer/lib/src/test_utilities/mock_sdk.dart b/pkg/analyzer/lib/src/test_utilities/mock_sdk.dart
index a4ebb6e..0d6aca6 100644
--- a/pkg/analyzer/lib/src/test_utilities/mock_sdk.dart
+++ b/pkg/analyzer/lib/src/test_utilities/mock_sdk.dart
@@ -4,9 +4,7 @@
 
 import 'package:analyzer/file_system/file_system.dart';
 import 'package:analyzer/file_system/memory_file_system.dart';
-import 'package:analyzer/src/context/context.dart';
 import 'package:analyzer/src/dart/sdk/sdk.dart';
-import 'package:analyzer/src/generated/engine.dart';
 import 'package:analyzer/src/generated/sdk.dart';
 import 'package:analyzer/src/generated/source.dart';
 import 'package:meta/meta.dart';
@@ -1081,11 +1079,6 @@
 
   final Map<String, String> uriMap = {};
 
-  final AnalysisOptionsImpl _analysisOptions;
-
-  /// The [AnalysisContextImpl] which is used for all of the sources.
-  AnalysisContextImpl _analysisContext;
-
   @override
   final List<SdkLibrary> sdkLibraries = [];
 
@@ -1095,9 +1088,8 @@
   /// their units are relative (will be put into `sdkRoot/lib`).
   MockSdk({
     @required this.resourceProvider,
-    AnalysisOptionsImpl analysisOptions,
     List<MockSdkLibrary> additionalLibraries = const [],
-  }) : _analysisOptions = analysisOptions ?? AnalysisOptionsImpl() {
+  }) {
     _versionFile = resourceProvider
         .getFolder(resourceProvider.convertPath(sdkRoot))
         .getChildAssumingFile('version');
@@ -1190,15 +1182,6 @@
   }
 
   @override
-  AnalysisContextImpl get context {
-    if (_analysisContext == null) {
-      var factory = SourceFactory([DartUriResolver(this)]);
-      _analysisContext = SdkAnalysisContext(_analysisOptions, factory);
-    }
-    return _analysisContext;
-  }
-
-  @override
   Version get languageVersion {
     var sdkVersionStr = _versionFile.readAsStringSync();
     return languageVersionFromSdkVersion(sdkVersionStr);
diff --git a/pkg/analyzer/test/src/context/builder_test.dart b/pkg/analyzer/test/src/context/builder_test.dart
index 0884c88..7872242 100644
--- a/pkg/analyzer/test/src/context/builder_test.dart
+++ b/pkg/analyzer/test/src/context/builder_test.dart
@@ -309,9 +309,7 @@
     newFolder('/workspace/bazel-genfiles');
     newFolder(projectPath);
 
-    AnalysisOptionsImpl options = AnalysisOptionsImpl();
-    SourceFactoryImpl factory =
-        builder.createSourceFactory(projectPath, options);
+    SourceFactoryImpl factory = builder.createSourceFactory(projectPath);
     expect(factory.resolvers,
         contains(predicate((r) => r is BazelFileUriResolver)));
     expect(factory.resolvers,
@@ -326,9 +324,7 @@
     newFolder(projectPath);
     newFile(join(projectPath, '.packages'));
 
-    AnalysisOptionsImpl options = AnalysisOptionsImpl();
-    SourceFactoryImpl factory =
-        builder.createSourceFactory(projectPath, options);
+    SourceFactoryImpl factory = builder.createSourceFactory(projectPath);
     expect(factory.resolvers,
         contains(predicate((r) => r is ResourceUriResolver)));
     expect(factory.resolvers,
@@ -356,9 +352,8 @@
 sky_engine:${resourceProvider.pathContext.toUri(skyEnginePath)}
 b:${resourceProvider.pathContext.toUri(packageB)}
 ''');
-    AnalysisOptionsImpl options = AnalysisOptionsImpl();
 
-    SourceFactory factory = builder.createSourceFactory(projectPath, options);
+    SourceFactory factory = builder.createSourceFactory(projectPath);
 
     Source dartSource = factory.forUri('dart:async');
     expect(dartSource, isNotNull);
@@ -385,9 +380,8 @@
 a:${resourceProvider.pathContext.toUri(packageA)}
 b:${resourceProvider.pathContext.toUri(packageB)}
 ''');
-    AnalysisOptionsImpl options = AnalysisOptionsImpl();
 
-    SourceFactory factory = builder.createSourceFactory(projectPath, options);
+    SourceFactory factory = builder.createSourceFactory(projectPath);
 
     Source dartSource = factory.forUri('dart:core');
     expect(dartSource, isNotNull);
@@ -486,12 +480,12 @@
   }
 
   void test_findSdk_noPackageMap() {
-    DartSdk sdk = builder.findSdk(null, AnalysisOptionsImpl());
+    DartSdk sdk = builder.findSdk(null);
     expect(sdk, isNotNull);
   }
 
   void test_findSdk_noPackageMap_html_strong() {
-    DartSdk sdk = builder.findSdk(null, AnalysisOptionsImpl());
+    DartSdk sdk = builder.findSdk(null);
     expect(sdk, isNotNull);
     Source htmlSource = sdk.mapDartUri('dart:html');
     expect(htmlSource.fullName,
diff --git a/pkg/analyzer/test/src/dart/sdk/sdk_test.dart b/pkg/analyzer/test/src/dart/sdk/sdk_test.dart
index 01403ad..db9c3b4 100644
--- a/pkg/analyzer/test/src/dart/sdk/sdk_test.dart
+++ b/pkg/analyzer/test/src/dart/sdk/sdk_test.dart
@@ -5,7 +5,6 @@
 import 'package:analyzer/file_system/file_system.dart';
 import 'package:analyzer/src/context/builder.dart' show EmbedderYamlLocator;
 import 'package:analyzer/src/dart/sdk/sdk.dart';
-import 'package:analyzer/src/generated/engine.dart';
 import 'package:analyzer/src/generated/java_engine_io.dart';
 import 'package:analyzer/src/generated/sdk.dart';
 import 'package:analyzer/src/generated/source.dart';
@@ -135,24 +134,6 @@
     })));
   }
 
-  void test_analysisOptions_afterContextCreation() {
-    FolderBasedDartSdk sdk = _createDartSdk();
-    sdk.context;
-    expect(() {
-      sdk.analysisOptions = AnalysisOptionsImpl();
-    }, throwsStateError);
-  }
-
-  void test_analysisOptions_beforeContextCreation() {
-    FolderBasedDartSdk sdk = _createDartSdk();
-    sdk.analysisOptions = AnalysisOptionsImpl();
-    sdk.context;
-    // cannot change "analysisOptions" in the context
-    expect(() {
-      sdk.context.analysisOptions = AnalysisOptionsImpl();
-    }, throwsStateError);
-  }
-
   void test_creation() {
     FolderBasedDartSdk sdk = _createDartSdk();
     expect(sdk, isNotNull);
diff --git a/pkg/analyzer_cli/lib/src/driver.dart b/pkg/analyzer_cli/lib/src/driver.dart
index 832785a..9a48b1a 100644
--- a/pkg/analyzer_cli/lib/src/driver.dart
+++ b/pkg/analyzer_cli/lib/src/driver.dart
@@ -439,7 +439,6 @@
       } else {
         // The embedder uri resolver has mappings, use it instead of the default
         // Dart SDK uri resolver.
-        embedderSdk.analysisOptions = analysisOptions;
         resolvers.add(DartUriResolver(embedderSdk));
       }
     }
@@ -648,10 +647,10 @@
         sdk = SummaryBasedDartSdk(options.dartSdkSummaryPath, true);
       } else {
         var dartSdkPath = options.dartSdkPath;
-        var dartSdk = FolderBasedDartSdk(
-            resourceProvider, resourceProvider.getFolder(dartSdkPath));
-        dartSdk.analysisOptions = analysisOptions;
-        sdk = dartSdk;
+        sdk = FolderBasedDartSdk(
+          resourceProvider,
+          resourceProvider.getFolder(dartSdkPath),
+        );
       }
     }
   }
diff --git a/tools/VERSION b/tools/VERSION
index e081728..4121203 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 10
 PATCH 0
-PRERELEASE 120
+PRERELEASE 121
 PRERELEASE_PATCH 0
\ No newline at end of file