| library /*isNonNullableByDefault*/; |
| // |
| // Problems in library: |
| // |
| // pkg/front_end/testcases/constructor_tearoffs/instantiation.dart:16:40: Error: Inferred type argument 'String' doesn't conform to the bound 'num' of the type variable 'X' on 'A<X> Function<X extends num>(X)'. |
| // - 'A' is from 'pkg/front_end/testcases/constructor_tearoffs/instantiation.dart'. |
| // Try specifying type arguments explicitly so that they conform to the bounds. |
| // A<dynamic> Function(String) test5() => A.foo; // Error. |
| // ^ |
| // |
| // pkg/front_end/testcases/constructor_tearoffs/instantiation.dart:17:40: Error: Inferred type argument 'String' doesn't conform to the bound 'num' of the type variable 'X' on 'A<X> Function<X extends num>(X)'. |
| // - 'A' is from 'pkg/front_end/testcases/constructor_tearoffs/instantiation.dart'. |
| // Try specifying type arguments explicitly so that they conform to the bounds. |
| // A<dynamic> Function(String) test6() => A.new; // Error. |
| // ^ |
| // |
| // pkg/front_end/testcases/constructor_tearoffs/instantiation.dart:23:41: Error: Inferred type argument 'String' doesn't conform to the bound 'num' of the type variable 'X' on 'A<X> Function<X extends num>(X)'. |
| // - 'A' is from 'pkg/front_end/testcases/constructor_tearoffs/instantiation.dart'. |
| // Try specifying type arguments explicitly so that they conform to the bounds. |
| // A<dynamic> Function(String) test11() => A.bar; // Error. |
| // ^ |
| // |
| import self as self; |
| import "dart:core" as core; |
| |
| class A<X extends core::num> extends core::Object { |
| constructor foo(self::A::X x) → self::A<self::A::X> |
| : super core::Object::•() {} |
| constructor •(self::A::X x) → self::A<self::A::X> |
| : super core::Object::•() {} |
| static factory bar<X extends core::num>(self::A::bar::X x) → self::A<self::A::bar::X> |
| return new self::A::•<self::A::bar::X>(x); |
| } |
| static method test1() → (core::num) → self::A<core::num> |
| return #C2; |
| static method test2() → (core::int) → self::A<core::int> |
| return #C3; |
| static method test3() → (core::num) → self::A<core::num> |
| return #C5; |
| static method test4() → (core::int) → self::A<core::int> |
| return #C6; |
| static method test5() → (core::String) → self::A<dynamic> |
| return #C7; |
| static method test6() → (core::String) → self::A<dynamic> |
| return #C8; |
| static method test7() → (core::num) → self::A<dynamic> |
| return #C2; |
| static method test8() → (core::num) → self::A<dynamic> |
| return #C5; |
| static method test9() → (core::num) → self::A<core::num> |
| return #C10; |
| static method test10() → (core::int) → self::A<core::int> |
| return #C11; |
| static method test11() → (core::String) → self::A<dynamic> |
| return #C12; |
| static method test12() → (core::num) → self::A<dynamic> |
| return #C10; |
| static method main() → dynamic {} |
| |
| constants { |
| #C1 = constructor-tearoff self::A::foo |
| #C2 = instantiation self::A::foo <core::num> |
| #C3 = instantiation self::A::foo <core::int> |
| #C4 = constructor-tearoff self::A::• |
| #C5 = instantiation self::A::• <core::num> |
| #C6 = instantiation self::A::• <core::int> |
| #C7 = instantiation self::A::foo <core::String> |
| #C8 = instantiation self::A::• <core::String> |
| #C9 = static-tearoff self::A::bar |
| #C10 = instantiation self::A::bar <core::num> |
| #C11 = instantiation self::A::bar <core::int> |
| #C12 = instantiation self::A::bar <core::String> |
| } |