Index: pkg/analyzer/test/src/task/strong/checker_test.dart |
diff --git a/pkg/analyzer/test/src/task/strong/checker_test.dart b/pkg/analyzer/test/src/task/strong/checker_test.dart |
index a35ef8cdcab7e80fa617df1d801fd570a5cc81fe..2819766276cd08b015b0f8dcb115ae12739202b8 100644 |
--- a/pkg/analyzer/test/src/task/strong/checker_test.dart |
+++ b/pkg/analyzer/test/src/task/strong/checker_test.dart |
@@ -640,8 +640,8 @@ class G_error extends E implements D { |
'''); |
} |
- test_dynamicInvocation() async { |
- await checkFile(''' |
+ test_dynamicInvocation() { |
+ return checkFile(r''' |
typedef dynamic A(dynamic x); |
class B { |
int call(int x) => x; |
@@ -664,13 +664,13 @@ void main() { |
int x; |
double y; |
x = /*info:DYNAMIC_CAST, info:DYNAMIC_INVOKE*/f(3); |
- x = /*info:DYNAMIC_CAST, info:DYNAMIC_INVOKE*/f.col(3.0); |
+ x = /*info:DYNAMIC_CAST, info:DYNAMIC_INVOKE*/f./*error:UNDEFINED_METHOD*/col(3.0); |
y = /*info:DYNAMIC_CAST, info:DYNAMIC_INVOKE*/f(3); |
- y = /*info:DYNAMIC_CAST, info:DYNAMIC_INVOKE*/f.col(3.0); |
+ y = /*info:DYNAMIC_CAST, info:DYNAMIC_INVOKE*/f./*error:UNDEFINED_METHOD*/col(3.0); |
/*info:DYNAMIC_INVOKE*/f(3.0); |
// Through type propagation, we know f is actually a B, hence the |
// hint. |
- /*info:DYNAMIC_INVOKE*/f.col(3); |
+ /*info:DYNAMIC_INVOKE*/f./*error:UNDEFINED_METHOD*/col(3); |
} |
{ |
A f = new B(); |
@@ -687,8 +687,8 @@ void main() { |
/*info:DYNAMIC_INVOKE*/g.foo(42.0); |
/*info:DYNAMIC_INVOKE*/g.x; |
A f = new B(); |
- /*info:DYNAMIC_INVOKE*/f.col(42.0); |
- /*info:DYNAMIC_INVOKE*/f.foo(42.0); |
+ /*info:DYNAMIC_INVOKE*/f./*error:UNDEFINED_METHOD*/col(42.0); |
+ /*info:DYNAMIC_INVOKE*/f./*error:UNDEFINED_METHOD*/foo(42.0); |
/*info:DYNAMIC_INVOKE*/f./*error:UNDEFINED_GETTER*/x; |
} |
} |
@@ -3376,8 +3376,8 @@ class Child extends helper.Base { |
'''); |
} |
- test_proxy() async { |
- await checkFile(r''' |
+ test_proxy() { |
+ return checkFile(r''' |
@proxy class C {} |
@proxy class D { |
var f; |
@@ -3401,15 +3401,15 @@ m() { |
d(); |
C c = new C(); |
- /*info:DYNAMIC_INVOKE*/c.m(); |
- /*info:DYNAMIC_INVOKE*/c.m; |
- /*info:DYNAMIC_INVOKE*/-c; |
- /*info:DYNAMIC_INVOKE*/c + 7; |
- /*info:DYNAMIC_INVOKE*/c[7]; |
+ /*info:DYNAMIC_INVOKE*/c./*error:UNDEFINED_METHOD*/m(); |
+ /*info:DYNAMIC_INVOKE*/c./*error:UNDEFINED_GETTER*/m; |
+ /*info:DYNAMIC_INVOKE,error:UNDEFINED_OPERATOR*/-c; |
+ /*info:DYNAMIC_INVOKE*/c /*error:UNDEFINED_OPERATOR*/+ 7; |
+ /*info:DYNAMIC_INVOKE*/c /*error:UNDEFINED_OPERATOR*/[7]; |
/*error:INVOCATION_OF_NON_FUNCTION,info:DYNAMIC_INVOKE*/c(); |
F f = new F(); |
- /*info:DYNAMIC_INVOKE*/f(); |
+ /*error:INVOCATION_OF_NON_FUNCTION,info:DYNAMIC_INVOKE*/f(); |
} |
'''); |
} |
@@ -3895,7 +3895,7 @@ void f/*<T>*/(/*=T*/ object) { |
} |
void g/*<T extends num>*/(/*=T*/ object) { |
if (object is int) print(object.isEven); |
- if (object is String) print(/*info:DYNAMIC_INVOKE*/object.substring(1)); |
+ if (object is String) print(/*info:DYNAMIC_INVOKE*/object./*error:UNDEFINED_METHOD*/substring(1)); |
} |
class Clonable<T> {} |
class SubClonable<T> extends Clonable<T> { |