Index: pkg/analyzer/test/generated/static_type_warning_code_test.dart |
diff --git a/pkg/analyzer/test/generated/static_type_warning_code_test.dart b/pkg/analyzer/test/generated/static_type_warning_code_test.dart |
index 2354fb0bb2332a13a6f1fa625085c1823d307fb6..0f4f64a92b1edc381f9d38bd91eb00b86ac12797 100644 |
--- a/pkg/analyzer/test/generated/static_type_warning_code_test.dart |
+++ b/pkg/analyzer/test/generated/static_type_warning_code_test.dart |
@@ -23,17 +23,18 @@ main() { |
@reflectiveTest |
class StaticTypeWarningCodeTest extends ResolverTestCase { |
void fail_inaccessibleSetter() { |
- Source source = addSource(r''' |
-'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.INACCESSIBLE_SETTER]); |
- verify([source]); |
+ // TODO(rnystrom): This doesn't look right. |
Brian Wilkerson
2016/03/09 01:37:38
Note that the method's name is "fail", indicating
Bob Nystrom
2016/03/09 01:46:47
That's what I figured. :) Tests that are just expe
|
+ assertErrorsInCode( |
+ r''' |
+''', |
+ [StaticTypeWarningCode.INACCESSIBLE_SETTER]); |
} |
void fail_method_lookup_mixin_of_extends() { |
// See dartbug.com/25605 |
resetWithOptions(new AnalysisOptionsImpl()..enableSuperMixins = true); |
- Source source = addSource(''' |
+ assertErrorsInUnverifiedCode( |
+ ''' |
class A { a() => null; } |
class B {} |
abstract class M extends A {} |
@@ -41,19 +42,19 @@ class T = B with M; // Warning: B does not extend A |
main() { |
new T().a(); // Warning: The method 'a' is not defined for the class 'T' |
} |
-'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [ |
- // TODO(paulberry): when dartbug.com/25614 is fixed, add static warning |
- // code for "B does not extend A". |
- StaticTypeWarningCode.UNDEFINED_METHOD |
- ]); |
+''', |
+ [ |
+ // TODO(paulberry): when dartbug.com/25614 is fixed, add static warning |
+ // code for "B does not extend A". |
+ StaticTypeWarningCode.UNDEFINED_METHOD |
+ ]); |
} |
void fail_method_lookup_mixin_of_implements() { |
// See dartbug.com/25605 |
resetWithOptions(new AnalysisOptionsImpl()..enableSuperMixins = true); |
- Source source = addSource(''' |
+ assertErrorsInUnverifiedCode( |
+ ''' |
class A { a() => null; } |
class B {} |
abstract class M implements A {} |
@@ -61,18 +62,18 @@ class T = B with M; // Warning: Missing concrete implementation of 'A.a' |
main() { |
new T().a(); // Warning: The method 'a' is not defined for the class 'T' |
} |
-'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [ |
- StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE, |
- StaticTypeWarningCode.UNDEFINED_METHOD |
- ]); |
+''', |
+ [ |
+ StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE, |
+ StaticTypeWarningCode.UNDEFINED_METHOD |
+ ]); |
} |
void fail_method_lookup_mixin_of_mixin() { |
// See dartbug.com/25605 |
resetWithOptions(new AnalysisOptionsImpl()..enableSuperMixins = true); |
- Source source = addSource(''' |
+ assertErrorsInUnverifiedCode( |
+ ''' |
class A {} |
class B { b() => null; } |
class C {} |
@@ -81,15 +82,15 @@ class T = C with M; |
main() { |
new T().b(); |
} |
-'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_METHOD]); |
+''', |
+ [StaticTypeWarningCode.UNDEFINED_METHOD]); |
} |
void fail_method_lookup_mixin_of_mixin_application() { |
// See dartbug.com/25605 |
resetWithOptions(new AnalysisOptionsImpl()..enableSuperMixins = true); |
- Source source = addSource(''' |
+ assertErrorsInUnverifiedCode( |
+ ''' |
class A { a() => null; } |
class B {} |
class C {} |
@@ -98,21 +99,19 @@ class T = C with M; |
main() { |
new T().a(); |
} |
-'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_METHOD]); |
+''', |
+ [StaticTypeWarningCode.UNDEFINED_METHOD]); |
} |
void fail_undefinedEnumConstant() { |
// We need a way to set the parseEnum flag in the parser to true. |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
enum E { ONE } |
E e() { |
return E.TWO; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_ENUM_CONSTANT]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_ENUM_CONSTANT]); |
} |
void test_ambiguousImport_function() { |
@@ -141,7 +140,8 @@ f() {}'''); |
// dubious practice for the computation of an assert message to have side |
// effects, since it is only evaluated if the assert fails). |
resetWithOptions(new AnalysisOptionsImpl()..enableAssertMessage = true); |
- Source source = addSource(''' |
+ assertErrorsInCode( |
+ ''' |
class C { |
void foo() {} |
} |
@@ -152,40 +152,38 @@ f(Object x) { |
assert(true, () { x = new C(); return 'msg'; }()); |
} |
} |
-'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_METHOD]); |
+''', |
+ [StaticTypeWarningCode.UNDEFINED_METHOD]); |
// Do not verify since `x.foo()` fails to resolve. |
} |
void test_await_flattened() { |
- Source source = addSource(''' |
+ assertErrorsInCode( |
+ ''' |
import 'dart:async'; |
Future<Future<int>> ffi() => null; |
f() async { |
Future<int> b = await ffi(); // Warning: int not assignable to Future<int> |
} |
-'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.INVALID_ASSIGNMENT]); |
- verify([source]); |
+''', |
+ [StaticTypeWarningCode.INVALID_ASSIGNMENT]); |
} |
void test_await_simple() { |
- Source source = addSource(''' |
+ assertErrorsInCode( |
+ ''' |
import 'dart:async'; |
Future<int> fi() => null; |
f() async { |
String a = await fi(); // Warning: int not assignable to String |
} |
-'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.INVALID_ASSIGNMENT]); |
- verify([source]); |
+''', |
+ [StaticTypeWarningCode.INVALID_ASSIGNMENT]); |
} |
void test_bug21912() { |
- Source source = addSource(''' |
+ assertErrorsInCode( |
+ ''' |
class A {} |
class B extends A {} |
@@ -204,120 +202,103 @@ void main() { |
left = t2; |
} |
} |
-'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [ |
- StaticTypeWarningCode.INVALID_ASSIGNMENT, |
- StaticTypeWarningCode.INVALID_ASSIGNMENT |
- ]); |
- verify([source]); |
+''', |
+ [ |
+ StaticTypeWarningCode.INVALID_ASSIGNMENT, |
+ StaticTypeWarningCode.INVALID_ASSIGNMENT |
+ ]); |
} |
void test_expectedOneListTypeArgument() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
main() { |
<int, int> []; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors( |
- source, [StaticTypeWarningCode.EXPECTED_ONE_LIST_TYPE_ARGUMENTS]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.EXPECTED_ONE_LIST_TYPE_ARGUMENTS]); |
} |
void test_expectedTwoMapTypeArguments_one() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
main() { |
<int> {}; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors( |
- source, [StaticTypeWarningCode.EXPECTED_TWO_MAP_TYPE_ARGUMENTS]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.EXPECTED_TWO_MAP_TYPE_ARGUMENTS]); |
} |
void test_expectedTwoMapTypeArguments_three() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
main() { |
<int, int, int> {}; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors( |
- source, [StaticTypeWarningCode.EXPECTED_TWO_MAP_TYPE_ARGUMENTS]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.EXPECTED_TWO_MAP_TYPE_ARGUMENTS]); |
} |
void test_illegal_return_type_async_function() { |
- Source source = addSource(''' |
+ assertErrorsInCode( |
+ ''' |
int f() async {} |
-'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [ |
- StaticTypeWarningCode.ILLEGAL_ASYNC_RETURN_TYPE, |
- HintCode.MISSING_RETURN |
- ]); |
- verify([source]); |
+''', |
+ [ |
+ StaticTypeWarningCode.ILLEGAL_ASYNC_RETURN_TYPE, |
+ HintCode.MISSING_RETURN |
+ ]); |
} |
void test_illegal_return_type_async_generator_function() { |
- Source source = addSource(''' |
+ assertErrorsInCode( |
+ ''' |
int f() async* {} |
-'''); |
- computeLibrarySourceErrors(source); |
- assertErrors( |
- source, [StaticTypeWarningCode.ILLEGAL_ASYNC_GENERATOR_RETURN_TYPE]); |
- verify([source]); |
+''', |
+ [StaticTypeWarningCode.ILLEGAL_ASYNC_GENERATOR_RETURN_TYPE]); |
} |
void test_illegal_return_type_async_generator_method() { |
- Source source = addSource(''' |
+ assertErrorsInCode( |
+ ''' |
class C { |
int f() async* {} |
} |
-'''); |
- computeLibrarySourceErrors(source); |
- assertErrors( |
- source, [StaticTypeWarningCode.ILLEGAL_ASYNC_GENERATOR_RETURN_TYPE]); |
- verify([source]); |
+''', |
+ [StaticTypeWarningCode.ILLEGAL_ASYNC_GENERATOR_RETURN_TYPE]); |
} |
void test_illegal_return_type_async_method() { |
- Source source = addSource(''' |
+ assertErrorsInCode( |
+ ''' |
class C { |
int f() async {} |
} |
-'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [ |
- StaticTypeWarningCode.ILLEGAL_ASYNC_RETURN_TYPE, |
- HintCode.MISSING_RETURN |
- ]); |
- verify([source]); |
+''', |
+ [ |
+ StaticTypeWarningCode.ILLEGAL_ASYNC_RETURN_TYPE, |
+ HintCode.MISSING_RETURN |
+ ]); |
} |
void test_illegal_return_type_sync_generator_function() { |
- Source source = addSource(''' |
+ assertErrorsInCode( |
+ ''' |
int f() sync* {} |
-'''); |
- computeLibrarySourceErrors(source); |
- assertErrors( |
- source, [StaticTypeWarningCode.ILLEGAL_SYNC_GENERATOR_RETURN_TYPE]); |
- verify([source]); |
+''', |
+ [StaticTypeWarningCode.ILLEGAL_SYNC_GENERATOR_RETURN_TYPE]); |
} |
void test_illegal_return_type_sync_generator_method() { |
- Source source = addSource(''' |
+ assertErrorsInCode( |
+ ''' |
class C { |
int f() sync* {} |
} |
-'''); |
- computeLibrarySourceErrors(source); |
- assertErrors( |
- source, [StaticTypeWarningCode.ILLEGAL_SYNC_GENERATOR_RETURN_TYPE]); |
- verify([source]); |
+''', |
+ [StaticTypeWarningCode.ILLEGAL_SYNC_GENERATOR_RETURN_TYPE]); |
} |
void test_inconsistentMethodInheritance_paramCount() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
abstract class A { |
int x(); |
} |
@@ -325,115 +306,101 @@ abstract class B { |
int x(int y); |
} |
class C implements A, B { |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors( |
- source, [StaticTypeWarningCode.INCONSISTENT_METHOD_INHERITANCE]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.INCONSISTENT_METHOD_INHERITANCE]); |
} |
void test_inconsistentMethodInheritance_paramType() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
abstract class A { |
x(int i); |
} |
abstract class B { |
x(String s); |
} |
-abstract class C implements A, B {}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors( |
- source, [StaticTypeWarningCode.INCONSISTENT_METHOD_INHERITANCE]); |
- verify([source]); |
+abstract class C implements A, B {} |
+''', |
+ [StaticTypeWarningCode.INCONSISTENT_METHOD_INHERITANCE]); |
} |
void test_inconsistentMethodInheritance_returnType() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
abstract class A { |
int x(); |
} |
abstract class B { |
String x(); |
} |
-abstract class C implements A, B {}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors( |
- source, [StaticTypeWarningCode.INCONSISTENT_METHOD_INHERITANCE]); |
- verify([source]); |
+abstract class C implements A, B {} |
+''', |
+ [StaticTypeWarningCode.INCONSISTENT_METHOD_INHERITANCE]); |
} |
void test_instanceAccessToStaticMember_method_invocation() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A { |
static m() {} |
} |
main(A a) { |
a.m(); |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors( |
- source, [StaticTypeWarningCode.INSTANCE_ACCESS_TO_STATIC_MEMBER]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.INSTANCE_ACCESS_TO_STATIC_MEMBER]); |
} |
void test_instanceAccessToStaticMember_method_reference() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A { |
static m() {} |
} |
main(A a) { |
a.m; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors( |
- source, [StaticTypeWarningCode.INSTANCE_ACCESS_TO_STATIC_MEMBER]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.INSTANCE_ACCESS_TO_STATIC_MEMBER]); |
} |
void test_instanceAccessToStaticMember_propertyAccess_field() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A { |
static var f; |
} |
main(A a) { |
a.f; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors( |
- source, [StaticTypeWarningCode.INSTANCE_ACCESS_TO_STATIC_MEMBER]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.INSTANCE_ACCESS_TO_STATIC_MEMBER]); |
} |
void test_instanceAccessToStaticMember_propertyAccess_getter() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A { |
static get f => 42; |
} |
main(A a) { |
a.f; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors( |
- source, [StaticTypeWarningCode.INSTANCE_ACCESS_TO_STATIC_MEMBER]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.INSTANCE_ACCESS_TO_STATIC_MEMBER]); |
} |
void test_instanceAccessToStaticMember_propertyAccess_setter() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A { |
static set f(x) {} |
} |
main(A a) { |
a.f = 42; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors( |
- source, [StaticTypeWarningCode.INSTANCE_ACCESS_TO_STATIC_MEMBER]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.INSTANCE_ACCESS_TO_STATIC_MEMBER]); |
} |
void test_invalidAssignment_compoundAssignment() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class byte { |
int _value; |
byte(this._value); |
@@ -443,152 +410,137 @@ class byte { |
void main() { |
byte b = new byte(52); |
b += 3; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.INVALID_ASSIGNMENT]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.INVALID_ASSIGNMENT]); |
} |
void test_invalidAssignment_defaultValue_named() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
f({String x: 0}) { |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.INVALID_ASSIGNMENT]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.INVALID_ASSIGNMENT]); |
} |
void test_invalidAssignment_defaultValue_optional() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
f([String x = 0]) { |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.INVALID_ASSIGNMENT]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.INVALID_ASSIGNMENT]); |
} |
void test_invalidAssignment_dynamic() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
main() { |
dynamic = 1; |
} |
-'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.INVALID_ASSIGNMENT]); |
- verify([source]); |
+''', |
+ [StaticTypeWarningCode.INVALID_ASSIGNMENT]); |
} |
void test_invalidAssignment_functionExpressionInvocation() { |
- Source source = addSource(''' |
+ assertErrorsInCode( |
+ ''' |
main() { |
String x = (() => 5)(); |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.INVALID_ASSIGNMENT]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.INVALID_ASSIGNMENT]); |
} |
void test_invalidAssignment_ifNullAssignment() { |
- Source source = addSource(''' |
+ assertErrorsInCode( |
+ ''' |
void f(int i) { |
double d; |
d ??= i; |
} |
-'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.INVALID_ASSIGNMENT]); |
- verify([source]); |
+''', |
+ [StaticTypeWarningCode.INVALID_ASSIGNMENT]); |
} |
void test_invalidAssignment_instanceVariable() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A { |
int x; |
} |
f() { |
A a; |
a.x = '0'; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.INVALID_ASSIGNMENT]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.INVALID_ASSIGNMENT]); |
} |
void test_invalidAssignment_localVariable() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
f() { |
int x; |
x = '0'; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.INVALID_ASSIGNMENT]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.INVALID_ASSIGNMENT]); |
} |
void test_invalidAssignment_regressionInIssue18468Fix() { |
// https://code.google.com/p/dart/issues/detail?id=18628 |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class C<T> { |
T t = int; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.INVALID_ASSIGNMENT]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.INVALID_ASSIGNMENT]); |
} |
void test_invalidAssignment_staticVariable() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A { |
static int x; |
} |
f() { |
A.x = '0'; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.INVALID_ASSIGNMENT]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.INVALID_ASSIGNMENT]); |
} |
void test_invalidAssignment_topLevelVariableDeclaration() { |
- Source source = addSource("int x = 'string';"); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.INVALID_ASSIGNMENT]); |
- verify([source]); |
+ assertErrorsInCode( |
+ "int x = 'string';", [StaticTypeWarningCode.INVALID_ASSIGNMENT]); |
} |
void test_invalidAssignment_typeParameter() { |
// 14221 |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class B<T> { |
T value; |
void test(num n) { |
value = n; |
} |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.INVALID_ASSIGNMENT]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.INVALID_ASSIGNMENT]); |
} |
void test_invalidAssignment_variableDeclaration() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A { |
int x = 'string'; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.INVALID_ASSIGNMENT]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.INVALID_ASSIGNMENT]); |
} |
void test_invocationOfNonFunction_class() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A { |
void m() { |
A(); |
} |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION]); |
+}''', |
+ [StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION]); |
} |
void test_invocationOfNonFunction_localGenericFunction() { |
@@ -599,41 +551,39 @@ class A { |
AnalysisOptionsImpl options = new AnalysisOptionsImpl(); |
options.enableStrictCallChecks = true; |
resetWithOptions(options); |
- Source source = addSource(''' |
+ assertErrorsInCode( |
+ ''' |
f(Function f) { |
return f(); |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION]); |
} |
void test_invocationOfNonFunction_localObject() { |
AnalysisOptionsImpl options = new AnalysisOptionsImpl(); |
options.enableStrictCallChecks = true; |
resetWithOptions(options); |
- Source source = addSource(''' |
+ assertErrorsInCode( |
+ ''' |
f(Object o) { |
return o(); |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION]); |
} |
void test_invocationOfNonFunction_localVariable() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
f() { |
int x; |
return x(); |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION]); |
} |
void test_invocationOfNonFunction_ordinaryInvocation() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A { |
static int x; |
} |
@@ -641,27 +591,27 @@ class B { |
m() { |
A.x(); |
} |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION]); |
+}''', |
+ [StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION]); |
// A call to verify(source) fails as A.x() cannot be resolved. |
} |
void test_invocationOfNonFunction_staticInvocation() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A { |
static int get g => 0; |
f() { |
A.g(); |
} |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION]); |
+}''', |
+ [StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION]); |
// A call to verify(source) fails as g() cannot be resolved. |
} |
void test_invocationOfNonFunction_superExpression() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A { |
int get g => 0; |
} |
@@ -669,282 +619,246 @@ class B extends A { |
m() { |
var v = super.g(); |
} |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION]); |
} |
void test_invocationOfNonFunctionExpression_literal() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
f() { |
3(5); |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors( |
- source, [StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION_EXPRESSION]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION_EXPRESSION]); |
} |
void test_nonBoolCondition_conditional() { |
- Source source = addSource("f() { return 3 ? 2 : 1; }"); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.NON_BOOL_CONDITION]); |
- verify([source]); |
+ assertErrorsInCode("f() { return 3 ? 2 : 1; }", |
+ [StaticTypeWarningCode.NON_BOOL_CONDITION]); |
} |
void test_nonBoolCondition_do() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
f() { |
do {} while (3); |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.NON_BOOL_CONDITION]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.NON_BOOL_CONDITION]); |
} |
void test_nonBoolCondition_for() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
f() { |
for (;3;) {} |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.NON_BOOL_CONDITION]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.NON_BOOL_CONDITION]); |
} |
void test_nonBoolCondition_if() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
f() { |
if (3) return 2; else return 1; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.NON_BOOL_CONDITION]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.NON_BOOL_CONDITION]); |
} |
void test_nonBoolCondition_while() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
f() { |
while (3) {} |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.NON_BOOL_CONDITION]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.NON_BOOL_CONDITION]); |
} |
void test_nonBoolExpression_functionType() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
int makeAssertion() => 1; |
f() { |
assert(makeAssertion); |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.NON_BOOL_EXPRESSION]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.NON_BOOL_EXPRESSION]); |
} |
void test_nonBoolExpression_interfaceType() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
f() { |
assert(0); |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.NON_BOOL_EXPRESSION]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.NON_BOOL_EXPRESSION]); |
} |
void test_nonBoolNegationExpression() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
f() { |
!42; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.NON_BOOL_NEGATION_EXPRESSION]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.NON_BOOL_NEGATION_EXPRESSION]); |
} |
void test_nonBoolOperand_and_left() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
bool f(int left, bool right) { |
return left && right; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.NON_BOOL_OPERAND]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.NON_BOOL_OPERAND]); |
} |
void test_nonBoolOperand_and_right() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
bool f(bool left, String right) { |
return left && right; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.NON_BOOL_OPERAND]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.NON_BOOL_OPERAND]); |
} |
void test_nonBoolOperand_or_left() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
bool f(List<int> left, bool right) { |
return left || right; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.NON_BOOL_OPERAND]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.NON_BOOL_OPERAND]); |
} |
void test_nonBoolOperand_or_right() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
bool f(bool left, double right) { |
return left || right; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.NON_BOOL_OPERAND]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.NON_BOOL_OPERAND]); |
} |
void test_nonTypeAsTypeArgument_notAType() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
int A; |
class B<E> {} |
-f(B<A> b) {}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.NON_TYPE_AS_TYPE_ARGUMENT]); |
- verify([source]); |
+f(B<A> b) {}''', |
+ [StaticTypeWarningCode.NON_TYPE_AS_TYPE_ARGUMENT]); |
} |
void test_nonTypeAsTypeArgument_undefinedIdentifier() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class B<E> {} |
-f(B<A> b) {}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.NON_TYPE_AS_TYPE_ARGUMENT]); |
- verify([source]); |
+f(B<A> b) {}''', |
+ [StaticTypeWarningCode.NON_TYPE_AS_TYPE_ARGUMENT]); |
} |
void test_returnOfInvalidType_async_future_int_mismatches_future_null() { |
- Source source = addSource(''' |
+ assertErrorsInCode( |
+ ''' |
import 'dart:async'; |
Future<Null> f() async { |
return 5; |
} |
-'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]); |
- verify([source]); |
+''', |
+ [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]); |
} |
void test_returnOfInvalidType_async_future_int_mismatches_future_string() { |
- Source source = addSource(''' |
+ assertErrorsInCode( |
+ ''' |
import 'dart:async'; |
Future<String> f() async { |
return 5; |
} |
-'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]); |
- verify([source]); |
+''', |
+ [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]); |
} |
void test_returnOfInvalidType_async_future_int_mismatches_int() { |
- Source source = addSource(''' |
+ assertErrorsInCode( |
+ ''' |
int f() async { |
return 5; |
} |
-'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [ |
- StaticTypeWarningCode.RETURN_OF_INVALID_TYPE, |
- StaticTypeWarningCode.ILLEGAL_ASYNC_RETURN_TYPE |
- ]); |
- verify([source]); |
+''', |
+ [ |
+ StaticTypeWarningCode.RETURN_OF_INVALID_TYPE, |
+ StaticTypeWarningCode.ILLEGAL_ASYNC_RETURN_TYPE |
+ ]); |
} |
void test_returnOfInvalidType_expressionFunctionBody_function() { |
- Source source = addSource("int f() => '0';"); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]); |
- verify([source]); |
+ assertErrorsInCode( |
+ "int f() => '0';", [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]); |
} |
void test_returnOfInvalidType_expressionFunctionBody_getter() { |
- Source source = addSource("int get g => '0';"); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]); |
- verify([source]); |
+ assertErrorsInCode( |
+ "int get g => '0';", [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]); |
} |
void test_returnOfInvalidType_expressionFunctionBody_localFunction() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A { |
String m() { |
int f() => '0'; |
return '0'; |
} |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]); |
} |
void test_returnOfInvalidType_expressionFunctionBody_method() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A { |
int f() => '0'; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]); |
} |
void test_returnOfInvalidType_expressionFunctionBody_void() { |
- Source source = addSource("void f() => 42;"); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]); |
- verify([source]); |
+ assertErrorsInCode( |
+ "void f() => 42;", [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]); |
} |
void test_returnOfInvalidType_function() { |
- Source source = addSource("int f() { return '0'; }"); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]); |
- verify([source]); |
+ assertErrorsInCode("int f() { return '0'; }", |
+ [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]); |
} |
void test_returnOfInvalidType_getter() { |
- Source source = addSource("int get g { return '0'; }"); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]); |
- verify([source]); |
+ assertErrorsInCode("int get g { return '0'; }", |
+ [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]); |
} |
void test_returnOfInvalidType_localFunction() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A { |
String m() { |
int f() { return '0'; } |
return '0'; |
} |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]); |
} |
void test_returnOfInvalidType_method() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A { |
int f() { return '0'; } |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]); |
} |
// https://github.com/dart-lang/sdk/issues/24713 |
void test_returnOfInvalidType_not_issued_for_valid_generic_return() { |
- Source source = addSource(r''' |
+ assertNoErrorsInCode(r''' |
abstract class F<T, U> { |
U get value; |
} |
@@ -958,321 +872,296 @@ abstract class H<S> { |
} |
void main() { }'''); |
- computeLibrarySourceErrors(source); |
- assertNoErrors(source); |
- verify([source]); |
} |
void test_returnOfInvalidType_void() { |
- Source source = addSource("void f() { return 42; }"); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]); |
- verify([source]); |
+ assertErrorsInCode("void f() { return 42; }", |
+ [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]); |
} |
void test_typeArgumentNotMatchingBounds_classTypeAlias() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A {} |
class B {} |
class C {} |
class G<E extends A> {} |
-class D = G<B> with C;'''); |
- computeLibrarySourceErrors(source); |
- assertErrors( |
- source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]); |
- verify([source]); |
+class D = G<B> with C; |
+''', |
+ [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]); |
} |
void test_typeArgumentNotMatchingBounds_extends() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A {} |
class B {} |
class G<E extends A> {} |
-class C extends G<B>{}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors( |
- source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]); |
- verify([source]); |
+class C extends G<B>{} |
+''', |
+ [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]); |
} |
void test_typeArgumentNotMatchingBounds_extends_regressionInIssue18468Fix() { |
// https://code.google.com/p/dart/issues/detail?id=18628 |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class X<T extends Type> {} |
-class Y<U> extends X<U> {}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors( |
- source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]); |
- verify([source]); |
+class Y<U> extends X<U> {} |
+''', |
+ [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]); |
} |
void test_typeArgumentNotMatchingBounds_fieldFormalParameter() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A {} |
class B {} |
class G<E extends A> {} |
class C { |
var f; |
C(G<B> this.f) {} |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors( |
- source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]); |
} |
void test_typeArgumentNotMatchingBounds_functionReturnType() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A {} |
class B {} |
class G<E extends A> {} |
-G<B> f() { return null; }'''); |
- computeLibrarySourceErrors(source); |
- assertErrors( |
- source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]); |
- verify([source]); |
+G<B> f() { return null; } |
+''', |
+ [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]); |
} |
void test_typeArgumentNotMatchingBounds_functionTypeAlias() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A {} |
class B {} |
class G<E extends A> {} |
-typedef G<B> f();'''); |
- computeLibrarySourceErrors(source); |
- assertErrors( |
- source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]); |
- verify([source]); |
+typedef G<B> f(); |
+''', |
+ [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]); |
} |
void test_typeArgumentNotMatchingBounds_functionTypedFormalParameter() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A {} |
class B {} |
class G<E extends A> {} |
-f(G<B> h()) {}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors( |
- source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]); |
- verify([source]); |
+f(G<B> h()) {} |
+''', |
+ [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]); |
} |
void test_typeArgumentNotMatchingBounds_implements() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A {} |
class B {} |
class G<E extends A> {} |
-class C implements G<B>{}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors( |
- source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]); |
- verify([source]); |
+class C implements G<B>{} |
+''', |
+ [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]); |
} |
void test_typeArgumentNotMatchingBounds_is() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A {} |
class B {} |
class G<E extends A> {} |
-var b = 1 is G<B>;'''); |
- computeLibrarySourceErrors(source); |
- assertErrors( |
- source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]); |
- verify([source]); |
+var b = 1 is G<B>; |
+''', |
+ [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]); |
} |
void test_typeArgumentNotMatchingBounds_methodReturnType() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A {} |
class B {} |
class G<E extends A> {} |
class C { |
G<B> m() { return null; } |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors( |
- source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]); |
} |
void test_typeArgumentNotMatchingBounds_new() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A {} |
class B {} |
class G<E extends A> {} |
-f() { return new G<B>(); }'''); |
- computeLibrarySourceErrors(source); |
- assertErrors( |
- source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]); |
- verify([source]); |
+f() { return new G<B>(); } |
+''', |
+ [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]); |
} |
void test_typeArgumentNotMatchingBounds_new_superTypeOfUpperBound() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A {} |
class B extends A {} |
class C extends B {} |
class G<E extends B> {} |
-f() { return new G<A>(); }'''); |
- computeLibrarySourceErrors(source); |
- assertErrors( |
- source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]); |
- verify([source]); |
+f() { return new G<A>(); } |
+''', |
+ [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]); |
} |
void test_typeArgumentNotMatchingBounds_parameter() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A {} |
class B {} |
class G<E extends A> {} |
-f(G<B> g) {}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors( |
- source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]); |
- verify([source]); |
+f(G<B> g) {} |
+''', |
+ [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]); |
} |
void test_typeArgumentNotMatchingBounds_redirectingConstructor() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A {} |
class B {} |
class X<T extends A> { |
X(int x, int y) {} |
factory X.name(int x, int y) = X<B>; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [ |
- StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS, |
- StaticWarningCode.REDIRECT_TO_INVALID_RETURN_TYPE |
- ]); |
- verify([source]); |
+}''', |
+ [ |
+ StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS, |
+ StaticWarningCode.REDIRECT_TO_INVALID_RETURN_TYPE |
+ ]); |
} |
void test_typeArgumentNotMatchingBounds_typeArgumentList() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A {} |
class B {} |
class C<E> {} |
class D<E extends A> {} |
-C<D<B>> Var;'''); |
- computeLibrarySourceErrors(source); |
- assertErrors( |
- source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]); |
- verify([source]); |
+C<D<B>> Var; |
+''', |
+ [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]); |
} |
void test_typeArgumentNotMatchingBounds_typeParameter() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A {} |
class B {} |
class C {} |
class G<E extends A> {} |
-class D<F extends G<B>> {}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors( |
- source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]); |
- verify([source]); |
+class D<F extends G<B>> {} |
+''', |
+ [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]); |
} |
void test_typeArgumentNotMatchingBounds_variableDeclaration() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A {} |
class B {} |
class G<E extends A> {} |
-G<B> g;'''); |
- computeLibrarySourceErrors(source); |
- assertErrors( |
- source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]); |
- verify([source]); |
+G<B> g; |
+''', |
+ [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]); |
} |
void test_typeArgumentNotMatchingBounds_with() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A {} |
class B {} |
class G<E extends A> {} |
-class C extends Object with G<B>{}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors( |
- source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]); |
- verify([source]); |
+class C extends Object with G<B>{} |
+''', |
+ [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]); |
} |
void test_typeParameterSupertypeOfItsBound() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A<T extends T> { |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors( |
- source, [StaticTypeWarningCode.TYPE_PARAMETER_SUPERTYPE_OF_ITS_BOUND]); |
- verify([source]); |
+} |
+''', |
+ [StaticTypeWarningCode.TYPE_PARAMETER_SUPERTYPE_OF_ITS_BOUND]); |
} |
void |
test_typePromotion_booleanAnd_useInRight_accessedInClosureRight_mutated() { |
- Source source = addSource(r''' |
+ assertErrorsInUnverifiedCode( |
+ r''' |
callMe(f()) { f(); } |
main(Object p) { |
(p is String) && callMe(() { p.length; }); |
p = 0; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_GETTER]); |
} |
void test_typePromotion_booleanAnd_useInRight_mutatedInLeft() { |
- Source source = addSource(r''' |
+ assertErrorsInUnverifiedCode( |
+ r''' |
main(Object p) { |
((p is String) && ((p = 42) == 42)) && p.length != 0; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_GETTER]); |
} |
void test_typePromotion_booleanAnd_useInRight_mutatedInRight() { |
- Source source = addSource(r''' |
+ assertErrorsInUnverifiedCode( |
+ r''' |
main(Object p) { |
(p is String) && (((p = 42) == 42) && p.length != 0); |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_GETTER]); |
} |
void |
test_typePromotion_conditional_useInThen_accessedInClosure_hasAssignment_after() { |
- Source source = addSource(r''' |
+ assertErrorsInUnverifiedCode( |
+ r''' |
callMe(f()) { f(); } |
main(Object p) { |
p is String ? callMe(() { p.length; }) : 0; |
p = 42; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_GETTER]); |
} |
void |
test_typePromotion_conditional_useInThen_accessedInClosure_hasAssignment_before() { |
- Source source = addSource(r''' |
+ assertErrorsInUnverifiedCode( |
+ r''' |
callMe(f()) { f(); } |
main(Object p) { |
p = 42; |
p is String ? callMe(() { p.length; }) : 0; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_GETTER]); |
} |
void test_typePromotion_conditional_useInThen_hasAssignment() { |
- Source source = addSource(r''' |
+ assertErrorsInUnverifiedCode( |
+ r''' |
main(Object p) { |
p is String ? (p.length + (p = 42)) : 0; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_GETTER]); |
} |
void test_typePromotion_if_accessedInClosure_hasAssignment() { |
- Source source = addSource(r''' |
+ assertErrorsInUnverifiedCode( |
+ r''' |
callMe(f()) { f(); } |
main(Object p) { |
if (p is String) { |
@@ -1281,24 +1170,24 @@ main(Object p) { |
}); |
} |
p = 0; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_GETTER]); |
} |
void test_typePromotion_if_and_right_hasAssignment() { |
- Source source = addSource(r''' |
+ assertErrorsInUnverifiedCode( |
+ r''' |
main(Object p) { |
if (p is String && (p = null) == null) { |
p.length; |
} |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_GETTER]); |
} |
void test_typePromotion_if_extends_notMoreSpecific_dynamic() { |
- Source source = addSource(r''' |
+ assertErrorsInUnverifiedCode( |
+ r''' |
class V {} |
class A<T> {} |
class B<S> extends A<S> { |
@@ -1309,13 +1198,13 @@ main(A<V> p) { |
if (p is B) { |
p.b; |
} |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_GETTER]); |
} |
void test_typePromotion_if_extends_notMoreSpecific_notMoreSpecificTypeArg() { |
- Source source = addSource(r''' |
+ assertErrorsInUnverifiedCode( |
+ r''' |
class V {} |
class A<T> {} |
class B<S> extends A<S> { |
@@ -1326,85 +1215,85 @@ main(A<V> p) { |
if (p is B<int>) { |
p.b; |
} |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_GETTER]); |
} |
void test_typePromotion_if_hasAssignment_after() { |
- Source source = addSource(r''' |
+ assertErrorsInUnverifiedCode( |
+ r''' |
main(Object p) { |
if (p is String) { |
p.length; |
p = 0; |
} |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_GETTER]); |
} |
void test_typePromotion_if_hasAssignment_before() { |
- Source source = addSource(r''' |
+ assertErrorsInUnverifiedCode( |
+ r''' |
main(Object p) { |
if (p is String) { |
p = 0; |
p.length; |
} |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_GETTER]); |
} |
void test_typePromotion_if_hasAssignment_inClosure_anonymous_after() { |
- Source source = addSource(r''' |
+ assertErrorsInUnverifiedCode( |
+ r''' |
main(Object p) { |
if (p is String) { |
p.length; |
} |
() {p = 0;}; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_GETTER]); |
} |
void test_typePromotion_if_hasAssignment_inClosure_anonymous_before() { |
- Source source = addSource(r''' |
+ assertErrorsInUnverifiedCode( |
+ r''' |
main(Object p) { |
() {p = 0;}; |
if (p is String) { |
p.length; |
} |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_GETTER]); |
} |
void test_typePromotion_if_hasAssignment_inClosure_function_after() { |
- Source source = addSource(r''' |
+ assertErrorsInUnverifiedCode( |
+ r''' |
main(Object p) { |
if (p is String) { |
p.length; |
} |
f() {p = 0;}; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_GETTER]); |
} |
void test_typePromotion_if_hasAssignment_inClosure_function_before() { |
- Source source = addSource(r''' |
+ assertErrorsInUnverifiedCode( |
+ r''' |
main(Object p) { |
f() {p = 0;}; |
if (p is String) { |
p.length; |
} |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_GETTER]); |
} |
void test_typePromotion_if_implements_notMoreSpecific_dynamic() { |
- Source source = addSource(r''' |
+ assertErrorsInUnverifiedCode( |
+ r''' |
class V {} |
class A<T> {} |
class B<S> implements A<S> { |
@@ -1415,13 +1304,13 @@ main(A<V> p) { |
if (p is B) { |
p.b; |
} |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_GETTER]); |
} |
void test_typePromotion_if_with_notMoreSpecific_dynamic() { |
- Source source = addSource(r''' |
+ assertErrorsInUnverifiedCode( |
+ r''' |
class V {} |
class A<T> {} |
class B<S> extends Object with A<S> { |
@@ -1432,30 +1321,29 @@ main(A<V> p) { |
if (p is B) { |
p.b; |
} |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_GETTER]); |
} |
void test_undefinedFunction() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
void f() { |
g(); |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_FUNCTION]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_FUNCTION]); |
} |
void test_undefinedFunction_inCatch() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
void f() { |
try { |
} on Object { |
g(); |
} |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_FUNCTION]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_FUNCTION]); |
} |
void test_undefinedFunction_inImportedLib() { |
@@ -1472,11 +1360,11 @@ h() {}'''); |
} |
void test_undefinedGetter() { |
- Source source = addSource(r''' |
+ assertErrorsInUnverifiedCode( |
+ r''' |
class T {} |
-f(T e) { return e.m; }'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); |
+f(T e) { return e.m; }''', |
+ [StaticTypeWarningCode.UNDEFINED_GETTER]); |
} |
void test_undefinedGetter_generic_function_call() { |
@@ -1486,30 +1374,31 @@ f(T e) { return e.m; }'''); |
AnalysisOptionsImpl options = new AnalysisOptionsImpl(); |
options.enableStrictCallChecks = true; |
resetWithOptions(options); |
- Source source = addSource(''' |
+ assertErrorsInUnverifiedCode( |
+ ''' |
f(Function f) { |
return f.call; |
} |
-'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); |
+''', |
+ [StaticTypeWarningCode.UNDEFINED_GETTER]); |
} |
void test_undefinedGetter_object_call() { |
AnalysisOptionsImpl options = new AnalysisOptionsImpl(); |
options.enableStrictCallChecks = true; |
resetWithOptions(options); |
- Source source = addSource(''' |
+ assertErrorsInUnverifiedCode( |
+ ''' |
f(Object o) { |
return o.call; |
} |
-'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); |
+''', |
+ [StaticTypeWarningCode.UNDEFINED_GETTER]); |
} |
void test_undefinedGetter_proxy_annotation_fakeProxy() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
library L; |
class Fake { |
const Fake(); |
@@ -1518,115 +1407,109 @@ const proxy = const Fake(); |
@proxy class PrefixProxy {} |
main() { |
new PrefixProxy().foo; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_GETTER]); |
} |
void test_undefinedGetter_static() { |
- Source source = addSource(r''' |
+ assertErrorsInUnverifiedCode( |
+ r''' |
class A {} |
-var a = A.B;'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); |
+var a = A.B;''', |
+ [StaticTypeWarningCode.UNDEFINED_GETTER]); |
} |
void test_undefinedGetter_typeLiteral_cascadeTarget() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class T { |
static int get foo => 42; |
} |
main() { |
T..foo; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_GETTER]); |
} |
void test_undefinedGetter_typeLiteral_conditionalAccess() { |
// When applied to a type literal, the conditional access operator '?.' |
// cannot be used to access instance getters of Type. |
- Source source = addSource(''' |
+ assertErrorsInCode( |
+ ''' |
class A {} |
f() => A?.hashCode; |
-'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); |
+''', |
+ [StaticTypeWarningCode.UNDEFINED_GETTER]); |
} |
void test_undefinedGetter_void() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class T { |
void m() {} |
} |
-f(T e) { return e.m().f; }'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); |
+f(T e) { return e.m().f; }''', |
+ [StaticTypeWarningCode.UNDEFINED_GETTER]); |
} |
void test_undefinedGetter_wrongNumberOfTypeArguments_tooLittle() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A<K, V> { |
K element; |
} |
main(A<int> a) { |
a.element.anyGetterExistsInDynamic; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors( |
- source, [StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS]); |
} |
void test_undefinedGetter_wrongNumberOfTypeArguments_tooMany() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A<E> { |
E element; |
} |
main(A<int,int> a) { |
a.element.anyGetterExistsInDynamic; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors( |
- source, [StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS]); |
} |
void test_undefinedGetter_wrongOfTypeArgument() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A<E> { |
E element; |
} |
main(A<NoSuchType> a) { |
a.element.anyGetterExistsInDynamic; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.NON_TYPE_AS_TYPE_ARGUMENT]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.NON_TYPE_AS_TYPE_ARGUMENT]); |
} |
void test_undefinedMethod() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A { |
void m() { |
n(); |
} |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_METHOD]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_METHOD]); |
} |
void test_undefinedMethod_assignmentExpression() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A {} |
class B { |
f(A a) { |
A a2 = new A(); |
a += a2; |
} |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_METHOD]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_METHOD]); |
} |
void test_undefinedMethod_generic_function_call() { |
@@ -1636,17 +1519,18 @@ class B { |
AnalysisOptionsImpl options = new AnalysisOptionsImpl(); |
options.enableStrictCallChecks = true; |
resetWithOptions(options); |
- Source source = addSource(''' |
+ assertErrorsInCode( |
+ ''' |
f(Function f) { |
f.call(); |
} |
-'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_METHOD]); |
+''', |
+ [StaticTypeWarningCode.UNDEFINED_METHOD]); |
} |
void test_undefinedMethod_ignoreTypePropagation() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A {} |
class B extends A { |
m() {} |
@@ -1656,28 +1540,26 @@ class C { |
A a = new B(); |
a.m(); |
} |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_METHOD]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_METHOD]); |
} |
void test_undefinedMethod_leastUpperBoundWithNull() { |
- Source source = addSource('f(bool b, int i) => (b ? null : i).foo();'); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_METHOD]); |
+ assertErrorsInCode('f(bool b, int i) => (b ? null : i).foo();', |
+ [StaticTypeWarningCode.UNDEFINED_METHOD]); |
} |
void test_undefinedMethod_object_call() { |
AnalysisOptionsImpl options = new AnalysisOptionsImpl(); |
options.enableStrictCallChecks = true; |
resetWithOptions(options); |
- Source source = addSource(''' |
+ assertErrorsInCode( |
+ ''' |
f(Object o) { |
o.call(); |
} |
-'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_METHOD]); |
+''', |
+ [StaticTypeWarningCode.UNDEFINED_METHOD]); |
} |
void test_undefinedMethod_private() { |
@@ -1688,19 +1570,20 @@ library lib; |
class A { |
_foo() {} |
}'''); |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
import 'lib.dart'; |
class B extends A { |
test() { |
_foo(); |
} |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_METHOD]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_METHOD]); |
} |
void test_undefinedMethod_proxy_annotation_fakeProxy() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
library L; |
class Fake { |
const Fake(); |
@@ -1709,230 +1592,229 @@ const proxy = const Fake(); |
@proxy class PrefixProxy {} |
main() { |
new PrefixProxy().foo(); |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_METHOD]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_METHOD]); |
} |
void test_undefinedMethod_typeLiteral_cascadeTarget() { |
- Source source = addSource(''' |
+ assertErrorsInCode( |
+ ''' |
class T { |
static void foo() {} |
} |
main() { |
T..foo(); |
} |
-'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_METHOD]); |
+''', |
+ [StaticTypeWarningCode.UNDEFINED_METHOD]); |
} |
void test_undefinedMethod_typeLiteral_conditionalAccess() { |
// When applied to a type literal, the conditional access operator '?.' |
// cannot be used to access instance methods of Type. |
- Source source = addSource(''' |
+ assertErrorsInCode( |
+ ''' |
class A {} |
f() => A?.toString(); |
-'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_METHOD]); |
+''', |
+ [StaticTypeWarningCode.UNDEFINED_METHOD]); |
} |
void test_undefinedMethodWithConstructor() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class C { |
C.m(); |
} |
f() { |
C c = C.m(); |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors( |
- source, [StaticTypeWarningCode.UNDEFINED_METHOD_WITH_CONSTRUCTOR]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_METHOD_WITH_CONSTRUCTOR]); |
} |
void test_undefinedOperator_indexBoth() { |
- Source source = addSource(r''' |
+ assertErrorsInUnverifiedCode( |
+ r''' |
class A {} |
f(A a) { |
a[0]++; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_OPERATOR]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_OPERATOR]); |
} |
void test_undefinedOperator_indexGetter() { |
- Source source = addSource(r''' |
+ assertErrorsInUnverifiedCode( |
+ r''' |
class A {} |
f(A a) { |
a[0]; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_OPERATOR]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_OPERATOR]); |
} |
void test_undefinedOperator_indexSetter() { |
- Source source = addSource(r''' |
+ assertErrorsInUnverifiedCode( |
+ r''' |
class A {} |
f(A a) { |
a[0] = 1; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_OPERATOR]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_OPERATOR]); |
} |
void test_undefinedOperator_plus() { |
- Source source = addSource(r''' |
+ assertErrorsInUnverifiedCode( |
+ r''' |
class A {} |
f(A a) { |
a + 1; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_OPERATOR]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_OPERATOR]); |
} |
void test_undefinedOperator_postfixExpression() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A {} |
f(A a) { |
a++; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_OPERATOR]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_OPERATOR]); |
} |
void test_undefinedOperator_prefixExpression() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A {} |
f(A a) { |
++a; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_OPERATOR]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_OPERATOR]); |
} |
void test_undefinedSetter() { |
- Source source = addSource(r''' |
+ assertErrorsInUnverifiedCode( |
+ r''' |
class T {} |
-f(T e1) { e1.m = 0; }'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_SETTER]); |
+f(T e1) { e1.m = 0; }''', |
+ [StaticTypeWarningCode.UNDEFINED_SETTER]); |
} |
void test_undefinedSetter_static() { |
- Source source = addSource(r''' |
+ assertErrorsInUnverifiedCode( |
+ r''' |
class A {} |
-f() { A.B = 0;}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_SETTER]); |
+f() { A.B = 0;}''', |
+ [StaticTypeWarningCode.UNDEFINED_SETTER]); |
} |
void test_undefinedSetter_typeLiteral_cascadeTarget() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class T { |
static void set foo(_) {} |
} |
main() { |
T..foo = 42; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_SETTER]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_SETTER]); |
} |
void test_undefinedSetter_void() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class T { |
void m() {} |
} |
-f(T e) { e.m().f = 0; }'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_SETTER]); |
+f(T e) { e.m().f = 0; }''', |
+ [StaticTypeWarningCode.UNDEFINED_SETTER]); |
} |
void test_undefinedSuperGetter() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A {} |
class B extends A { |
get g { |
return super.g; |
} |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_SUPER_GETTER]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_SUPER_GETTER]); |
} |
void test_undefinedSuperMethod() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A {} |
class B extends A { |
m() { return super.m(); } |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_SUPER_METHOD]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_SUPER_METHOD]); |
} |
void test_undefinedSuperOperator_binaryExpression() { |
- Source source = addSource(r''' |
+ assertErrorsInUnverifiedCode( |
+ r''' |
class A {} |
class B extends A { |
operator +(value) { |
return super + value; |
} |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_SUPER_OPERATOR]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_SUPER_OPERATOR]); |
} |
void test_undefinedSuperOperator_indexBoth() { |
- Source source = addSource(r''' |
+ assertErrorsInUnverifiedCode( |
+ r''' |
class A {} |
class B extends A { |
operator [](index) { |
return super[index]++; |
} |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_SUPER_OPERATOR]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_SUPER_OPERATOR]); |
} |
void test_undefinedSuperOperator_indexGetter() { |
- Source source = addSource(r''' |
+ assertErrorsInUnverifiedCode( |
+ r''' |
class A {} |
class B extends A { |
operator [](index) { |
return super[index + 1]; |
} |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_SUPER_OPERATOR]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_SUPER_OPERATOR]); |
} |
void test_undefinedSuperOperator_indexSetter() { |
- Source source = addSource(r''' |
+ assertErrorsInUnverifiedCode( |
+ r''' |
class A {} |
class B extends A { |
operator []=(index, value) { |
return super[index] = 0; |
} |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_SUPER_OPERATOR]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_SUPER_OPERATOR]); |
} |
void test_undefinedSuperSetter() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A {} |
class B extends A { |
f() { |
super.m = 0; |
} |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.UNDEFINED_SUPER_SETTER]); |
+}''', |
+ [StaticTypeWarningCode.UNDEFINED_SUPER_SETTER]); |
} |
void test_unqualifiedReferenceToNonLocalStaticMember_getter() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A { |
static int get a => 0; |
} |
@@ -1940,16 +1822,15 @@ class B extends A { |
int b() { |
return a; |
} |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [ |
- StaticTypeWarningCode.UNQUALIFIED_REFERENCE_TO_NON_LOCAL_STATIC_MEMBER |
- ]); |
- verify([source]); |
+}''', |
+ [ |
+ StaticTypeWarningCode.UNQUALIFIED_REFERENCE_TO_NON_LOCAL_STATIC_MEMBER |
+ ]); |
} |
void test_unqualifiedReferenceToNonLocalStaticMember_method() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A { |
static void a() {} |
} |
@@ -1957,16 +1838,15 @@ class B extends A { |
void b() { |
a(); |
} |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [ |
- StaticTypeWarningCode.UNQUALIFIED_REFERENCE_TO_NON_LOCAL_STATIC_MEMBER |
- ]); |
- verify([source]); |
+}''', |
+ [ |
+ StaticTypeWarningCode.UNQUALIFIED_REFERENCE_TO_NON_LOCAL_STATIC_MEMBER |
+ ]); |
} |
void test_unqualifiedReferenceToNonLocalStaticMember_setter() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A { |
static set a(x) {} |
} |
@@ -1974,94 +1854,88 @@ class B extends A { |
b(y) { |
a = y; |
} |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [ |
- StaticTypeWarningCode.UNQUALIFIED_REFERENCE_TO_NON_LOCAL_STATIC_MEMBER |
- ]); |
- verify([source]); |
+}''', |
+ [ |
+ StaticTypeWarningCode.UNQUALIFIED_REFERENCE_TO_NON_LOCAL_STATIC_MEMBER |
+ ]); |
} |
void test_wrongNumberOfTypeArguments_classAlias() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A {} |
class M {} |
-class B<F extends num> = A<F> with M;'''); |
- computeLibrarySourceErrors(source); |
- assertErrors( |
- source, [StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS]); |
- verify([source]); |
+class B<F extends num> = A<F> with M;''', |
+ [StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS]); |
} |
void test_wrongNumberOfTypeArguments_tooFew() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A<E, F> {} |
-A<A> a = null;'''); |
- computeLibrarySourceErrors(source); |
- assertErrors( |
- source, [StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS]); |
- verify([source]); |
+A<A> a = null;''', |
+ [StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS]); |
} |
void test_wrongNumberOfTypeArguments_tooMany() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A<E> {} |
-A<A, A> a = null;'''); |
- computeLibrarySourceErrors(source); |
- assertErrors( |
- source, [StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS]); |
- verify([source]); |
+A<A, A> a = null;''', |
+ [StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS]); |
} |
void test_wrongNumberOfTypeArguments_typeTest_tooFew() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A {} |
class C<K, V> {} |
f(p) { |
return p is C<A>; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors( |
- source, [StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS]); |
} |
void test_wrongNumberOfTypeArguments_typeTest_tooMany() { |
- Source source = addSource(r''' |
+ assertErrorsInCode( |
+ r''' |
class A {} |
class C<E> {} |
f(p) { |
return p is C<A, A>; |
-}'''); |
- computeLibrarySourceErrors(source); |
- assertErrors( |
- source, [StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS]); |
- verify([source]); |
+}''', |
+ [StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS]); |
} |
void test_forIn_notIterable() { |
- assertErrorsInCode(''' |
+ assertErrorsInCode( |
+ ''' |
f() { |
for (var i in true) {} |
} |
-''', [StaticTypeWarningCode.FOR_IN_OF_INVALID_TYPE]); |
+''', |
+ [StaticTypeWarningCode.FOR_IN_OF_INVALID_TYPE]); |
} |
void test_forIn_declaredVariableWrongType() { |
- assertErrorsInCode(''' |
+ assertErrorsInCode( |
+ ''' |
f() { |
for (int i in <String>[]) {} |
} |
-''', [StaticTypeWarningCode.FOR_IN_OF_INVALID_ELEMENT_TYPE]); |
+''', |
+ [StaticTypeWarningCode.FOR_IN_OF_INVALID_ELEMENT_TYPE]); |
} |
void test_forIn_existingVariableWrongType() { |
- assertErrorsInCode(''' |
+ assertErrorsInCode( |
+ ''' |
f() { |
int i; |
for (i in <String>[]) {} |
} |
-''', [StaticTypeWarningCode.FOR_IN_OF_INVALID_ELEMENT_TYPE]); |
+''', |
+ [StaticTypeWarningCode.FOR_IN_OF_INVALID_ELEMENT_TYPE]); |
} |
void test_forIn_declaredVariableRightType() { |
@@ -2123,13 +1997,15 @@ f() { |
} |
void test_forIn_typeBoundBad() { |
- assertErrorsInCode(''' |
+ assertErrorsInCode( |
+ ''' |
class Foo<T extends Iterable<int>> { |
void method(T iterable) { |
for (String i in iterable) {} |
} |
} |
-''', [StaticTypeWarningCode.FOR_IN_OF_INVALID_ELEMENT_TYPE]); |
+''', |
+ [StaticTypeWarningCode.FOR_IN_OF_INVALID_ELEMENT_TYPE]); |
} |
void test_forIn_typeBoundGood() { |
@@ -2143,32 +2019,38 @@ class Foo<T extends Iterable<int>> { |
} |
void test_awaitForIn_notStream() { |
- assertErrorsInCode(''' |
+ assertErrorsInCode( |
+ ''' |
f() async { |
await for (var i in true) {} |
} |
-''', [StaticTypeWarningCode.FOR_IN_OF_INVALID_TYPE]); |
+''', |
+ [StaticTypeWarningCode.FOR_IN_OF_INVALID_TYPE]); |
} |
void test_awaitForIn_declaredVariableWrongType() { |
- assertErrorsInCode(''' |
+ assertErrorsInCode( |
+ ''' |
import 'dart:async'; |
f() async { |
Stream<String> stream; |
await for (int i in stream) {} |
} |
-''', [StaticTypeWarningCode.FOR_IN_OF_INVALID_ELEMENT_TYPE]); |
+''', |
+ [StaticTypeWarningCode.FOR_IN_OF_INVALID_ELEMENT_TYPE]); |
} |
void test_awaitForIn_existingVariableWrongType() { |
- assertErrorsInCode(''' |
+ assertErrorsInCode( |
+ ''' |
import 'dart:async'; |
f() async { |
Stream<String> stream; |
int i; |
await for (i in stream) {} |
} |
-''', [StaticTypeWarningCode.FOR_IN_OF_INVALID_ELEMENT_TYPE]); |
+''', |
+ [StaticTypeWarningCode.FOR_IN_OF_INVALID_ELEMENT_TYPE]); |
} |
void test_awaitForIn_declaredVariableRightType() { |
@@ -2242,130 +2124,120 @@ f() async { |
} |
void test_yield_async_to_basic_type() { |
- Source source = addSource(''' |
+ assertErrorsInCode( |
+ ''' |
int f() async* { |
yield 3; |
} |
-'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [ |
- StaticTypeWarningCode.YIELD_OF_INVALID_TYPE, |
- StaticTypeWarningCode.ILLEGAL_ASYNC_GENERATOR_RETURN_TYPE |
- ]); |
- verify([source]); |
+''', |
+ [ |
+ StaticTypeWarningCode.YIELD_OF_INVALID_TYPE, |
+ StaticTypeWarningCode.ILLEGAL_ASYNC_GENERATOR_RETURN_TYPE |
+ ]); |
} |
void test_yield_async_to_iterable() { |
- Source source = addSource(''' |
+ assertErrorsInCode( |
+ ''' |
Iterable<int> f() async* { |
yield 3; |
} |
-'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [ |
- StaticTypeWarningCode.YIELD_OF_INVALID_TYPE, |
- StaticTypeWarningCode.ILLEGAL_ASYNC_GENERATOR_RETURN_TYPE |
- ]); |
- verify([source]); |
+''', |
+ [ |
+ StaticTypeWarningCode.YIELD_OF_INVALID_TYPE, |
+ StaticTypeWarningCode.ILLEGAL_ASYNC_GENERATOR_RETURN_TYPE |
+ ]); |
} |
void test_yield_async_to_mistyped_stream() { |
- Source source = addSource(''' |
+ assertErrorsInCode( |
+ ''' |
import 'dart:async'; |
Stream<int> f() async* { |
yield "foo"; |
} |
-'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.YIELD_OF_INVALID_TYPE]); |
- verify([source]); |
+''', |
+ [StaticTypeWarningCode.YIELD_OF_INVALID_TYPE]); |
} |
void test_yield_each_async_non_stream() { |
- Source source = addSource(''' |
+ assertErrorsInCode( |
+ ''' |
f() async* { |
yield* 0; |
} |
-'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.YIELD_OF_INVALID_TYPE]); |
- verify([source]); |
+''', |
+ [StaticTypeWarningCode.YIELD_OF_INVALID_TYPE]); |
} |
void test_yield_each_async_to_mistyped_stream() { |
- Source source = addSource(''' |
+ assertErrorsInCode( |
+ ''' |
import 'dart:async'; |
Stream<int> f() async* { |
yield* g(); |
} |
Stream<String> g() => null; |
-'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.YIELD_OF_INVALID_TYPE]); |
- verify([source]); |
+''', |
+ [StaticTypeWarningCode.YIELD_OF_INVALID_TYPE]); |
} |
void test_yield_each_sync_non_iterable() { |
- Source source = addSource(''' |
+ assertErrorsInCode( |
+ ''' |
f() sync* { |
yield* 0; |
} |
-'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.YIELD_OF_INVALID_TYPE]); |
- verify([source]); |
+''', |
+ [StaticTypeWarningCode.YIELD_OF_INVALID_TYPE]); |
} |
void test_yield_each_sync_to_mistyped_iterable() { |
- Source source = addSource(''' |
+ assertErrorsInCode( |
+ ''' |
Iterable<int> f() sync* { |
yield* g(); |
} |
Iterable<String> g() => null; |
-'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.YIELD_OF_INVALID_TYPE]); |
- verify([source]); |
+''', |
+ [StaticTypeWarningCode.YIELD_OF_INVALID_TYPE]); |
} |
void test_yield_sync_to_basic_type() { |
- Source source = addSource(''' |
+ assertErrorsInCode( |
+ ''' |
int f() sync* { |
yield 3; |
} |
-'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [ |
- StaticTypeWarningCode.YIELD_OF_INVALID_TYPE, |
- StaticTypeWarningCode.ILLEGAL_SYNC_GENERATOR_RETURN_TYPE |
- ]); |
- verify([source]); |
+''', |
+ [ |
+ StaticTypeWarningCode.YIELD_OF_INVALID_TYPE, |
+ StaticTypeWarningCode.ILLEGAL_SYNC_GENERATOR_RETURN_TYPE |
+ ]); |
} |
void test_yield_sync_to_mistyped_iterable() { |
- Source source = addSource(''' |
+ assertErrorsInCode( |
+ ''' |
Iterable<int> f() sync* { |
yield "foo"; |
} |
-'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [StaticTypeWarningCode.YIELD_OF_INVALID_TYPE]); |
- verify([source]); |
+''', |
+ [StaticTypeWarningCode.YIELD_OF_INVALID_TYPE]); |
} |
void test_yield_sync_to_stream() { |
- Source source = addSource(''' |
+ assertErrorsInCode( |
+ ''' |
import 'dart:async'; |
Stream<int> f() sync* { |
yield 3; |
} |
-'''); |
- computeLibrarySourceErrors(source); |
- assertErrors(source, [ |
- StaticTypeWarningCode.YIELD_OF_INVALID_TYPE, |
- StaticTypeWarningCode.ILLEGAL_SYNC_GENERATOR_RETURN_TYPE |
- ]); |
- verify([source]); |
+''', |
+ [ |
+ StaticTypeWarningCode.YIELD_OF_INVALID_TYPE, |
+ StaticTypeWarningCode.ILLEGAL_SYNC_GENERATOR_RETURN_TYPE |
+ ]); |
} |
} |