Use preparsed experiment status in Static Type Analyzer

Change-Id: I67b3442f00aed8779806c5aa532ec5e1fdaecf7b
Reviewed-on: https://dart-review.googlesource.com/c/89022
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Mike Fairhurst <mfairhurst@google.com>
diff --git a/pkg/analyzer/lib/src/generated/static_type_analyzer.dart b/pkg/analyzer/lib/src/generated/static_type_analyzer.dart
index 564675f..88f8f3b 100644
--- a/pkg/analyzer/lib/src/generated/static_type_analyzer.dart
+++ b/pkg/analyzer/lib/src/generated/static_type_analyzer.dart
@@ -18,6 +18,7 @@
 import 'package:analyzer/src/dart/element/member.dart' show ConstructorMember;
 import 'package:analyzer/src/dart/element/type.dart';
 import 'package:analyzer/src/error/codes.dart';
+import 'package:analyzer/src/generated/engine.dart';
 import 'package:analyzer/src/generated/resolver.dart';
 import 'package:analyzer/src/generated/utilities_dart.dart';
 import 'package:analyzer/src/task/strong/checker.dart'
@@ -56,7 +57,7 @@
   /**
    * The status of the active experiments of the current context.
    */
-  ExperimentStatus _enabledExperiments;
+  ExperimentStatus _experimentStatus;
 
   /**
    * The type representing the class containing the nodes being analyzed,
@@ -79,8 +80,9 @@
     _typeSystem = _resolver.typeSystem;
     _dynamicType = _typeProvider.dynamicType;
     _promoteManager = _resolver.promoteManager;
-    _enabledExperiments = ExperimentStatus.fromStrings(
-        _resolver.definingLibrary.context.analysisOptions.enabledExperiments);
+    _experimentStatus = (_resolver.definingLibrary.context.analysisOptions
+            as AnalysisOptionsImpl)
+        .experimentStatus;
   }
 
   /**
@@ -182,7 +184,7 @@
 
   ParameterizedType inferMapType(MapLiteral node, {bool downwards: false}) {
     DartType contextType = InferenceContext.getContext(node);
-    if (contextType != null && _enabledExperiments.set_literals) {
+    if (contextType != null && _experimentStatus.set_literals) {
       DartType unwrap(DartType type) {
         if (type is InterfaceType &&
             type.isDartAsyncFutureOr &&
diff --git a/pkg/analyzer/lib/src/summary/link.dart b/pkg/analyzer/lib/src/summary/link.dart
index 2f42085..f0a1a4a 100644
--- a/pkg/analyzer/lib/src/summary/link.dart
+++ b/pkg/analyzer/lib/src/summary/link.dart
@@ -62,6 +62,7 @@
 import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/dart/element/type.dart';
 import 'package:analyzer/error/listener.dart';
+import 'package:analyzer/src/dart/analysis/experiments.dart';
 import 'package:analyzer/src/dart/ast/utilities.dart';
 import 'package:analyzer/src/dart/constant/value.dart';
 import 'package:analyzer/src/dart/element/builder.dart';
@@ -434,7 +435,7 @@
   bool get strongModeHints => false;
 
   @override
-  List<String> get enabledExperiments => [];
+  ExperimentStatus get experimentStatus => new ExperimentStatus();
 
   @override
   noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);