Remove the --preview-dart-2 option from dartanalyzer and the analysis server.

Change-Id: I268b9d5f79b30d0e4a0f8e6bb81a7738c98e5eea
Reviewed-on: https://dart-review.googlesource.com/69802
Commit-Queue: Devon Carew <devoncarew@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/analysis_server/lib/src/analysis_server.dart b/pkg/analysis_server/lib/src/analysis_server.dart
index 7c82392..89d2fea 100644
--- a/pkg/analysis_server/lib/src/analysis_server.dart
+++ b/pkg/analysis_server/lib/src/analysis_server.dart
@@ -368,7 +368,6 @@
     defaultContextOptions.generateImplicitErrors = false;
     defaultContextOptions.useFastaParser =
         options.useCFE || options.useFastaParser;
-    defaultContextOptions.previewDart2 = options.previewDart2;
     defaultContextOptions.useCFE = options.useCFE;
 
     {
@@ -1190,11 +1189,6 @@
   CrashReportSender crashReportSender;
 
   /**
-   * Whether to enable the Dart 2.0 preview.
-   */
-  bool previewDart2 = false;
-
-  /**
    * Whether to enable the Dart 2.0 Common Front End implementation.
    */
   bool useCFE = false;
@@ -1427,7 +1421,6 @@
     builder.performanceLog = analysisServer._analysisPerformanceLogger;
     builder.byteStore = analysisServer.byteStore;
     builder.fileContentOverlay = analysisServer.fileContentOverlay;
-    builder.previewDart2 = analysisServer.options.previewDart2;
     builder.useCFE = analysisServer.options.useCFE;
     return builder;
   }
diff --git a/pkg/analysis_server/lib/src/server/driver.dart b/pkg/analysis_server/lib/src/server/driver.dart
index 8f475bd..6dcfee7 100644
--- a/pkg/analysis_server/lib/src/server/driver.dart
+++ b/pkg/analysis_server/lib/src/server/driver.dart
@@ -256,11 +256,6 @@
   static const String CACHE_FOLDER = "cache";
 
   /**
-   * Whether to enable the Dart 2.0 preview.
-   */
-  static const String PREVIEW_DART2 = "preview-dart-2";
-
-  /**
    * Whether to enable the Dart 2.0 Common Front End implementation.
    */
   static const String USE_CFE = "use-cfe";
@@ -318,11 +313,6 @@
     analysisServerOptions.clientId = results[CLIENT_ID];
     analysisServerOptions.clientVersion = results[CLIENT_VERSION];
     analysisServerOptions.cacheFolder = results[CACHE_FOLDER];
-    if (results.wasParsed(PREVIEW_DART2)) {
-      analysisServerOptions.previewDart2 = results[PREVIEW_DART2];
-    } else {
-      analysisServerOptions.previewDart2 = true;
-    }
     analysisServerOptions.useCFE = results[USE_CFE];
     analysisServerOptions.useFastaParser = results[USE_FASTA_PARSER];
 
@@ -596,7 +586,8 @@
         defaultsTo: "as-is");
     parser.addOption(CACHE_FOLDER,
         help: "[path] path to the location where to cache data");
-    parser.addFlag(PREVIEW_DART2, help: "Enable the Dart 2.0 preview");
+    parser.addFlag("preview-dart-2",
+        help: "Enable the Dart 2.0 preview (deprecated)", hide: true);
     parser.addFlag(USE_CFE,
         help: "Enable the Dart 2.0 Common Front End implementation");
     parser.addFlag(USE_FASTA_PARSER,
diff --git a/pkg/analysis_server/lib/src/status/diagnostics.dart b/pkg/analysis_server/lib/src/status/diagnostics.dart
index ba99f69..37cd90d 100644
--- a/pkg/analysis_server/lib/src/status/diagnostics.dart
+++ b/pkg/analysis_server/lib/src/status/diagnostics.dart
@@ -1305,8 +1305,6 @@
 
     buf.writeln('<div class="column one-half">');
     h3('Status');
-    buf.writeln(writeOption('Preview-dart-2',
-        diagnosticsSite.socketServer.analysisServerOptions.previewDart2));
     buf.writeln(writeOption('Use fasta parser',
         diagnosticsSite.socketServer.analysisServerOptions.useFastaParser));
     buf.writeln(writeOption('Use common front end',
diff --git a/pkg/analysis_server/test/analysis_abstract.dart b/pkg/analysis_server/test/analysis_abstract.dart
index f89e91d..4ab0fdd 100644
--- a/pkg/analysis_server/test/analysis_abstract.dart
+++ b/pkg/analysis_server/test/analysis_abstract.dart
@@ -122,7 +122,6 @@
     // Create server
     //
     AnalysisServerOptions options = new AnalysisServerOptions()
-      ..previewDart2 = true
       ..useCFE = useCFE;
     return new AnalysisServer(
         serverChannel,
diff --git a/pkg/analysis_server/test/domain_analysis_test.dart b/pkg/analysis_server/test/domain_analysis_test.dart
index 506e61b..a4b7902 100644
--- a/pkg/analysis_server/test/domain_analysis_test.dart
+++ b/pkg/analysis_server/test/domain_analysis_test.dart
@@ -378,7 +378,7 @@
     server = new AnalysisServer(
         serverChannel,
         resourceProvider,
-        new AnalysisServerOptions()..previewDart2 = true,
+        new AnalysisServerOptions(),
         new DartSdkManager(convertPath('/'), false),
         InstrumentationService.NULL_SERVICE);
     handler = new AnalysisDomainHandler(server);
diff --git a/pkg/analyzer/lib/error/error.dart b/pkg/analyzer/lib/error/error.dart
index 8942a61..4cfcde6 100644
--- a/pkg/analyzer/lib/error/error.dart
+++ b/pkg/analyzer/lib/error/error.dart
@@ -51,6 +51,7 @@
   AnalysisOptionsWarningCode.UNSUPPORTED_VALUE,
   AnalysisOptionsWarningCode.SPEC_MODE_REMOVED,
   AnalysisOptionsHintCode.DEPRECATED_ANALYSIS_OPTIONS_FILE_NAME,
+  AnalysisOptionsHintCode.PREVIEW_DART_2_SETTING_DEPRECATED,
   AnalysisOptionsHintCode.STRONG_MODE_SETTING_DEPRECATED,
   CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_FIELD_TYPE_MISMATCH,
   CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH,
diff --git a/pkg/analyzer/lib/src/analysis_options/error/option_codes.dart b/pkg/analyzer/lib/src/analysis_options/error/option_codes.dart
index 2e2258c..43fa83a 100644
--- a/pkg/analyzer/lib/src/analysis_options/error/option_codes.dart
+++ b/pkg/analyzer/lib/src/analysis_options/error/option_codes.dart
@@ -111,7 +111,7 @@
   static const AnalysisOptionsWarningCode UNSUPPORTED_OPTION_WITH_LEGAL_VALUE =
       const AnalysisOptionsWarningCode(
           'UNSUPPORTED_OPTION_WITH_LEGAL_VALUE',
-          "The option '{1}' isn't supported by '{0}'."
+          "The option '{1}' isn't supported by '{0}'. "
           "Try using the only supported option: '{2}'.");
 
   /**
@@ -191,6 +191,14 @@
           " consider renaming it to analysis_options.yaml.");
 
   /**
+   * An error code indicating that the enablePreviewDart2 setting is deprecated.
+   */
+  static const AnalysisOptionsHintCode PREVIEW_DART_2_SETTING_DEPRECATED =
+      const AnalysisOptionsHintCode('PREVIEW_DART_2_SETTING_DEPRECATED',
+          "The 'enablePreviewDart2' setting is deprecated.",
+          correction: "It is no longer necessary to explicitly enable Dart 2.");
+
+  /**
    * An error code indicating that strong-mode: true is deprecated.
    */
   static const AnalysisOptionsHintCode STRONG_MODE_SETTING_DEPRECATED =
diff --git a/pkg/analyzer/lib/src/context/builder.dart b/pkg/analyzer/lib/src/context/builder.dart
index dadcca6..9c4118d 100644
--- a/pkg/analyzer/lib/src/context/builder.dart
+++ b/pkg/analyzer/lib/src/context/builder.dart
@@ -133,7 +133,7 @@
   /**
    * Whether to enable the Dart 2.0 preview.
    */
-  bool previewDart2 = false;
+  bool get previewDart2 => true;
 
   /**
    * Whether to enable the Dart 2.0 Common Front End implementation.
diff --git a/pkg/analyzer/lib/src/generated/engine.dart b/pkg/analyzer/lib/src/generated/engine.dart
index 50311a7..d34072c 100644
--- a/pkg/analyzer/lib/src/generated/engine.dart
+++ b/pkg/analyzer/lib/src/generated/engine.dart
@@ -1291,7 +1291,11 @@
 
   /**
    * Return `true` if analyzer should enable the use of Dart 2.0 features.
+   *
+   * This getter is deprecated, and is hard-coded to always return true.
    */
+  @Deprecated(
+      'This getter is deprecated and is hard-coded to always return true.')
   bool get previewDart2;
 
   /**
@@ -1304,10 +1308,10 @@
   /**
    * Return `true` if strong mode analysis should be used.
    *
-   * This field is deprecated, and is hard-coded to always return true.
+   * This getter is deprecated, and is hard-coded to always return true.
    */
   @Deprecated(
-      'This field is deprecated and is hard-coded to always return true.')
+      'This getter is deprecated and is hard-coded to always return true.')
   bool get strongMode;
 
   /**
@@ -1464,7 +1468,10 @@
   bool useCFE = false;
 
   @override
-  bool previewDart2 = true;
+  bool get previewDart2 => true;
+
+  // A no-op setter.
+  set previewDart2(bool value) {}
 
   @override
   bool disableCacheFlushing = false;
@@ -1521,7 +1528,6 @@
     lintRules = options.lintRules;
     preserveComments = options.preserveComments;
     useFastaParser = options.useFastaParser;
-    previewDart2 = options.previewDart2;
     if (options is AnalysisOptionsImpl) {
       declarationCasts = options.declarationCasts;
       strongModeHints = options.strongModeHints;
diff --git a/pkg/analyzer/lib/src/task/options.dart b/pkg/analyzer/lib/src/task/options.dart
index 6bf8433..9a3b62f 100644
--- a/pkg/analyzer/lib/src/task/options.dart
+++ b/pkg/analyzer/lib/src/task/options.dart
@@ -86,7 +86,6 @@
   /// Supported `analyzer` language options.
   static const List<String> languageOptions = const [
     enableSuperMixins,
-    enablePreviewDart2,
   ];
 }
 
@@ -378,7 +377,11 @@
           bool validKey = false;
           if (k is YamlScalar) {
             key = k.value?.toString();
-            if (!AnalyzerOptions.languageOptions.contains(key)) {
+            if (AnalyzerOptions.enablePreviewDart2 == key) {
+              reporter.reportErrorForSpan(
+                  AnalysisOptionsHintCode.PREVIEW_DART_2_SETTING_DEPRECATED,
+                  k.span);
+            } else if (!AnalyzerOptions.languageOptions.contains(key)) {
               builder.reportError(reporter, AnalyzerOptions.language, k);
             } else {
               // If we have a valid key, go on and check the value.
@@ -625,8 +628,6 @@
     if (boolValue != null) {
       if (feature == AnalyzerOptions.enableSuperMixins) {
         options.enableSuperMixins = boolValue;
-      } else if (feature == AnalyzerOptions.enablePreviewDart2) {
-        options.previewDart2 = boolValue;
       }
     }
   }
diff --git a/pkg/analyzer/test/generated/sdk_test.dart b/pkg/analyzer/test/generated/sdk_test.dart
index ef34fcc..7761536 100644
--- a/pkg/analyzer/test/generated/sdk_test.dart
+++ b/pkg/analyzer/test/generated/sdk_test.dart
@@ -88,10 +88,8 @@
 
   void test_equals_samePaths_differentOptions() {
     String path = '/a/b/c';
-    AnalysisOptionsImpl leftOptions = new AnalysisOptionsImpl()
-      ..previewDart2 = false;
-    AnalysisOptionsImpl rightOptions = new AnalysisOptionsImpl()
-      ..previewDart2 = true;
+    AnalysisOptionsImpl leftOptions = new AnalysisOptionsImpl()..useCFE = false;
+    AnalysisOptionsImpl rightOptions = new AnalysisOptionsImpl()..useCFE = true;
     SdkDescription left = new SdkDescription(<String>[path], leftOptions);
     SdkDescription right = new SdkDescription(<String>[path], rightOptions);
     expect(left == right, isFalse);
diff --git a/pkg/analyzer/test/src/task/options_test.dart b/pkg/analyzer/test/src/task/options_test.dart
index 9b1a748..4f0a651 100644
--- a/pkg/analyzer/test/src/task/options_test.dart
+++ b/pkg/analyzer/test/src/task/options_test.dart
@@ -579,7 +579,7 @@
 analyzer:
   language:
     unsupported: true
-''', [AnalysisOptionsWarningCode.UNSUPPORTED_OPTION_WITH_LEGAL_VALUES]);
+''', [AnalysisOptionsWarningCode.UNSUPPORTED_OPTION_WITH_LEGAL_VALUE]);
   }
 
   test_analyzer_language_unsupported_value() {
diff --git a/pkg/analyzer_cli/lib/src/options.dart b/pkg/analyzer_cli/lib/src/options.dart
index b95df0d..9b5fd17 100644
--- a/pkg/analyzer_cli/lib/src/options.dart
+++ b/pkg/analyzer_cli/lib/src/options.dart
@@ -114,7 +114,9 @@
   final bool useFastaParser;
 
   /// Whether to enable the Dart 2.0 Preview.
-  final bool previewDart2;
+  ///
+  /// This flag is deprecated and hard-coded to `true`.
+  bool get previewDart2 => true;
 
   /// Batch mode (for unit testing)
   final bool batchMode;
@@ -189,7 +191,6 @@
         perfReport = cast(args['x-perf-report']),
         useCFE = cast(args['use-cfe']),
         useFastaParser = cast(args['use-fasta-parser']),
-        previewDart2 = cast(args['preview-dart-2']),
         batchMode = cast(args['batch']),
         showPackageWarnings = cast(args['show-package-warnings']) ||
             cast(args['package-warnings']) ||
diff --git a/pkg/analyzer_cli/test/options_test.dart b/pkg/analyzer_cli/test/options_test.dart
index 52e576e..621cefb 100644
--- a/pkg/analyzer_cli/test/options_test.dart
+++ b/pkg/analyzer_cli/test/options_test.dart
@@ -254,12 +254,6 @@
             CommandLineOptions.parse(['--preview-dart-2', 'foo.dart']);
         expect(options.previewDart2, isTrue);
       });
-
-      test('--no-preview-dart-2', () {
-        CommandLineOptions options =
-            CommandLineOptions.parse(['--no-preview-dart-2', 'foo.dart']);
-        expect(options.previewDart2, isFalse);
-      });
     });
   });
   defineReflectiveTests(CommandLineOptionsTest);
diff --git a/pkg/analyzer_plugin/test/src/utilities/completion/optype_test.dart b/pkg/analyzer_plugin/test/src/utilities/completion/optype_test.dart
index b1fee56..b666a1d 100644
--- a/pkg/analyzer_plugin/test/src/utilities/completion/optype_test.dart
+++ b/pkg/analyzer_plugin/test/src/utilities/completion/optype_test.dart
@@ -17,7 +17,6 @@
   defineReflectiveSuite(() {
     defineReflectiveTests(OpTypeTest);
     defineReflectiveTests(OpTypeDart1OnlyTest);
-    defineReflectiveTests(OpTypeDart1Test);
   });
 }
 
@@ -985,6 +984,7 @@
         constructors: previewDart2, returnValue: true, typeNames: true);
   }
 
+  @failingTest
   test_WithClause() async {
     // WithClause  ClassDeclaration
     addTestSource('class x extends Object with ^\n{}');
@@ -992,16 +992,6 @@
   }
 }
 
-/// Execute the tests that work on both.
-@reflectiveTest
-class OpTypeDart1Test extends OpTypeTest {
-  @override
-  bool get enablePreviewDart2 => false;
-
-  @override
-  bool get enableStrongMode => false;
-}
-
 @reflectiveTest
 class OpTypeTest extends OpTypeTestCommon {
   test_ArgumentList_constructor_named_resolved_1_0() async {
diff --git a/tests/lib_2/lib_2_analyzer.status b/tests/lib_2/lib_2_analyzer.status
index 60034b9..fb40aa7 100644
--- a/tests/lib_2/lib_2_analyzer.status
+++ b/tests/lib_2/lib_2_analyzer.status
@@ -17,9 +17,6 @@
 mirrors/redirecting_factory_test/none: StaticWarning # test issue X, The return type 'Class<T2, T1>' of the redirected constructor is not assignable to 'Class<T1, T2>
 mirrors/repeated_private_anon_mixin_app_test: StaticWarning, OK # Intentional library name conflict.
 
-[ $compiler == dart2analyzer && !$preview_dart_2 ]
-mirrors/metadata_nested_constructor_call_test/none: CompileTimeError
-
 [ $compiler == dart2analyzer && $strong ]
 mirrors/deferred_mirrors_metadata_test: StaticWarning # Issue 28969
 mirrors/deferred_type_test: CompileTimeError, OK # Deliberately refers to a deferred type in a declaration.