blob: 98df2eba01bce7800f73e13b09cd8f63d808faea [file] [log] [blame]
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 extends self::C<core::String> implements self::M /*isEliminatedMixin*/ {
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 extends self::C<core::int> implements self::M /*isAnonymousMixin,isEliminatedMixin*/ {
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)
}