blob: 8836c1c123de5240af0004130bd69eca6d92c5ff [file]
library;
import self as self;
import "dart:core" as core;
extension type Class(core::int it) {
constructor = self::Class|;
tearoff = self::Class|_#new#tearOff;
constructor named = self::Class|named;
tearoff named = self::Class|_#named#tearOff;
}
extension type GenericClass<T extends core::Object? = dynamic>(T% it) {
constructor = self::GenericClass|;
tearoff = self::GenericClass|_#new#tearOff;
}
static inline-class-member method Class|(core::int it) self::Class /* = core::int */ {
lowered final self::Class /* = core::int */ #this = it;
return #this;
}
static inline-class-member method Class|_#new#tearOff(core::int it) → self::Class /* = core::int */
return self::Class|(it);
static inline-class-member method Class|named(core::int it) self::Class /* = core::int */ {
lowered final self::Class /* = core::int */ #this = it.{core::num::+}(1){(core::num) → core::int};
return #this;
}
static inline-class-member method Class|_#named#tearOff(core::int it) → self::Class /* = core::int */
return self::Class|named(it);
static inline-class-member method GenericClass|<T extends core::Object? = dynamic>(self::GenericClass|::T% it) self::GenericClass<self::GenericClass|::T%> /* = self::GenericClass|::T% */ {
lowered final self::GenericClass<self::GenericClass|::T%> /* = self::GenericClass|::T% */ #this = it;
return #this;
}
static inline-class-member method GenericClass|_#new#tearOff<T extends core::Object? = dynamic>(self::GenericClass|_#new#tearOff::T% it) → self::GenericClass<self::GenericClass|_#new#tearOff::T%> /* = self::GenericClass|_#new#tearOff::T% */
return self::GenericClass|<self::GenericClass|_#new#tearOff::T%>(it);
static method main() dynamic {
self::Class /* = core::int */ a = self::Class|(3);
self::Class /* = core::int */ b = self::Class|(4);
self::Class /* = core::int */ b2 = #C1(4){(core::int) → self::Class /* = core::int */};
self::Class /* = core::int */ c = self::Class|named(5);
self::Class /* = core::int */ c2 = #C2(5){(core::int) → self::Class /* = core::int */};
self::GenericClass<core::String> /* = core::String */ d = self::GenericClass|<core::String>("foo");
self::GenericClass<core::String> /* = core::String */ d2 = #C4("foo"){(core::String) → self::GenericClass<core::String> /* = core::String */};
self::GenericClass<core::String> /* = core::String */ d3 = #C3<core::String>("foo"){(core::String) → self::GenericClass<core::String> /* = core::String */};
self::GenericClass<core::String> /* = core::String */ e = self::GenericClass|<core::String>("bar");
self::GenericClass<core::String> /* = core::String */ e2 = #C4("bar"){(core::String) → self::GenericClass<core::String> /* = core::String */};
self::GenericClass<core::String> /* = core::String */ e3 = #C3<core::String>("bar"){(core::String) → self::GenericClass<core::String> /* = core::String */};
self::GenericClass<core::int> /* = core::int */ f = self::GenericClass|<core::int>(42);
self::GenericClass<core::int> /* = core::int */ f2 = #C5(42){(core::int) → self::GenericClass<core::int> /* = core::int */};
self::GenericClass<core::int> /* = core::int */ f3 = #C3<core::int>(42){(core::int) → self::GenericClass<core::int> /* = core::int */};
self::GenericClass<core::int> /* = core::int */ g = self::GenericClass|<core::int>(87);
self::GenericClass<core::int> /* = core::int */ g2 = #C3<core::int>(87){(core::int) → self::GenericClass<core::int> /* = core::int */};
self::GenericClass<core::num> /* = core::num */ h = self::GenericClass|<core::num>(123);
self::GenericClass<core::num> /* = core::num */ h2 = #C3<core::num>(123){(core::num) → self::GenericClass<core::num> /* = core::num */};
self::expect(3, a as{Unchecked} core::int);
self::expect(3, a);
self::expect(4, b as{Unchecked} core::int);
self::expect(4, b);
self::expect(4, b2 as{Unchecked} core::int);
self::expect(4, b2);
self::expect(6, c as{Unchecked} core::int);
self::expect(6, c);
self::expect(6, c2 as{Unchecked} core::int);
self::expect(6, c2);
self::expect("foo", d as{Unchecked} core::String);
self::expect("foo", d);
self::expect("foo", d2 as{Unchecked} core::String);
self::expect("foo", d2);
self::expect("foo", d3 as{Unchecked} core::String);
self::expect("foo", d3);
self::expect("bar", e as{Unchecked} core::String);
self::expect("bar", e);
self::expect("bar", e2 as{Unchecked} core::String);
self::expect("bar", e2);
self::expect("bar", e3 as{Unchecked} core::String);
self::expect("bar", e3);
self::expect(42, f as{Unchecked} core::int);
self::expect(42, f);
self::expect(42, f2 as{Unchecked} core::int);
self::expect(42, f2);
self::expect(42, f3 as{Unchecked} core::int);
self::expect(42, f3);
self::expect(87, g as{Unchecked} core::int);
self::expect(87, g);
self::expect(87, g2 as{Unchecked} core::int);
self::expect(87, g2);
self::expect(123, h as{Unchecked} core::num);
self::expect(123, h);
self::expect(123, h2 as{Unchecked} core::num);
self::expect(123, h2);
}
static method expect(dynamic expected, dynamic actual) dynamic {
if(!(expected =={core::Object::==}{(core::Object) core::bool} actual))
throw "Expected ${expected}, actual ${actual}";
}
constants {
#C1 = static-tearoff self::Class|_#new#tearOff
#C2 = static-tearoff self::Class|_#named#tearOff
#C3 = static-tearoff self::GenericClass|_#new#tearOff
#C4 = instantiation #C3 <core::String*>
#C5 = instantiation #C3 <core::int*>
}