Use 'useCFE' flag to turn on CFE in AnalysisDriver.

R=brianwilkerson@google.com

Change-Id: If0aa7d10bc46f1dd408d0be8128fc25538758359
Reviewed-on: https://dart-review.googlesource.com/68720
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/analysis_server/test/abstract_context.dart b/pkg/analysis_server/test/abstract_context.dart
index 6c656c7..b96340e 100644
--- a/pkg/analysis_server/test/abstract_context.dart
+++ b/pkg/analysis_server/test/abstract_context.dart
@@ -155,8 +155,8 @@
         new ContextRoot(resourceProvider.convertPath('/project'), [],
             pathContext: resourceProvider.pathContext),
         sourceFactory,
-        new AnalysisOptionsImpl(),
-        enableKernelDriver: useCFE);
+        new AnalysisOptionsImpl()..useFastaParser = useCFE,
+        useCFE: useCFE);
     scheduler.start();
     AnalysisEngine.instance.logger = PrintLogger.instance;
   }
diff --git a/pkg/analysis_server/test/services/completion/statement/statement_completion_test.dart b/pkg/analysis_server/test/services/completion/statement/statement_completion_test.dart
index bf2de54..a7eeb84 100644
--- a/pkg/analysis_server/test/services/completion/statement/statement_completion_test.dart
+++ b/pkg/analysis_server/test/services/completion/statement/statement_completion_test.dart
@@ -300,6 +300,10 @@
 class _ControlFlowCompletionTest_UseCfe extends _ControlFlowCompletionTest {
   @override
   bool get useCFE => true;
+
+  @failingTest
+  @override
+  test_ifNoBlock() => super.test_ifNoBlock();
 }
 
 @reflectiveTest
@@ -838,6 +842,18 @@
 class _ExpressionCompletionTest_UseCfe extends _ExpressionCompletionTest {
   @override
   bool get useCFE => true;
+
+  @failingTest
+  @override
+  test_listAssign() => super.test_listAssign();
+
+  @failingTest
+  @override
+  test_listAssignMultiLine() => super.test_listAssignMultiLine();
+
+  @failingTest
+  @override
+  test_stringAssign() => super.test_stringAssign();
 }
 
 @reflectiveTest
@@ -1642,6 +1658,10 @@
 class _SimpleCompletionTest_UseCfe extends _SimpleCompletionTest {
   @override
   bool get useCFE => true;
+
+  @failingTest
+  @override
+  test_semicolonVar() => super.test_semicolonVar();
 }
 
 @reflectiveTest
diff --git a/pkg/analysis_server/test/services/correction/assist_test.dart b/pkg/analysis_server/test/services/correction/assist_test.dart
index fac75c7..9a80b9a 100644
--- a/pkg/analysis_server/test/services/correction/assist_test.dart
+++ b/pkg/analysis_server/test/services/correction/assist_test.dart
@@ -6317,49 +6317,11 @@
 
   @failingTest
   @override
-  test_addTypeAnnotation_parameter_BAD_hasExplicitType() =>
-      super.test_addTypeAnnotation_parameter_BAD_hasExplicitType();
-
-  @failingTest
-  @override
-  test_addTypeAnnotation_parameter_BAD_noPropagatedType() =>
-      super.test_addTypeAnnotation_parameter_BAD_noPropagatedType();
-
-  @failingTest
-  @override
-  test_addTypeAnnotation_parameter_OK() =>
-      super.test_addTypeAnnotation_parameter_OK();
-
-  @failingTest
-  @override
   test_convertToFinalField_OK_hasOverride() =>
       super.test_convertToFinalField_OK_hasOverride();
 
   @failingTest
   @override
-  test_convertToFunctionSyntax_BAD_functionTypedParameter_insideParameterList() =>
-      super
-          .test_convertToFunctionSyntax_BAD_functionTypedParameter_insideParameterList();
-
-  @failingTest
-  @override
-  test_convertToFunctionSyntax_BAD_functionTypedParameter_noParameterTypes() =>
-      super
-          .test_convertToFunctionSyntax_BAD_functionTypedParameter_noParameterTypes();
-
-  @failingTest
-  @override
-  test_convertToFunctionSyntax_OK_functionTypedParameter_noReturnType_noTypeParameters() =>
-      super
-          .test_convertToFunctionSyntax_OK_functionTypedParameter_noReturnType_noTypeParameters();
-
-  @failingTest
-  @override
-  test_convertToFunctionSyntax_OK_functionTypedParameter_returnType() =>
-      super.test_convertToFunctionSyntax_OK_functionTypedParameter_returnType();
-
-  @failingTest
-  @override
   test_convertToGetter_OK() => super.test_convertToGetter_OK();
 
   @failingTest
@@ -6609,11 +6571,6 @@
   @override
   test_importAddShow_BAD_unresolvedUri() =>
       super.test_importAddShow_BAD_unresolvedUri();
-
-  @failingTest
-  @override
-  test_removeTypeAnnotation_topLevelVariable_BAD_syntheticName() =>
-      super.test_removeTypeAnnotation_topLevelVariable_BAD_syntheticName();
 }
 
 class _DartAssistContextForValues implements DartAssistContext {
diff --git a/pkg/analyzer/lib/src/context/builder.dart b/pkg/analyzer/lib/src/context/builder.dart
index b3f223d..dadcca6 100644
--- a/pkg/analyzer/lib/src/context/builder.dart
+++ b/pkg/analyzer/lib/src/context/builder.dart
@@ -200,7 +200,7 @@
         contextRoot,
         sf,
         options,
-        enableKernelDriver: useCFE,
+        useCFE: useCFE,
         kernelPlatformFolder: kernelPlatformFolder);
     // temporary plugin support:
     if (onCreateAnalysisDriver != null) {
diff --git a/pkg/analyzer/lib/src/dart/analysis/driver.dart b/pkg/analyzer/lib/src/dart/analysis/driver.dart
index 45cd868..b07b1140 100644
--- a/pkg/analyzer/lib/src/dart/analysis/driver.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/driver.dart
@@ -105,7 +105,7 @@
   /**
    * Whether kernel should be used to resynthesize elements.
    */
-  final bool enableKernelDriver;
+  final bool _useCFE;
 
   /**
    * The [Folder] with the `vm_platform.dill` file.
@@ -113,7 +113,7 @@
    * We use `vm_platform.dill`, because loading patches is not yet implemented,
    * and patches are not a part of SDK distribution.
    */
-  final Folder kernelPlatformFolder;
+  final Folder _kernelPlatformFolder;
 
   /**
    * The scheduler that schedules analysis work in this, and possibly other
@@ -351,15 +351,17 @@
       this.contextRoot,
       SourceFactory sourceFactory,
       this._analysisOptions,
-      {this.enableKernelDriver: false,
-      this.kernelPlatformFolder,
+      {bool useCFE: false,
+      Folder kernelPlatformFolder,
       PackageBundle sdkBundle,
       this.disableChangesAndCacheAllResults: false,
       SummaryDataStore externalSummaries})
       : _logger = logger,
         _sourceFactory = sourceFactory.clone(),
         _sdkBundle = sdkBundle,
-        _externalSummaries = externalSummaries {
+        _externalSummaries = externalSummaries,
+        _useCFE = useCFE,
+        _kernelPlatformFolder = kernelPlatformFolder {
     _createNewSession();
     _onResults = _resultController.stream.asBroadcastStream();
     _testView = new AnalysisDriverTestView(this);
@@ -1246,7 +1248,7 @@
           _testView.numOfAnalyzedLibraries++;
 
           LibraryAnalyzer analyzer;
-          if (enableKernelDriver) {
+          if (_useCFE) {
             kernelContext = await _createKernelContext(library);
             analyzer = new LibraryAnalyzer(
                 _logger,
@@ -1257,8 +1259,7 @@
                 kernelContext.analysisContext,
                 kernelContext.resynthesizer,
                 library,
-                enableKernelDriver: true,
-                useCFE: _analysisOptions.useFastaParser,
+                useCFE: true,
                 frontEndCompiler: _frontEndCompiler);
           } else {
             if (!_fsState.getFileForUri(Uri.parse('dart:core')).exists) {
@@ -1348,7 +1349,7 @@
       }
     }
 
-    if (enableKernelDriver) {
+    if (_useCFE) {
       var kernelContext = await _createKernelContext(library);
       try {
         CompilationUnitElement element =
@@ -1425,12 +1426,12 @@
    * changes.
    */
   void _createKernelDriver() {
-    if (enableKernelDriver) {
+    if (_useCFE) {
       _frontEndCompiler = new FrontEndCompiler(
           _logger,
           _byteStore,
           analysisOptions,
-          kernelPlatformFolder,
+          _kernelPlatformFolder,
           sourceFactory,
           fsState,
           _resourceProvider.pathContext);
diff --git a/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart b/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
index d7f7bc9..5fad007 100644
--- a/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
@@ -52,7 +52,6 @@
   final SourceFactory _sourceFactory;
   final FileState _library;
 
-  final bool _enableKernelDriver;
   final bool _useCFE;
   final FrontEndCompiler _frontEndCompiler;
 
@@ -82,11 +81,9 @@
       this._context,
       this._resynthesizer,
       this._library,
-      {bool enableKernelDriver: false,
-      bool useCFE: false,
+      {bool useCFE: false,
       FrontEndCompiler frontEndCompiler})
       : _typeProvider = _context.typeProvider,
-        _enableKernelDriver = enableKernelDriver,
         _useCFE = useCFE,
         _frontEndCompiler = frontEndCompiler;
 
@@ -556,7 +553,7 @@
     definingCompilationUnit.element = _libraryElement.definingCompilationUnit;
 
     bool matchNodeElement(Directive node, Element element) {
-      if (_enableKernelDriver) {
+      if (_useCFE) {
         return node.keyword.offset == element.nameOffset;
       } else {
         return node.offset == element.nameOffset;
@@ -567,7 +564,7 @@
 
     void reportErrorReportedByFrontEnd(
         ErrorCode errorCode, AstNode node, List<Object> arguments) {
-      if (!_enableKernelDriver) {
+      if (!_useCFE) {
         libraryErrorReporter.reportErrorForNode(errorCode, node, arguments);
       }
     }
@@ -701,8 +698,7 @@
       }
     }
 
-    new DeclarationResolver(enableKernelDriver: _enableKernelDriver)
-        .resolve(unit, unitElement);
+    new DeclarationResolver().resolve(unit, unitElement);
 
     if (_libraryElement.context.analysisOptions.previewDart2) {
       unit.accept(new AstRewriteVisitor(_context.typeSystem, _libraryElement,
@@ -737,8 +733,7 @@
   void _resolveFile2(FileState file, CompilationUnitImpl unit,
       CollectedResolution resolution) {
     CompilationUnitElement unitElement = unit.declaredElement;
-    new DeclarationResolver(enableKernelDriver: true, applyKernelTypes: true)
-        .resolve(unit, unitElement);
+    new DeclarationResolver(useCFE: true).resolve(unit, unitElement);
 
     var applierContext = new _ResolutionApplierContext(_resynthesizer,
         _typeProvider, _libraryElement, resolution, unit.localDeclarations);
diff --git a/pkg/analyzer/lib/src/generated/declaration_resolver.dart b/pkg/analyzer/lib/src/generated/declaration_resolver.dart
index ec91c2d..e12642a 100644
--- a/pkg/analyzer/lib/src/generated/declaration_resolver.dart
+++ b/pkg/analyzer/lib/src/generated/declaration_resolver.dart
@@ -27,8 +27,7 @@
  * any more complete than a [COMPILATION_UNIT_ELEMENT].
  */
 class DeclarationResolver extends RecursiveAstVisitor<Object> {
-  final bool _enableKernelDriver;
-  final bool _applyKernelTypes;
+  final bool _useCFE;
 
   /**
    * The compilation unit containing the AST nodes being visited.
@@ -51,10 +50,7 @@
    */
   ElementWalker _walker;
 
-  DeclarationResolver(
-      {bool enableKernelDriver: false, bool applyKernelTypes: false})
-      : _enableKernelDriver = enableKernelDriver,
-        _applyKernelTypes = applyKernelTypes;
+  DeclarationResolver({bool useCFE: false}) : _useCFE = useCFE;
 
   /**
    * Resolve the declarations within the given compilation [unit] to the
@@ -107,7 +103,7 @@
   @override
   Object visitClassDeclaration(ClassDeclaration node) {
     ClassElement element = _match(node.name, _walker.getClass());
-    if (_applyKernelTypes) {
+    if (_useCFE) {
       node.name.staticType = _typeProvider.typeType;
     }
     _walk(new ElementWalker.forClass(element), () {
@@ -120,7 +116,7 @@
   @override
   Object visitClassTypeAlias(ClassTypeAlias node) {
     ClassElement element = _match(node.name, _walker.getClass());
-    if (_applyKernelTypes) {
+    if (_useCFE) {
       node.name.staticType = _typeProvider.typeType;
     }
     _walk(new ElementWalker.forClass(element), () {
@@ -139,7 +135,7 @@
       super.visitConstructorDeclaration(node);
     });
     resolveMetadata(node, node.metadata, element);
-    if (_applyKernelTypes) {
+    if (_useCFE) {
       _applyTypeToIdentifier(node.returnType, element.returnType);
       node.name?.staticType = element.type;
     }
@@ -189,7 +185,7 @@
   @override
   Object visitEnumDeclaration(EnumDeclaration node) {
     ClassElement element = _match(node.name, _walker.getEnum());
-    if (_applyKernelTypes) {
+    if (_useCFE) {
       node.name.staticType = _typeProvider.typeType;
       for (var constant in node.constants) {
         SimpleIdentifier name = constant.name;
@@ -266,7 +262,7 @@
 
   @override
   Object visitFormalParameterList(FormalParameterList node) {
-    if (_applyKernelTypes) {
+    if (_useCFE) {
       applyParameters(_enclosingLibrary, _walker._parameters, node);
       _walker.consumeParameters();
       return null;
@@ -293,7 +289,7 @@
             elementName: functionName.name + '=');
       }
     }
-    if (_applyKernelTypes) {
+    if (_useCFE) {
       if (node.isGetter) {
         node.name.staticType = element.returnType;
       } else if (node.isSetter) {
@@ -438,7 +434,7 @@
             elementName: nameOfMethod + '=');
       }
     }
-    if (_applyKernelTypes) {
+    if (_useCFE) {
       if (node.isGetter) {
         node.name.staticType = element.returnType;
       } else if (node.isSetter) {
@@ -517,8 +513,7 @@
 
   @override
   Object visitTypeParameter(TypeParameter node) {
-    if (node.parent.parent is FunctionTypedFormalParameter &&
-        !_enableKernelDriver) {
+    if (node.parent.parent is FunctionTypedFormalParameter && !_useCFE) {
       // Work around dartbug.com/28515.
       // TODO(paulberry): remove this once dartbug.com/28515 is fixed.
       var element = new TypeParameterElementImpl.forNode(node.name);
@@ -537,7 +532,7 @@
   @override
   Object visitVariableDeclaration(VariableDeclaration node) {
     VariableElement element = _match(node.name, _walker.getVariable());
-    if (_applyKernelTypes) {
+    if (_useCFE) {
       node.name.staticType = element.type;
     }
     Expression initializer = node.initializer;
diff --git a/pkg/analyzer/test/generated/resolver_test_case.dart b/pkg/analyzer/test/generated/resolver_test_case.dart
index bf4d06e..d10680e 100644
--- a/pkg/analyzer/test/generated/resolver_test_case.dart
+++ b/pkg/analyzer/test/generated/resolver_test_case.dart
@@ -699,7 +699,7 @@
           null,
           sourceFactory,
           options,
-          enableKernelDriver: enableKernelDriver);
+          useCFE: enableKernelDriver);
       scheduler.start();
     } else {
       if (packages != null) {
diff --git a/pkg/analyzer/test/src/dart/analysis/base.dart b/pkg/analyzer/test/src/dart/analysis/base.dart
index 62d34e0..3c1ae2c 100644
--- a/pkg/analyzer/test/src/dart/analysis/base.dart
+++ b/pkg/analyzer/test/src/dart/analysis/base.dart
@@ -106,7 +106,7 @@
         createAnalysisOptions(),
         disableChangesAndCacheAllResults: disableChangesAndCacheAllResults,
         externalSummaries: externalSummaries,
-        enableKernelDriver: useCFE);
+        useCFE: useCFE);
   }
 
   AnalysisOptionsImpl createAnalysisOptions() =>
diff --git a/pkg/analyzer_cli/lib/src/driver.dart b/pkg/analyzer_cli/lib/src/driver.dart
index 1dd323a..bc1731a 100644
--- a/pkg/analyzer_cli/lib/src/driver.dart
+++ b/pkg/analyzer_cli/lib/src/driver.dart
@@ -617,9 +617,8 @@
     PerformanceLog log = new PerformanceLog(null);
     AnalysisDriverScheduler scheduler = new AnalysisDriverScheduler(log);
 
-    bool enableKernelDriver = options.useCFE;
     file_system.Folder kernelPlatformBinariesFolder;
-    if (enableKernelDriver && options.dartSdkPlatformBinariesPath != null) {
+    if (options.useCFE && options.dartSdkPlatformBinariesPath != null) {
       kernelPlatformBinariesFolder =
           resourceProvider.getFolder(options.dartSdkPlatformBinariesPath);
     }
@@ -633,7 +632,7 @@
         null,
         sourceFactory,
         analysisOptions,
-        enableKernelDriver: enableKernelDriver,
+        useCFE: options.useCFE,
         kernelPlatformFolder: kernelPlatformBinariesFolder);
     analysisDriver.results.listen((_) {});
     analysisDriver.exceptions.listen((_) {});