| 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) {};
|
| +}
|
|
|