| library /*isNonNullableByDefault*/; |
| import self as self; |
| import "dart:core" as core; |
| |
| typedef b = core::int; |
| typedef c = core::String; |
| static method f(dynamic a, [dynamic b = #C1]) → core::String |
| return "${a}, ${b}"; |
| static method a<T1 extends core::Object? = dynamic, T2 extends core::Object? = dynamic>(core::int x) → core::String { |
| return "a<${self::a::T1%}, ${self::a::T2%}>(${x})"; |
| } |
| static method main() → dynamic { |
| self::expect("${#C3}, null", self::f(#C3.{core::Object::toString}(){() → core::String})); |
| } |
| static method expect(dynamic expected, dynamic actual) → dynamic { |
| if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) |
| throw "Expected ${expected}, actual ${actual}"; |
| } |
| |
| constants { |
| #C1 = null |
| #C2 = static-tearoff self::a |
| #C3 = instantiation #C2 <core::int*, core::String*> |
| } |