library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart:9:15: Error: Type variables can't be used in static members.
//   C({a: 0, b: T}) : trace = "a: $a, b: $b";
//               ^
//
import self as self;
import "dart:core" as core;
import "package:expect/expect.dart" as exp;

import "package:expect/expect.dart";

class C<T extends core::Object? = dynamic> extends core::Object {
  field core::String trace;
  constructor •({dynamic a = #C1, dynamic b = #C2}) → self::C<self::C::T%>
    : self::C::trace = "a: ${a}, b: ${b}", super core::Object::•()
    ;
}
class M extends core::Object {
  synthetic constructor •() → self::M
    : super core::Object::•()
    ;
}
class D = self::C<core::String> with self::M {
  synthetic constructor •({dynamic a = #C1, dynamic b = #C2}) → self::D
    : super self::C::•(a: a, b: b)
    ;
}
class E extends self::D {
  synthetic constructor •() → self::E
    : super self::D::•()
    ;
}
abstract class _F&C&M = self::C<core::int> with self::M /*isAnonymousMixin*/  {
  synthetic constructor •({dynamic a = #C1, dynamic b = #C2}) → self::_F&C&M
    : super self::C::•(a: a, b: b)
    ;
}
class F extends self::_F&C&M {
  synthetic constructor •() → self::F
    : super self::_F&C&M::•()
    ;
}
static method main() → dynamic {
  exp::Expect::stringEquals("a: 0, b: T", new self::C::•<core::Object>().{self::C::trace}{core::String});
  exp::Expect::stringEquals("a: 0, b: T", new self::C::•<dynamic>().{self::C::trace}{core::String});
  exp::Expect::stringEquals("a: 0, b: String", new self::D::•().{self::C::trace}{core::String});
  exp::Expect::stringEquals("a: 0, b: String", new self::E::•().{self::C::trace}{core::String});
  exp::Expect::stringEquals("a: 0, b: int", new self::F::•().{self::C::trace}{core::String});
}

constants  {
  #C1 = 0
  #C2 = TypeLiteralConstant(invalid-type)
}
