| library test; |
| |
| abstract class Base<T, U> { |
| T getValue(String s); |
| T operator [](String s) => getValue(s); |
| void operator []=(String s, U v) => setValue(s, v); |
| void setValue(String s, U v); |
| } |
| |
| abstract class Base2<T, U> { |
| T? getValue(String s); |
| T? operator [](String s) => getValue(s); |
| void operator []=(String s, U? v) => setValue(s, v); |
| void setValue(String s, U? v); |
| } |
| |
| abstract class Test1a extends Base<int, int> { |
| void test() {} |
| } |
| |
| abstract class Test1b extends Base2<int, int> { |
| void test() {} |
| } |
| |
| abstract class Test2a extends Base<int, num> { |
| void test() {} |
| } |
| |
| abstract class Test2b extends Base2<int, num> { |
| void test() {} |
| } |
| |
| abstract class Test3a extends Base<int, double> { |
| void test() {} |
| } |
| |
| abstract class Test3b extends Base2<int, double> { |
| void test() {} |
| } |
| |
| abstract class Test4a extends Base<num, int> { |
| void test() {} |
| } |
| |
| abstract class Test4b extends Base2<num, int> { |
| void test() {} |
| } |
| |
| abstract class Test5a extends Base<num, num> { |
| void test() {} |
| } |
| |
| abstract class Test5b extends Base2<num, num> { |
| void test() {} |
| } |
| |
| abstract class Test6a extends Base<num, double> { |
| void test() {} |
| } |
| |
| abstract class Test6b extends Base2<num, double> { |
| void test() {} |
| } |
| |
| abstract class Test7a extends Base<double, int> { |
| void test() {} |
| } |
| |
| abstract class Test7b extends Base2<double, int> { |
| void test() {} |
| } |
| |
| abstract class Test8a extends Base<double, num> { |
| void test() {} |
| } |
| |
| abstract class Test8b extends Base2<double, num> { |
| void test() {} |
| } |
| |
| abstract class Test9a extends Base<double, double> { |
| void test() {} |
| } |
| |
| abstract class Test9b extends Base2<double, double> { |
| void test() {} |
| } |
| |
| double getDouble() => 0.0; |
| int getInt() => 0; |
| main() {} |
| num getNum() => 0; |