blob: 8309676a6e7c82315180930c0f209a9f84c0c791 [file] [log] [blame]
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
typedef F<X extends core::num> = self::A<X>;
typedef G<unrelated Y extends core::Object? = dynamic> = self::A<core::int>;
typedef H<X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic> = self::A<X%>;
class A<T extends core::Object? = dynamic> extends core::Object {
synthetic constructor •() self::A<self::A::T%>
: super core::Object::•()
;
}
static const field () self::A<core::int> f1a = #C2;
static const field () self::A<core::int> f1b = #C2;
static const field () self::A<core::int> f1c = #C2;
static const field () self::A<core::int> g1a = #C2;
static const field () self::A<core::int> g1b = #C2;
static const field () self::A<core::int> g1c = #C2;
static const field () self::A<core::int> h1a = #C2;
static const field () self::A<core::int> h1b = #C2;
static const field () self::A<core::int> h1c = #C2;
static method main() dynamic {
self::test<core::int>();
core::identical(#C2, #C2);
core::identical(#C2, #C2);
core::identical(#C2, #C2);
core::identical(#C2, #C2);
core::identical(#C2, #C2);
core::identical(#C2, #C2);
}
static method test<T extends core::num>() dynamic {
() self::A<self::test::T> f2a = #C1<self::test::T>;
() self::A<self::test::T> f2b = #C1<self::test::T>;
() self::A<self::test::T> f2c = #C1<self::test::T>;
() self::A<core::int> g2a = #C2;
() self::A<core::int> g2b = #C2;
() self::A<core::int> g2c = #C2;
() self::A<self::test::T> h2a = #C1<self::test::T>;
() self::A<self::test::T> h2b = #C1<self::test::T>;
() self::A<self::test::T> h2c = #C1<self::test::T>;
self::expect(#C2, f2a);
self::expect(f2a, f2b);
self::expect(f2a, f2c);
self::expect(#C2, g2a);
self::expect(g2a, g2b);
self::expect(g2a, g2c);
self::expect(#C2, h2a);
self::expect(h2a, h2b);
self::expect(h2a, h2c);
}
static method expect(dynamic expected, dynamic actual) dynamic {
if(!(expected =={core::Object::==}{(core::Object) core::bool} actual))
throw "Expected ${expected}, actual ${actual}";
}
constants {
#C1 = constructor-tearoff self::A::•
#C2 = instantiation self::A::• <core::int>
}