library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/constructor_tearoffs/issue46887.dart:15:32: Error: Couldn't find constructor 'a.toString'.
//   expect("${a<b, c>}, null", f(a<b, c>.toString()));
//                                ^^^^^^^^
//
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(invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46887.dart:15:32: Error: Couldn't find constructor 'a.toString'.
  expect(\"\${a<b, c>}, null\", f(a<b, c>.toString()));
                               ^^^^^^^^"));
}
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 self::a <core::int*, core::String*>
}
