Index: pkg/analyzer/test/src/task/dart_test.dart |
diff --git a/pkg/analyzer/test/src/task/dart_test.dart b/pkg/analyzer/test/src/task/dart_test.dart |
index ff6418191292c5a847a6d2846fa86bb8143a148b..d30fb28980a287e353899d1a775aa352e5e2ae9d 100644 |
--- a/pkg/analyzer/test/src/task/dart_test.dart |
+++ b/pkg/analyzer/test/src/task/dart_test.dart |
@@ -40,6 +40,7 @@ main() { |
runReflectiveTests(BuildTypeProviderTaskTest); |
runReflectiveTests(ComputeConstantDependenciesTaskTest); |
runReflectiveTests(ComputeConstantValueTaskTest); |
+ runReflectiveTests(ComputeInferableStaticVariableDependenciesTaskTest); |
runReflectiveTests(ContainingLibrariesTaskTest); |
runReflectiveTests(DartErrorsTaskTest); |
runReflectiveTests(EvaluateUnitConstantsTaskTest); |
@@ -63,15 +64,6 @@ class BuildCompilationUnitElementTaskTest extends _AbstractDartTaskTest { |
Source source; |
LibrarySpecificUnit target; |
- /** |
- * Enable strong mode in the current analysis context. |
- */ |
- void enableStrongMode() { |
- AnalysisOptionsImpl options = context.analysisOptions; |
- options.strongMode = true; |
- context.analysisOptions = options; |
- } |
- |
test_buildInputs() { |
LibrarySpecificUnit target = |
new LibrarySpecificUnit(emptySource, emptySource); |
@@ -111,40 +103,7 @@ class BuildCompilationUnitElementTaskTest extends _AbstractDartTaskTest { |
expect(descriptor, isNotNull); |
} |
- test_perform_find_constants_strong() { |
- enableStrongMode(); |
- _performBuildTask(''' |
-const x = 1; |
-class C { |
- static const y = 1; |
- const C([p = 1]); |
-} |
-@x |
-f() { |
- const z = 1; |
-} |
-'''); |
- CompilationUnit unit = outputs[RESOLVED_UNIT1]; |
- CompilationUnitElement unitElement = outputs[COMPILATION_UNIT_ELEMENT]; |
- Annotation annotation = unit.declarations |
- .firstWhere((m) => m is FunctionDeclaration) |
- .metadata[0]; |
- List<ConstantEvaluationTarget> expectedConstants = [ |
- unitElement.accessors.firstWhere((e) => e.isGetter).variable, |
- unitElement.types[0].fields[0], |
- unitElement.functions[0].localVariables[0], |
- unitElement.types[0].constructors[0], |
- new ConstantEvaluationTarget_Annotation( |
- context, source, source, annotation), |
- unitElement.types[0].constructors[0].parameters[0] |
- ]; |
- expect(outputs[CLASSES_IN_UNIT], hasLength(1)); |
- expect( |
- outputs[COMPILATION_UNIT_CONSTANTS].toSet(), expectedConstants.toSet()); |
- expect(outputs[INFERABLE_STATIC_VARIABLES_IN_UNIT], hasLength(2)); |
- } |
- |
- test_perform_find_constants_weak() { |
+ test_perform_find_constants() { |
_performBuildTask(''' |
const x = 1; |
class C { |
@@ -170,34 +129,11 @@ f() { |
context, source, source, annotation), |
unitElement.types[0].constructors[0].parameters[0] |
]; |
- expect(outputs[CLASSES_IN_UNIT], hasLength(0)); |
expect( |
outputs[COMPILATION_UNIT_CONSTANTS].toSet(), expectedConstants.toSet()); |
- expect(outputs[INFERABLE_STATIC_VARIABLES_IN_UNIT], hasLength(0)); |
- } |
- |
- test_perform_library_strong() { |
- enableStrongMode(); |
- _performBuildTask(r''' |
-library lib; |
-import 'lib2.dart'; |
-export 'lib3.dart'; |
-part 'part.dart'; |
-final x = ''; |
-class A { |
- static final y = 0; |
-} |
-class B = Object with A; |
-'''); |
- expect(outputs, hasLength(5)); |
- expect(outputs[CLASSES_IN_UNIT], hasLength(2)); |
- expect(outputs[COMPILATION_UNIT_CONSTANTS], isNotNull); |
- expect(outputs[COMPILATION_UNIT_ELEMENT], isNotNull); |
- expect(outputs[INFERABLE_STATIC_VARIABLES_IN_UNIT], hasLength(2)); |
- expect(outputs[RESOLVED_UNIT1], isNotNull); |
} |
- test_perform_library_weak() { |
+ test_perform_library() { |
_performBuildTask(r''' |
library lib; |
import 'lib2.dart'; |
@@ -209,11 +145,9 @@ class A { |
} |
class B = Object with A; |
'''); |
- expect(outputs, hasLength(5)); |
- expect(outputs[CLASSES_IN_UNIT], hasLength(0)); |
+ expect(outputs, hasLength(3)); |
expect(outputs[COMPILATION_UNIT_CONSTANTS], isNotNull); |
expect(outputs[COMPILATION_UNIT_ELEMENT], isNotNull); |
- expect(outputs[INFERABLE_STATIC_VARIABLES_IN_UNIT], hasLength(0)); |
expect(outputs[RESOLVED_UNIT1], isNotNull); |
} |
@@ -1556,6 +1490,32 @@ const x = 1; |
} |
@reflectiveTest |
+class ComputeInferableStaticVariableDependenciesTaskTest |
+ extends _AbstractDartTaskTest { |
+ test_perform() { |
+ AnalysisTarget source = newSource( |
+ '/test.dart', |
+ ''' |
+const a = b; |
+const b = 0; |
+'''); |
+ LibrarySpecificUnit target = new LibrarySpecificUnit(source, source); |
+ computeResult(target, RESOLVED_UNIT5); |
+ CompilationUnit unit = outputs[RESOLVED_UNIT5]; |
+ TopLevelVariableElement elementA = unit.element.topLevelVariables[0]; |
+ TopLevelVariableElement elementB = unit.element.topLevelVariables[1]; |
+ |
+ computeResult(elementA, INFERABLE_STATIC_VARIABLE_DEPENDENCIES); |
+ expect(task, |
+ new isInstanceOf<ComputeInferableStaticVariableDependenciesTask>()); |
+ expect(outputs, hasLength(1)); |
+ Set<VariableElement> dependencies = |
+ outputs[INFERABLE_STATIC_VARIABLE_DEPENDENCIES]; |
+ expect(dependencies, unorderedEquals([elementB])); |
+ } |
+} |
+ |
+@reflectiveTest |
class ContainingLibrariesTaskTest extends _AbstractDartTaskTest { |
test_buildInputs() { |
Map<String, TaskInput> inputs = |
@@ -2336,16 +2296,25 @@ class B {}'''); |
@reflectiveTest |
class PartiallyResolveReferencesTaskTest extends _AbstractDartTaskTest { |
test_perform() { |
+ enableStrongMode(); |
Source source = newSource( |
'/test.dart', |
''' |
int a = b; |
int b = c; |
+var d = 0; |
+class A {} |
+class C { |
+ static final f = ''; |
+ var g = 0; |
+} |
'''); |
LibrarySpecificUnit target = new LibrarySpecificUnit(source, source); |
computeResult(target, RESOLVED_UNIT5); |
expect(task, new isInstanceOf<PartiallyResolveUnitReferencesTask>()); |
// Test the outputs |
+ expect(outputs[CLASSES_IN_UNIT], hasLength(2)); |
+ expect(outputs[INFERABLE_STATIC_VARIABLES_IN_UNIT], hasLength(2)); |
CompilationUnit unit = outputs[RESOLVED_UNIT5]; |
expect(unit, same(outputs[RESOLVED_UNIT5])); |
// Test the state of the AST |
@@ -2386,6 +2355,8 @@ main() { |
computeResult(new LibrarySpecificUnit(sourceC, sourceC), RESOLVED_UNIT5); |
expect(task, new isInstanceOf<PartiallyResolveUnitReferencesTask>()); |
// validate |
+ expect(outputs[CLASSES_IN_UNIT], hasLength(0)); |
+ expect(outputs[INFERABLE_STATIC_VARIABLES_IN_UNIT], hasLength(0)); |
CompilationUnit unit = outputs[RESOLVED_UNIT5]; |
expect(unit, isNotNull); |
@@ -2901,6 +2872,15 @@ class _AbstractDartTaskTest extends AbstractContextTest { |
source, [new ScriptFragment(97, 5, 36, scriptContent)]); |
} |
+ /** |
+ * Enable strong mode in the current analysis context. |
+ */ |
+ void enableStrongMode() { |
+ AnalysisOptionsImpl options = context.analysisOptions; |
+ options.strongMode = true; |
+ context.analysisOptions = options; |
+ } |
+ |
void setUp() { |
super.setUp(); |
emptySource = newSource('/test.dart'); |