blob: 39f24c06d309554ae798adbd22bf4f3e3c4b7fc2 [file] [log] [blame]
library;
//
// Problems in library:
//
// pkg/front_end/testcases/general/deferred.dart:7:17: Error: Classes can't extend deferred classes.
// Try specifying a different superclass, or removing the extends clause.
// class B extends d.A {}
// ^^^
//
// pkg/front_end/testcases/general/deferred.dart:9:20: Error: Classes and mixins can't implement deferred classes.
// Try specifying a different interface, removing the class from the list, or changing the import to not be deferred.
// class C implements d.A {}
// ^^^
//
// pkg/front_end/testcases/general/deferred.dart:11:12: Error: Deferred classes can't be used as superclass constraints.
// Try changing the import to not be deferred.
// mixin D on d.A {}
// ^^^
//
// pkg/front_end/testcases/general/deferred.dart:13:20: Error: Classes and mixins can't implement deferred classes.
// Try specifying a different interface, removing the class from the list, or changing the import to not be deferred.
// mixin E implements d.A {}
// ^^^
//
// pkg/front_end/testcases/general/deferred.dart:15:14: Error: Classes can't mix in deferred mixins.
// Try changing the import to not be deferred.
// class F with d.M {}
// ^^^
//
// pkg/front_end/testcases/general/deferred.dart:17:23: Error: Classes can't mix in deferred mixins.
// Try changing the import to not be deferred.
// class G = Object with d.M;
// ^^^
//
// pkg/front_end/testcases/general/deferred.dart:19:39: Error: Extension types can't implement deferred types.
// Try specifying a different type, removing the type from the list, or changing the import to not be deferred.
// extension type ET1(d.A id) implements d.A {}
// ^^^
//
// pkg/front_end/testcases/general/deferred.dart:21:52: Error: Extension types can't implement deferred types.
// Try specifying a different type, removing the type from the list, or changing the import to not be deferred.
// extension type ET2<T extends d.A>(T id) implements d.A {}
// ^^^
//
// pkg/front_end/testcases/general/deferred.dart:23:39: Error: Extension types can't implement deferred types.
// Try specifying a different type, removing the type from the list, or changing the import to not be deferred.
// extension type ET3(int id) implements d.ET1 {}
// ^^^^^
//
// pkg/front_end/testcases/general/deferred.dart:27:39: Error: Extension types can't implement deferred types.
// Try specifying a different type, removing the type from the list, or changing the import to not be deferred.
// extension type ET5(d.A id) implements d.ET2 {}
// ^^^^^
//
// pkg/front_end/testcases/general/deferred.dart:29:39: Error: Extension types can't implement deferred types.
// Try specifying a different type, removing the type from the list, or changing the import to not be deferred.
// extension type ET6(d.B id) implements d.B {}
// ^^^
//
// pkg/front_end/testcases/general/deferred.dart:19:20: Error: The type 'A' is deferred loaded via prefix 'd' and can't be used as a type annotation.
// - 'A' is from 'pkg/front_end/testcases/general/deferred_lib2.dart'.
// Try removing 'deferred' from the import of 'd' or use a supertype of 'A' that isn't deferred.
// extension type ET1(d.A id) implements d.A {}
// ^^^
//
// pkg/front_end/testcases/general/deferred.dart:25:20: Error: The type 'A' is deferred loaded via prefix 'd' and can't be used as a type annotation.
// - 'A' is from 'pkg/front_end/testcases/general/deferred_lib2.dart'.
// Try removing 'deferred' from the import of 'd' or use a supertype of 'A' that isn't deferred.
// extension type ET4(d.A id) {}
// ^^^
//
// pkg/front_end/testcases/general/deferred.dart:27:20: Error: The type 'A' is deferred loaded via prefix 'd' and can't be used as a type annotation.
// - 'A' is from 'pkg/front_end/testcases/general/deferred_lib2.dart'.
// Try removing 'deferred' from the import of 'd' or use a supertype of 'A' that isn't deferred.
// extension type ET5(d.A id) implements d.ET2 {}
// ^^^
//
// pkg/front_end/testcases/general/deferred.dart:29:20: Error: The type 'int' is deferred loaded via prefix 'd' and can't be used as a type annotation.
// Try removing 'deferred' from the import of 'd' or use a supertype of 'int' that isn't deferred.
// extension type ET6(d.B id) implements d.B {}
// ^^^
//
// pkg/front_end/testcases/general/deferred.dart:31:1: Error: The type 'A' is deferred loaded via prefix 'd' and can't be used as a type annotation.
// - 'A' is from 'pkg/front_end/testcases/general/deferred_lib2.dart'.
// Try removing 'deferred' from the import of 'd' or use a supertype of 'A' that isn't deferred.
// d.A a = new d.A();
// ^^^
//
// pkg/front_end/testcases/general/deferred.dart:33:1: Error: The type 'int' is deferred loaded via prefix 'd' and can't be used as a type annotation.
// Try removing 'deferred' from the import of 'd' or use a supertype of 'int' that isn't deferred.
// d.B b = 0;
// ^^^
//
import self as self;
import "deferred_lib2.dart" as def;
import "dart:core" as core;
import "org-dartlang-testcase:///deferred_lib2.dart" deferred as d;
class B extends def::A {
synthetic constructor •() self::B
: super def::A::•()
;
}
class C extends core::Object implements def::A {
synthetic constructor •() self::C
: super core::Object::•()
;
}
abstract class D extends def::A /*isMixinDeclaration*/ {
}
abstract class E extends core::Object implements def::A /*isMixinDeclaration*/ {
}
abstract class _F&Object&M extends core::Object implements def::M /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ {
const synthetic constructor •() self::_F&Object&M
: super core::Object::•()
;
}
class F extends self::_F&Object&M {
synthetic constructor •() self::F
: super self::_F&Object&M::•()
;
}
class G extends core::Object implements def::M /*isEliminatedMixin,hasConstConstructor*/ {
const synthetic constructor •() self::G
: super core::Object::•()
;
}
extension type ET1(def::A id) implements def::A {
abstract extension-type-member representation-field get id() def::A;
constructor = self::ET1|constructor#;
constructor tearoff = self::ET1|constructor#_#new#tearOff;
}
extension type ET2<T extends def::A>(T id) implements def::A {
abstract extension-type-member representation-field get id() T;
constructor = self::ET2|constructor#;
constructor tearoff = self::ET2|constructor#_#new#tearOff;
}
extension type ET3(core::int id) implements def::ET1% /* erasure=core::int, declared=! */ {
abstract extension-type-member representation-field get id() core::int;
constructor = self::ET3|constructor#;
constructor tearoff = self::ET3|constructor#_#new#tearOff;
}
extension type ET4(def::A id) {
abstract extension-type-member representation-field get id() def::A;
constructor = self::ET4|constructor#;
constructor tearoff = self::ET4|constructor#_#new#tearOff;
}
extension type ET5(def::A id) implements def::ET2% /* erasure=def::A, declared=! */ {
abstract extension-type-member representation-field get id() def::A;
constructor = self::ET5|constructor#;
constructor tearoff = self::ET5|constructor#_#new#tearOff;
}
extension type ET6(core::int id) implements core::int {
abstract extension-type-member representation-field get id() core::int;
constructor = self::ET6|constructor#;
constructor tearoff = self::ET6|constructor#_#new#tearOff;
}
static field def::A a = let final core::Object? #t1 = CheckLibraryIsLoaded(d) in new def::A::•();
static field core::int b = 0;
static extension-type-member method ET1|constructor#(def::A id) → self::ET1 /* erasure=def::A */ {
lowered final self::ET1 /* erasure=def::A */ #this = id;
return #this;
}
static extension-type-member method ET1|constructor#_#new#tearOff(def::A id) → self::ET1 /* erasure=def::A */
return self::ET1|constructor#(id);
static extension-type-member method ET2|constructor#<T extends def::A>(self::ET2|constructor#::T id) → self::ET2<self::ET2|constructor#::T> /* erasure=self::ET2|constructor#::T */ {
lowered final self::ET2<self::ET2|constructor#::T> /* erasure=self::ET2|constructor#::T */ #this = id;
return #this;
}
static extension-type-member method ET2|constructor#_#new#tearOff<T extends def::A>(self::ET2|constructor#_#new#tearOff::T id) → self::ET2<self::ET2|constructor#_#new#tearOff::T> /* erasure=self::ET2|constructor#_#new#tearOff::T */
return self::ET2|constructor#<self::ET2|constructor#_#new#tearOff::T>(id);
static extension-type-member method ET3|constructor#(core::int id) → self::ET3% /* erasure=core::int, declared=! */ {
lowered final self::ET3% /* erasure=core::int, declared=! */ #this = id;
return #this;
}
static extension-type-member method ET3|constructor#_#new#tearOff(core::int id) → self::ET3% /* erasure=core::int, declared=! */
return self::ET3|constructor#(id);
static extension-type-member method ET4|constructor#(def::A id) → self::ET4% /* erasure=def::A, declared=! */ {
lowered final self::ET4% /* erasure=def::A, declared=! */ #this = id;
return #this;
}
static extension-type-member method ET4|constructor#_#new#tearOff(def::A id) → self::ET4% /* erasure=def::A, declared=! */
return self::ET4|constructor#(id);
static extension-type-member method ET5|constructor#(def::A id) → self::ET5% /* erasure=def::A, declared=! */ {
lowered final self::ET5% /* erasure=def::A, declared=! */ #this = id;
return #this;
}
static extension-type-member method ET5|constructor#_#new#tearOff(def::A id) → self::ET5% /* erasure=def::A, declared=! */
return self::ET5|constructor#(id);
static extension-type-member method ET6|constructor#(core::int id) → self::ET6 /* erasure=core::int */ {
lowered final self::ET6 /* erasure=core::int */ #this = id;
return #this;
}
static extension-type-member method ET6|constructor#_#new#tearOff(core::int id) → self::ET6 /* erasure=core::int */
return self::ET6|constructor#(id);
static method main() dynamic {
core::print(#C1);
core::print(#C1);
}
library;
import self as def;
import "dart:core" as core;
typedef B = core::int;
class A extends core::Object {
synthetic constructor •() def::A
: super core::Object::•()
;
}
abstract class M extends core::Object /*isMixinDeclaration*/ {
}
extension type ET1(core::int i) {
abstract extension-type-member representation-field get i() core::int;
constructor = def::ET1|constructor#;
constructor tearoff = def::ET1|constructor#_#new#tearOff;
}
extension type ET2(def::A i) {
abstract extension-type-member representation-field get i() def::A;
constructor = def::ET2|constructor#;
constructor tearoff = def::ET2|constructor#_#new#tearOff;
}
static extension-type-member method ET1|constructor#(core::int i) → def::ET1% /* erasure=core::int, declared=! */ {
lowered final def::ET1% /* erasure=core::int, declared=! */ #this = i;
return #this;
}
static extension-type-member method ET1|constructor#_#new#tearOff(core::int i) → def::ET1% /* erasure=core::int, declared=! */
return def::ET1|constructor#(i);
static extension-type-member method ET2|constructor#(def::A i) → def::ET2% /* erasure=def::A, declared=! */ {
lowered final def::ET2% /* erasure=def::A, declared=! */ #this = i;
return #this;
}
static extension-type-member method ET2|constructor#_#new#tearOff(def::A i) → def::ET2% /* erasure=def::A, declared=! */
return def::ET2|constructor#(i);
constants {
#C1 = TypeLiteralConstant(def::A*)
}