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

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

Issue 1845403003: Begin implementing type inference for AST summaries. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Break a long line. Created 4 years, 9 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/test/src/summary/summarize_ast_test.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/test/src/task/strong_mode_test.dart
diff --git a/pkg/analyzer/test/src/task/strong_mode_test.dart b/pkg/analyzer/test/src/task/strong_mode_test.dart
index b7b86e3983ccce4a2f442d588836c9b3acb74561..c4589f789c0a1c76f95e1442c778c27dbb228a7b 100644
--- a/pkg/analyzer/test/src/task/strong_mode_test.dart
+++ b/pkg/analyzer/test/src/task/strong_mode_test.dart
@@ -7,6 +7,7 @@ library analyzer.test.src.task.strong_mode_test;
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/type.dart';
+import 'package:analyzer/src/generated/resolver.dart';
import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/task/strong_mode.dart';
import 'package:unittest/unittest.dart';
@@ -24,9 +25,11 @@ main() {
@reflectiveTest
class InstanceMemberInferrerTest extends AbstractContextTest {
- InstanceMemberInferrer get createInferrer =>
- new InstanceMemberInferrer(context.typeProvider,
- typeSystem: context.typeSystem);
+ InstanceMemberInferrer createInferrer(LibraryElement library) {
+ return new InstanceMemberInferrer(
+ context.typeProvider, new InheritanceManager(library),
+ typeSystem: context.typeSystem);
+ }
/**
* Add a source with the given [content] and return the result of resolving
@@ -38,13 +41,12 @@ class InstanceMemberInferrerTest extends AbstractContextTest {
}
void test_creation() {
- InstanceMemberInferrer inferrer = createInferrer;
+ InstanceMemberInferrer inferrer = createInferrer(null);
expect(inferrer, isNotNull);
expect(inferrer.typeSystem, isNotNull);
}
void test_inferCompilationUnit_field_multiple_different() {
- InstanceMemberInferrer inferrer = createInferrer;
String fieldName = 'f';
CompilationUnitElement unit = resolve('''
class A {
@@ -63,14 +65,13 @@ class C implements A, B {
expect(fieldC.type.isDynamic, isTrue);
expect(getterC.returnType.isDynamic, isTrue);
- inferrer.inferCompilationUnit(unit);
+ _runInferrer(unit);
expect(fieldC.type.isDynamic, isTrue);
expect(getterC.returnType.isDynamic, isTrue);
}
void test_inferCompilationUnit_field_multiple_different_generic() {
- InstanceMemberInferrer inferrer = createInferrer;
String fieldName = 'f';
CompilationUnitElement unit = resolve('''
class A<E> {
@@ -89,14 +90,13 @@ class C implements A<int>, B<double> {
expect(fieldC.type.isDynamic, isTrue);
expect(getterC.returnType.isDynamic, isTrue);
- inferrer.inferCompilationUnit(unit);
+ _runInferrer(unit);
expect(fieldC.type.isDynamic, isTrue);
expect(getterC.returnType.isDynamic, isTrue);
}
void test_inferCompilationUnit_field_multiple_dynamic() {
- InstanceMemberInferrer inferrer = createInferrer;
String fieldName = 'f';
CompilationUnitElement unit = resolve('''
class A {
@@ -115,14 +115,13 @@ class C implements A, B {
expect(fieldC.type.isDynamic, isTrue);
expect(getterC.returnType.isDynamic, isTrue);
- inferrer.inferCompilationUnit(unit);
+ _runInferrer(unit);
expect(fieldC.type.isDynamic, isTrue);
expect(getterC.returnType.isDynamic, isTrue);
}
void test_inferCompilationUnit_field_multiple_same() {
- InstanceMemberInferrer inferrer = createInferrer;
String fieldName = 'f';
CompilationUnitElement unit = resolve('''
class A {
@@ -144,14 +143,13 @@ class C implements A, B {
expect(fieldC.type.isDynamic, isTrue);
expect(getterC.returnType.isDynamic, isTrue);
- inferrer.inferCompilationUnit(unit);
+ _runInferrer(unit);
expect(fieldC.type, expectedType);
expect(getterC.returnType, expectedType);
}
void test_inferCompilationUnit_field_noOverride() {
- InstanceMemberInferrer inferrer = createInferrer;
String fieldName = 'f';
CompilationUnitElement unit = resolve('''
class A {
@@ -164,7 +162,7 @@ class A {
expect(fieldA.type.isDynamic, isTrue);
expect(getterA.returnType.isDynamic, isTrue);
- inferrer.inferCompilationUnit(unit);
+ InstanceMemberInferrer inferrer = _runInferrer(unit);
DartType intType = inferrer.typeProvider.intType;
expect(fieldA.type, intType);
@@ -172,7 +170,6 @@ class A {
}
void test_inferCompilationUnit_field_noOverride_bottom() {
- InstanceMemberInferrer inferrer = createInferrer;
String fieldName = 'f';
CompilationUnitElement unit = resolve('''
class A {
@@ -185,14 +182,13 @@ class A {
expect(fieldA.type.isDynamic, isTrue);
expect(getterA.returnType.isDynamic, isTrue);
- inferrer.inferCompilationUnit(unit);
+ _runInferrer(unit);
expect(fieldA.type.isDynamic, isTrue);
expect(getterA.returnType.isDynamic, isTrue);
}
void test_inferCompilationUnit_field_single_explicitlyDynamic() {
- InstanceMemberInferrer inferrer = createInferrer;
String fieldName = 'f';
CompilationUnitElement unit = resolve('''
class A {
@@ -211,14 +207,13 @@ class B extends A {
expect(fieldB.type.isDynamic, isTrue);
expect(getterB.returnType.isDynamic, isTrue);
- inferrer.inferCompilationUnit(unit);
+ _runInferrer(unit);
expect(fieldB.type, fieldA.type);
expect(getterB.returnType, getterA.returnType);
}
void test_inferCompilationUnit_field_single_final() {
- InstanceMemberInferrer inferrer = createInferrer;
String fieldName = 'f';
CompilationUnitElement unit = resolve('''
class A {
@@ -237,14 +232,13 @@ class B extends A {
expect(fieldB.type.isDynamic, isTrue);
expect(getterB.returnType.isDynamic, isTrue);
- inferrer.inferCompilationUnit(unit);
+ _runInferrer(unit);
expect(fieldB.type, fieldA.type);
expect(getterB.returnType, getterA.returnType);
}
void test_inferCompilationUnit_field_single_final_narrowType() {
- InstanceMemberInferrer inferrer = createInferrer;
String fieldName = 'f';
CompilationUnitElement unit = resolve('''
class A {
@@ -260,14 +254,13 @@ class B extends A {
expect(fieldB.type.isDynamic, isTrue);
expect(getterB.returnType.isDynamic, isTrue);
- inferrer.inferCompilationUnit(unit);
+ InstanceMemberInferrer inferrer = _runInferrer(unit);
expect(fieldB.type, inferrer.typeProvider.intType);
expect(getterB.returnType, fieldB.type);
}
void test_inferCompilationUnit_field_single_generic() {
- InstanceMemberInferrer inferrer = createInferrer;
String fieldName = 'f';
CompilationUnitElement unit = resolve('''
class A<E> {
@@ -284,14 +277,13 @@ class B<E> extends A<E> {
expect(fieldB.type.isDynamic, isTrue);
expect(getterB.returnType.isDynamic, isTrue);
- inferrer.inferCompilationUnit(unit);
+ _runInferrer(unit);
expect(fieldB.type, typeBE);
expect(getterB.returnType, typeBE);
}
void test_inferCompilationUnit_field_single_inconsistentAccessors() {
- InstanceMemberInferrer inferrer = createInferrer;
String fieldName = 'f';
CompilationUnitElement unit = resolve('''
class A {
@@ -308,14 +300,13 @@ class B extends A {
expect(fieldB.type.isDynamic, isTrue);
expect(getterB.returnType.isDynamic, isTrue);
- inferrer.inferCompilationUnit(unit);
+ _runInferrer(unit);
expect(fieldB.type.isDynamic, isTrue);
expect(getterB.returnType.isDynamic, isTrue);
}
void test_inferCompilationUnit_field_single_noModifiers() {
- InstanceMemberInferrer inferrer = createInferrer;
String fieldName = 'f';
CompilationUnitElement unit = resolve('''
class A {
@@ -334,14 +325,13 @@ class B extends A {
expect(fieldB.type.isDynamic, isTrue);
expect(getterB.returnType.isDynamic, isTrue);
- inferrer.inferCompilationUnit(unit);
+ _runInferrer(unit);
expect(fieldB.type, fieldA.type);
expect(getterB.returnType, getterA.returnType);
}
void test_inferCompilationUnit_fieldFormal() {
- InstanceMemberInferrer inferrer = createInferrer;
String fieldName = 'f';
CompilationUnitElement unit = resolve('''
class A {
@@ -356,7 +346,7 @@ class A {
expect(fieldA.type.isDynamic, isTrue);
expect(paramA.type.isDynamic, isTrue);
- inferrer.inferCompilationUnit(unit);
+ InstanceMemberInferrer inferrer = _runInferrer(unit);
DartType intType = inferrer.typeProvider.intType;
expect(fieldA.type, intType);
@@ -364,7 +354,6 @@ class A {
}
void test_inferCompilationUnit_getter_multiple_different() {
- InstanceMemberInferrer inferrer = createInferrer;
String getterName = 'g';
CompilationUnitElement unit = resolve('''
class A {
@@ -383,14 +372,13 @@ class C implements A, B {
expect(fieldC.type.isDynamic, isTrue);
expect(getterC.returnType.isDynamic, isTrue);
- inferrer.inferCompilationUnit(unit);
+ _runInferrer(unit);
expect(fieldC.type.isDynamic, isTrue);
expect(getterC.returnType.isDynamic, isTrue);
}
void test_inferCompilationUnit_getter_multiple_dynamic() {
- InstanceMemberInferrer inferrer = createInferrer;
String getterName = 'g';
CompilationUnitElement unit = resolve('''
class A {
@@ -409,14 +397,13 @@ class C implements A, B {
expect(fieldC.type.isDynamic, isTrue);
expect(getterC.returnType.isDynamic, isTrue);
- inferrer.inferCompilationUnit(unit);
+ _runInferrer(unit);
expect(fieldC.type.isDynamic, isTrue);
expect(getterC.returnType.isDynamic, isTrue);
}
void test_inferCompilationUnit_getter_multiple_same() {
- InstanceMemberInferrer inferrer = createInferrer;
String getterName = 'g';
CompilationUnitElement unit = resolve('''
class A {
@@ -438,14 +425,13 @@ class C implements A, B {
expect(fieldC.type.isDynamic, isTrue);
expect(getterC.returnType.isDynamic, isTrue);
- inferrer.inferCompilationUnit(unit);
+ _runInferrer(unit);
expect(fieldC.type, expectedType);
expect(getterC.returnType, expectedType);
}
void test_inferCompilationUnit_getter_single() {
- InstanceMemberInferrer inferrer = createInferrer;
String getterName = 'g';
CompilationUnitElement unit = resolve('''
class A {
@@ -464,14 +450,13 @@ class B extends A {
expect(fieldB.type.isDynamic, isTrue);
expect(getterB.returnType.isDynamic, isTrue);
- inferrer.inferCompilationUnit(unit);
+ _runInferrer(unit);
expect(fieldB.type, fieldA.type);
expect(getterB.returnType, getterA.returnType);
}
void test_inferCompilationUnit_getter_single_generic() {
- InstanceMemberInferrer inferrer = createInferrer;
String getterName = 'g';
CompilationUnitElement unit = resolve('''
class A<E> {
@@ -488,14 +473,13 @@ class B<E> extends A<E> {
expect(fieldB.type.isDynamic, isTrue);
expect(getterB.returnType.isDynamic, isTrue);
- inferrer.inferCompilationUnit(unit);
+ _runInferrer(unit);
expect(fieldB.type, typeBE);
expect(getterB.returnType, typeBE);
}
void test_inferCompilationUnit_getter_single_inconsistentAccessors() {
- InstanceMemberInferrer inferrer = createInferrer;
String getterName = 'g';
CompilationUnitElement unit = resolve('''
class A {
@@ -515,7 +499,7 @@ class B extends A {
expect(fieldB.type.isDynamic, isTrue);
expect(getterB.returnType.isDynamic, isTrue);
- inferrer.inferCompilationUnit(unit);
+ _runInferrer(unit);
// Expected behavior is that the getter is inferred: getters and setters
// are treated as independent methods.
@@ -524,17 +508,15 @@ class B extends A {
}
void test_inferCompilationUnit_invalid_inheritanceCycle() {
- InstanceMemberInferrer inferrer = createInferrer;
CompilationUnitElement unit = resolve('''
class A extends C {}
class B extends A {}
class C extends B {}
''');
- inferrer.inferCompilationUnit(unit);
+ _runInferrer(unit);
}
void test_inferCompilationUnit_method_parameter_multiple_different() {
- InstanceMemberInferrer inferrer = createInferrer;
String methodName = 'm';
CompilationUnitElement unit = resolve('''
class A {
@@ -552,13 +534,12 @@ class C implements A, B {
ParameterElement parameterC = methodC.parameters[0];
expect(parameterC.type.isDynamic, isTrue);
- inferrer.inferCompilationUnit(unit);
+ _runInferrer(unit);
expect(parameterC.type.isDynamic, isTrue);
}
void test_inferCompilationUnit_method_parameter_multiple_named_different() {
- InstanceMemberInferrer inferrer = createInferrer;
String methodName = 'm';
CompilationUnitElement unit = resolve('''
class A {
@@ -576,13 +557,12 @@ class C implements A, B {
ParameterElement parameterC = methodC.parameters[0];
expect(parameterC.type.isDynamic, isTrue);
- inferrer.inferCompilationUnit(unit);
+ _runInferrer(unit);
expect(parameterC.type.isDynamic, isTrue);
}
void test_inferCompilationUnit_method_parameter_multiple_named_same() {
- InstanceMemberInferrer inferrer = createInferrer;
String methodName = 'm';
CompilationUnitElement unit = resolve('''
class A {
@@ -604,13 +584,12 @@ class C implements A, B {
ParameterElement parameterC = methodC.parameters[0];
expect(parameterC.type.isDynamic, isTrue);
- inferrer.inferCompilationUnit(unit);
+ _runInferrer(unit);
expect(parameterC.type, expectedType);
}
void test_inferCompilationUnit_method_parameter_multiple_namedAndRequired() {
- InstanceMemberInferrer inferrer = createInferrer;
String methodName = 'm';
CompilationUnitElement unit = resolve('''
class A {
@@ -628,14 +607,13 @@ class C implements A, B {
ParameterElement parameterC = methodC.parameters[0];
expect(parameterC.type.isDynamic, isTrue);
- inferrer.inferCompilationUnit(unit);
+ _runInferrer(unit);
expect(parameterC.type.isDynamic, isTrue);
}
void
test_inferCompilationUnit_method_parameter_multiple_optionalAndRequired() {
- InstanceMemberInferrer inferrer = createInferrer;
String methodName = 'm';
CompilationUnitElement unit = resolve('''
class A {
@@ -657,13 +635,12 @@ class C implements A, B {
ParameterElement parameterC = methodC.parameters[0];
expect(parameterC.type.isDynamic, isTrue);
- inferrer.inferCompilationUnit(unit);
+ _runInferrer(unit);
expect(parameterC.type, expectedType);
}
void test_inferCompilationUnit_method_parameter_single_generic() {
- InstanceMemberInferrer inferrer = createInferrer;
String methodName = 'm';
CompilationUnitElement unit = resolve('''
class A<E> {
@@ -680,7 +657,7 @@ class C<E> implements A<E> {
expect(parameterC.type.isDynamic, isTrue);
expect(methodC.type.typeArguments, [typeCE]);
- inferrer.inferCompilationUnit(unit);
+ _runInferrer(unit);
expect(parameterC.type, classC.typeParameters[0].type);
expect(methodC.type.typeArguments, [typeCE],
@@ -688,7 +665,6 @@ class C<E> implements A<E> {
}
void test_inferCompilationUnit_method_return_multiple_different() {
- InstanceMemberInferrer inferrer = createInferrer;
String methodName = 'm';
CompilationUnitElement unit = resolve('''
class A {
@@ -705,13 +681,12 @@ class C implements A, B {
MethodElement methodC = classC.getMethod(methodName);
expect(methodC.returnType.isDynamic, isTrue);
- inferrer.inferCompilationUnit(unit);
+ _runInferrer(unit);
expect(methodC.returnType.isDynamic, isTrue);
}
void test_inferCompilationUnit_method_return_multiple_different_generic() {
- InstanceMemberInferrer inferrer = createInferrer;
String methodName = 'm';
CompilationUnitElement unit = resolve('''
class A<E> {
@@ -728,13 +703,12 @@ class C implements A<int>, B<double> {
MethodElement methodC = classC.getMethod(methodName);
expect(methodC.returnType.isDynamic, isTrue);
- inferrer.inferCompilationUnit(unit);
+ _runInferrer(unit);
expect(methodC.returnType.isDynamic, isTrue);
}
void test_inferCompilationUnit_method_return_multiple_dynamic() {
- InstanceMemberInferrer inferrer = createInferrer;
String methodName = 'm';
CompilationUnitElement unit = resolve('''
class A {
@@ -751,13 +725,12 @@ class C implements A, B {
MethodElement methodC = classC.getMethod(methodName);
expect(methodC.returnType.isDynamic, isTrue);
- inferrer.inferCompilationUnit(unit);
+ _runInferrer(unit);
expect(methodC.returnType.isDynamic, isTrue);
}
void test_inferCompilationUnit_method_return_multiple_same_generic() {
- InstanceMemberInferrer inferrer = createInferrer;
String methodName = 'm';
CompilationUnitElement unit = resolve('''
class A<E> {
@@ -774,13 +747,12 @@ class C<E> implements A<E>, B<E> {
MethodElement methodC = classC.getMethod(methodName);
expect(methodC.returnType.isDynamic, isTrue);
- inferrer.inferCompilationUnit(unit);
+ _runInferrer(unit);
expect(methodC.returnType, classC.typeParameters[0].type);
}
void test_inferCompilationUnit_method_return_multiple_same_nonVoid() {
- InstanceMemberInferrer inferrer = createInferrer;
String methodName = 'm';
CompilationUnitElement unit = resolve('''
class A {
@@ -800,13 +772,12 @@ class C implements A, B {
MethodElement methodC = classC.getMethod(methodName);
expect(methodC.returnType.isDynamic, isTrue);
- inferrer.inferCompilationUnit(unit);
+ _runInferrer(unit);
expect(methodC.returnType, expectedType);
}
void test_inferCompilationUnit_method_return_multiple_same_void() {
- InstanceMemberInferrer inferrer = createInferrer;
String methodName = 'm';
CompilationUnitElement unit = resolve('''
class A {
@@ -826,13 +797,12 @@ class C implements A, B {
MethodElement methodC = classC.getMethod(methodName);
expect(methodC.returnType.isDynamic, isTrue);
- inferrer.inferCompilationUnit(unit);
+ _runInferrer(unit);
expect(methodC.returnType, expectedType);
}
void test_inferCompilationUnit_method_return_multiple_void() {
- InstanceMemberInferrer inferrer = createInferrer;
String methodName = 'm';
CompilationUnitElement unit = resolve('''
class A {
@@ -849,13 +819,12 @@ class C implements A, B {
MethodElement methodC = classC.getMethod(methodName);
expect(methodC.returnType.isDynamic, isTrue);
- inferrer.inferCompilationUnit(unit);
+ _runInferrer(unit);
expect(methodC.returnType.isDynamic, isTrue);
}
void test_inferCompilationUnit_method_return_single() {
- InstanceMemberInferrer inferrer = createInferrer;
String methodName = 'm';
CompilationUnitElement unit = resolve('''
class A {
@@ -871,13 +840,12 @@ class B extends A {
MethodElement methodB = classB.getMethod(methodName);
expect(methodB.returnType.isDynamic, isTrue);
- inferrer.inferCompilationUnit(unit);
+ _runInferrer(unit);
expect(methodB.returnType, methodA.returnType);
}
void test_inferCompilationUnit_method_return_single_generic() {
- InstanceMemberInferrer inferrer = createInferrer;
String methodName = 'm';
CompilationUnitElement unit = resolve('''
class A<E> {
@@ -893,7 +861,7 @@ class B<E> extends A<E> {
expect(methodB.returnType.isDynamic, isTrue);
expect(methodB.type.typeArguments, [typeBE]);
- inferrer.inferCompilationUnit(unit);
+ _runInferrer(unit);
expect(methodB.returnType, classB.typeParameters[0].type);
expect(methodB.type.typeArguments, [typeBE],
@@ -901,7 +869,6 @@ class B<E> extends A<E> {
}
void test_inferCompilationUnit_setter_single() {
- InstanceMemberInferrer inferrer = createInferrer;
String setterName = 'g';
CompilationUnitElement unit = resolve('''
class A {
@@ -920,14 +887,13 @@ class B extends A {
expect(fieldB.type.isDynamic, isTrue);
expect(setterB.parameters[0].type.isDynamic, isTrue);
- inferrer.inferCompilationUnit(unit);
+ _runInferrer(unit);
expect(fieldB.type, fieldA.type);
expect(setterB.parameters[0].type, setterA.parameters[0].type);
}
void test_inferCompilationUnit_setter_single_generic() {
- InstanceMemberInferrer inferrer = createInferrer;
String setterName = 'g';
CompilationUnitElement unit = resolve('''
class A<E> {
@@ -944,14 +910,13 @@ class B<E> extends A<E> {
expect(fieldB.type.isDynamic, isTrue);
expect(setterB.parameters[0].type.isDynamic, isTrue);
- inferrer.inferCompilationUnit(unit);
+ _runInferrer(unit);
expect(fieldB.type, typeBE);
expect(setterB.parameters[0].type, typeBE);
}
void test_inferCompilationUnit_setter_single_inconsistentAccessors() {
- InstanceMemberInferrer inferrer = createInferrer;
String getterName = 'g';
CompilationUnitElement unit = resolve('''
class A {
@@ -970,7 +935,7 @@ class B extends A {
expect(fieldB.type.isDynamic, isTrue);
expect(setterB.parameters[0].type.isDynamic, isTrue);
- inferrer.inferCompilationUnit(unit);
+ _runInferrer(unit);
// Expected behavior is that the getter is inferred: getters and setters
// are treated as independent methods.
@@ -980,6 +945,12 @@ class B extends A {
// resolver would do if we explicitly typed the parameter as 'String'
expect(fieldB.type, setterB.parameters[0].type);
}
+
+ InstanceMemberInferrer _runInferrer(CompilationUnitElement unit) {
+ InstanceMemberInferrer inferrer = createInferrer(unit.library);
+ inferrer.inferCompilationUnit(unit);
+ return inferrer;
+ }
}
@reflectiveTest
« no previous file with comments | « pkg/analyzer/test/src/summary/summarize_ast_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698