blob: c9d244a179bf791ea34e5d726ee9bf4961b2a8ae [file] [log] [blame]
library;
//
// Problems in library:
//
// pkg/front_end/testcases/extension_types/supertype_conflict.dart:9:16: Error: 'C' is a supertype of itself.
// extension type C<T>(A<T> it) implements C<T> {}
// ^
//
// pkg/front_end/testcases/extension_types/supertype_conflict.dart:13:16: Error: 'E' is a supertype of itself.
// extension type E(A<Never> it) implements B<int>, C<String> {}
// ^
//
// pkg/front_end/testcases/extension_types/supertype_conflict.dart:11:16: Error: 'D' can't implement both 'A<int>' and 'A<String>'
// - 'A' is from 'pkg/front_end/testcases/extension_types/supertype_conflict.dart'.
// extension type D(A<Never> it) implements A<int>, B<String> {}
// ^
//
import self as self;
import "dart:core" as core;
class A<T extends core::Object? = dynamic> extends core::Object {
synthetic constructor •() self::A<self::A::T%>
: super core::Object::•()
;
}
extension type B<T extends core::Object? = dynamic>(self::A<T%> it) implements self::A<T%> {
abstract extension-type-member representation-field get it() self::A<T%>;
constructor = self::B|constructor#;
constructor tearoff = self::B|constructor#_#new#tearOff;
}
extension type C<T extends core::Object? = dynamic>(self::A<T%> it) {
abstract extension-type-member representation-field get it() self::A<T%>;
constructor = self::C|constructor#;
constructor tearoff = self::C|constructor#_#new#tearOff;
}
extension type D(self::A<Never> it) implements self::A<core::int>, self::B<core::String> /* erasure=self::A<core::String> */ {
abstract extension-type-member representation-field get it() self::A<Never>;
constructor = self::D|constructor#;
constructor tearoff = self::D|constructor#_#new#tearOff;
}
extension type E(self::A<Never> it) {
abstract extension-type-member representation-field get it() self::A<Never>;
constructor = self::E|constructor#;
constructor tearoff = self::E|constructor#_#new#tearOff;
}
static extension-type-member method B|constructor#<T extends core::Object? = dynamic>(self::A<self::B|constructor#::T%> it) → self::B<self::B|constructor#::T%> /* erasure=self::A<self::B|constructor#::T%> */ {
lowered final self::B<self::B|constructor#::T%> /* erasure=self::A<self::B|constructor#::T%> */ #this = it;
return #this;
}
static extension-type-member method B|constructor#_#new#tearOff<T extends core::Object? = dynamic>(self::A<self::B|constructor#_#new#tearOff::T%> it) → self::B<self::B|constructor#_#new#tearOff::T%> /* erasure=self::A<self::B|constructor#_#new#tearOff::T%> */
return self::B|constructor#<self::B|constructor#_#new#tearOff::T%>(it);
static extension-type-member method C|constructor#<T extends core::Object? = dynamic>(self::A<self::C|constructor#::T%> it) → self::C<self::C|constructor#::T%>% /* erasure=self::A<self::C|constructor#::T%>, declared=! */ {
lowered final self::C<self::C|constructor#::T%>% /* erasure=self::A<self::C|constructor#::T%>, declared=! */ #this = it;
return #this;
}
static extension-type-member method C|constructor#_#new#tearOff<T extends core::Object? = dynamic>(self::A<self::C|constructor#_#new#tearOff::T%> it) → self::C<self::C|constructor#_#new#tearOff::T%>% /* erasure=self::A<self::C|constructor#_#new#tearOff::T%>, declared=! */
return self::C|constructor#<self::C|constructor#_#new#tearOff::T%>(it);
static extension-type-member method D|constructor#(self::A<Never> it) → self::D /* erasure=self::A<Never> */ {
lowered final self::D /* erasure=self::A<Never> */ #this = it;
return #this;
}
static extension-type-member method D|constructor#_#new#tearOff(self::A<Never> it) → self::D /* erasure=self::A<Never> */
return self::D|constructor#(it);
static extension-type-member method E|constructor#(self::A<Never> it) → self::E% /* erasure=self::A<Never>, declared=! */ {
lowered final self::E% /* erasure=self::A<Never>, declared=! */ #this = it;
return #this;
}
static extension-type-member method E|constructor#_#new#tearOff(self::A<Never> it) → self::E% /* erasure=self::A<Never>, declared=! */
return self::E|constructor#(it);