blob: 0e4502f7ca98bf475ea91dd70725a93d5af4b828 [file] [log] [blame]
library;
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 = 0, dynamic b = self::C::T}) 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 = 0, dynamic b = core::String}) 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 {
synthetic constructor •({dynamic a = 0, dynamic b = core::int}) 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>().trace);
exp::Expect::stringEquals("a: 0, b: T", new self::C::•<dynamic>().trace);
exp::Expect::stringEquals("a: 0, b: String", new self::D::•().trace);
exp::Expect::stringEquals("a: 0, b: String", new self::E::•().trace);
exp::Expect::stringEquals("a: 0, b: int", new self::F::•().trace);
}