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 5b7e646e695881a91657e6eb0a0fd9ed9757bd20..69ae478a830252c2f8a2a9f49a55de07465d1674 100644 |
--- a/pkg/analyzer/test/src/task/strong/checker_test.dart |
+++ b/pkg/analyzer/test/src/task/strong/checker_test.dart |
@@ -2105,6 +2105,41 @@ class DerivedFuture4<A> extends Future<A> { |
'''); |
} |
+ void test_genericMethodSuper() { |
+ checkFile(r''' |
+class A<T> { |
+ A<S> create<S extends T>() => new A<S>(); |
+} |
+class B extends A { |
+ A<S> create<S>() => super.create<S>(); |
+} |
+class C extends A { |
+ A<S> create<S>() => super.create(); |
+} |
+class D extends A<num> { |
+ A<S> create<S extends num>() => super.create<S>(); |
+} |
+class E extends A<num> { |
+ A<S> create<S extends num>() => /*error:RETURN_OF_INVALID_TYPE*/super.create<int>(); |
+} |
+class F extends A<num> { |
+ create2<S>() => super.create</*error:TYPE_ARGUMENT_NOT_MATCHING_BOUNDS*/S>(); |
+} |
+ '''); |
+ } |
+ |
+ void test_genericMethodSuperSubstitute() { |
+ checkFile(r''' |
+class Clonable<T> {} |
+class G<T> { |
+ create<A extends Clonable<T>, B extends Iterable<A>>() => null; |
+} |
+class H extends G<num> { |
+ create2() => super.create<Clonable<int>, List<Clonable<int>>>(); |
+} |
+ '''); |
+ } |
+ |
void test_getterGetterOverride() { |
checkFile(''' |
class A {} |