blob: 6aecb3f199f6bb7e81845617724c3ce83f6fa4e7 [file] [log] [blame]
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
inline class Class /* declaredRepresentationType = core::int */ {
constructor = self::Class|;
constructor named = self::Class|named;
}
inline class GenericClass<T extends core::Object? = dynamic> /* declaredRepresentationType = T% */ {
constructor = self::GenericClass|;
}
static method Class|(core::int it) self::Class {
final self::Class #this = it;
return #this;
}
static method Class|named(core::int it) self::Class {
final self::Class #this = it.{core::num::+}(1){(core::num) → core::int};
return #this;
}
static method GenericClass|<T extends core::Object? = dynamic>(self::GenericClass|::T% it) self::GenericClass<self::GenericClass|::T%> {
final self::GenericClass<self::GenericClass|::T%> #this = it;
return #this;
}
static method main() dynamic {
self::Class a = self::Class|(3);
self::Class b = self::Class|(4);
self::Class c = self::Class|named(5);
self::GenericClass<core::String> d = self::GenericClass|<core::String>("foo");
self::GenericClass<core::String> e = self::GenericClass|<core::String>("bar");
self::GenericClass<core::int> f = self::GenericClass|<core::int>(42);
self::GenericClass<core::int> g = self::GenericClass|<core::int>(87);
self::GenericClass<core::num> h = self::GenericClass|<core::int>(123);
self::expect(3, a as{ForNonNullableByDefault} core::int);
self::expect(3, a);
self::expect(4, b as{ForNonNullableByDefault} core::int);
self::expect(4, b);
self::expect(6, c as{ForNonNullableByDefault} core::int);
self::expect(6, c);
self::expect("foo", d as{ForNonNullableByDefault} core::String);
self::expect("foo", d);
self::expect("bar", e as{ForNonNullableByDefault} core::String);
self::expect("bar", e);
self::expect(42, f as{ForNonNullableByDefault} core::int);
self::expect(42, f);
self::expect(87, g as{ForNonNullableByDefault} core::int);
self::expect(87, g);
self::expect(123, h as{ForNonNullableByDefault} core::num);
self::expect(123, h);
}
static method expect(dynamic expected, dynamic actual) dynamic {
if(!(expected =={core::Object::==}{(core::Object) core::bool} actual))
throw "Expected ${expected}, actual ${actual}";
}