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((_) {});