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 b896776ccd5023768d25895f15fedc8de9020386..e468b02f8db0eb9d6bfd80c47c4d21b4b8242deb 100644 |
--- a/pkg/analyzer/test/src/task/strong/checker_test.dart |
+++ b/pkg/analyzer/test/src/task/strong/checker_test.dart |
@@ -102,11 +102,9 @@ void main() { |
B f = new B(); |
int x; |
double y; |
- // The analyzer has what I believe is a bug (dartbug.com/23252) which |
- // causes the return type of calls to f to be treated as dynamic. |
- x = /*info:DYNAMIC_CAST should be pass*/f(3); |
+ x = f(3); |
x = /*severe:STATIC_TYPE_ERROR*/f.col(3.0); |
- y = /*info:DYNAMIC_CAST should be severe:STATIC_TYPE_ERROR*/f(3); |
+ y = /*severe:STATIC_TYPE_ERROR*/f(3); |
y = f.col(3.0); |
f(/*severe:STATIC_TYPE_ERROR*/3.0); |
f.col(/*severe:STATIC_TYPE_ERROR*/3); |
@@ -1394,6 +1392,31 @@ void main() { |
''' |
}); |
+ |
+ testChecker('generic methods on different element kinds', { |
+ '/main.dart': ''' |
+class C<E> { |
+ /*=T*/ f/*<T>*/(/*=T*/ e) => null; |
+ static /*=T*/ g/*<T>*/(/*=T*/ e) => null; |
+ static final h = g; |
+} |
+ |
+/*=T*/ topF/*<T>*/(/*=T*/ e) => null; |
+ |
+var topG = C.g; |
+ |
+void test/*<S>*/(/*=T*/ pf/*<T>*/(/*=T*/ e)) { |
+ var c = new C<int>(); |
+ var methodCall = c.f/*<int>*/(3); |
+ var localG = C.g; |
+ int staticFieldCall = C.h/*<int>*/(3); |
+ int topFieldCall = topG/*<int>*/(3); |
+ int localVarCall = localG/*<int>*/(3); |
+ int paramCall = pf/*<int>*/(3); |
+} |
+ ''' |
+ }); |
+ |
testChecker('unary operators', { |
'/main.dart': ''' |
class A { |