Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(654)

Unified Diff: pkg/analyzer/test/src/task/dart_test.dart

Issue 1320923003: Implement a task to compute the dependencies between static variables (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Address comments Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/analyzer/lib/src/task/strong_mode.dart ('k') | pkg/analyzer/test/src/task/strong_mode_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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');
« no previous file with comments | « pkg/analyzer/lib/src/task/strong_mode.dart ('k') | pkg/analyzer/test/src/task/strong_mode_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698