Index: pkg/kernel/testcases/input/covariant_generic.dart |
diff --git a/pkg/kernel/testcases/input/covariant_generic.dart b/pkg/kernel/testcases/input/covariant_generic.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a0234a681ce5d20e6a1c99f836c35cb12cce921a |
--- /dev/null |
+++ b/pkg/kernel/testcases/input/covariant_generic.dart |
@@ -0,0 +1,45 @@ |
+// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
+// for details. All rights reserved. Use of this source code is governed by a |
+// BSD-style license that can be found in the LICENSE file. |
+typedef void Callback<T>(T x); |
+ |
+class Foo<T> { |
+ final T finalField; |
+ final Callback<T> callbackField; |
+ |
+ T mutableField; |
+ Callback<T> mutableCallbackField; |
+ |
+ Foo(this.finalField, this.callbackField); |
+ |
+ void method(T x) {} |
+ |
+ set setter(T x) {} |
+ |
+ void withCallback(Callback<T> callback) { |
+ callback(finalField); |
+ } |
+} |
+ |
+main() { |
+ Foo<int> fooInt = new Foo<int>(1, (int x) {}); |
+ |
+ fooInt.method(3); |
+ fooInt.setter = 3; |
+ fooInt.withCallback((int x) {}); |
+ fooInt.withCallback((num x) {}); |
+ fooInt.mutableField = 3; |
+ fooInt.mutableCallbackField = (int x) {}; |
+ |
+ Foo<num> fooNum = fooInt; |
+ fooNum.method(3); |
+ fooNum.method(2.5); |
+ fooNum.setter = 3; |
+ fooNum.setter = 2.5; |
+ fooNum.withCallback((num x) {}); |
+ fooNum.mutableField = 3; |
+ fooNum.mutableField = 2.5; |
+ fooNum.mutableCallbackField(3); |
+ fooNum.mutableCallbackField(2.5); |
+ fooNum.mutableCallbackField = (num x) {}; |
+} |