blob: c0b1e5362860af9e404b8aa65df756e68223b077 [file] [log] [blame]
library;
//
// Problems in library:
//
// pkg/front_end/testcases/extension_types/issue53799.dart:10:16: Error: 'E1' can't implement both 'A<String>' and 'A<int>'
// - 'A' is from 'pkg/front_end/testcases/extension_types/issue53799.dart'.
// extension type E1(A<Never> it) implements A<String>, A<int> {} // Error.
// ^
//
// pkg/front_end/testcases/extension_types/issue53799.dart:12:16: Error: 'E2' can't implement both 'A<String>' and 'A<double>'
// - 'A' is from 'pkg/front_end/testcases/extension_types/issue53799.dart'.
// extension type E2(B<Never> it) implements B<String>, A<double> {} // Error.
// ^
//
// pkg/front_end/testcases/extension_types/issue53799.dart:14:16: Error: 'E3' can't implement both 'A<String>' and 'A<num>'
// - 'A' is from 'pkg/front_end/testcases/extension_types/issue53799.dart'.
// extension type E3(C it) implements C, A<num> {} // Error.
// ^
//
// pkg/front_end/testcases/extension_types/issue53799.dart:17:16: Error: 'E42' can't implement both 'A<String>' and 'A<int>'
// - 'A' is from 'pkg/front_end/testcases/extension_types/issue53799.dart'.
// extension type E42(A<Never> it) implements E41, A<int> {} // Error.
// ^
//
// pkg/front_end/testcases/extension_types/issue53799.dart:19:16: Error: 'E5' can't implement both 'E<String>' and 'E<bool>'
// extension type E5(E<Never> it) implements E<String>, E<bool> {} // Error.
// ^
//
// pkg/front_end/testcases/extension_types/issue53799.dart:22:16: Error: 'E62' can't implement both 'E<num>' and 'E<String>'
// extension type E62(E<Never> it) implements E61, E<String> {} // Error.
// ^
//
// pkg/front_end/testcases/extension_types/issue53799.dart:26:16: Error: 'E73' can't implement both 'E<double>' and 'E<bool>'
// extension type E73(E<Never> it) implements E71, E72 {} // Error.
// ^
//
// pkg/front_end/testcases/extension_types/issue53799.dart:10:54: Error: 'A' can only be implemented once.
// Try removing 1 of the occurrences.
// extension type E1(A<Never> it) implements A<String>, A<int> {} // Error.
// ^
//
// pkg/front_end/testcases/extension_types/issue53799.dart:14:39: Error: The implemented interface 'A<num>' must be a supertype of the representation type 'C' of extension type 'E3'.
// - 'A' is from 'pkg/front_end/testcases/extension_types/issue53799.dart'.
// - 'C' is from 'pkg/front_end/testcases/extension_types/issue53799.dart'.
// Try changing the interface type to a supertype of 'C' or the representation type to a subtype of 'A<num>'.
// extension type E3(C it) implements C, A<num> {} // Error.
// ^
//
// pkg/front_end/testcases/extension_types/issue53799.dart:19:54: Error: 'E' can only be implemented once.
// Try removing 1 of the occurrences.
// extension type E5(E<Never> it) implements E<String>, E<bool> {} // Error.
// ^
//
import self as self;
import "dart:core" as core;
class A<X extends core::Object? = dynamic> extends core::Object {
synthetic constructor •() self::A<self::A::X%>
: super core::Object::•()
;
}
class B<X extends core::Object? = dynamic> extends self::A<self::B::X%> {
synthetic constructor •() self::B<self::B::X%>
: super self::A::•()
;
}
class C extends self::A<core::String> {
synthetic constructor •() self::C
: super self::A::•()
;
}
extension type E<X extends core::Object? = dynamic>(X% it) {
abstract extension-type-member representation-field get it() X%;
constructor = self::E|constructor#;
constructor tearoff = self::E|constructor#_#new#tearOff;
}
extension type E1(self::A<Never> it) implements self::A<core::String>, self::A<core::int> {
abstract extension-type-member representation-field get it() self::A<Never>;
constructor = self::E1|constructor#;
constructor tearoff = self::E1|constructor#_#new#tearOff;
}
extension type E2(self::B<Never> it) implements self::B<core::String>, self::A<core::double> {
abstract extension-type-member representation-field get it() self::B<Never>;
constructor = self::E2|constructor#;
constructor tearoff = self::E2|constructor#_#new#tearOff;
}
extension type E3(self::C it) implements self::C, self::A<core::num> {
abstract extension-type-member representation-field get it() self::C;
constructor = self::E3|constructor#;
constructor tearoff = self::E3|constructor#_#new#tearOff;
}
extension type E41(self::A<Never> it) implements self::A<core::String> {
abstract extension-type-member representation-field get it() self::A<Never>;
constructor = self::E41|constructor#;
constructor tearoff = self::E41|constructor#_#new#tearOff;
}
extension type E42(self::A<Never> it) implements self::E41 /* erasure=self::A<Never> */, self::A<core::int> {
abstract extension-type-member representation-field get it() self::A<Never>;
constructor = self::E42|constructor#;
constructor tearoff = self::E42|constructor#_#new#tearOff;
}
extension type E5(self::E<Never>% /* erasure=Never, declared=! */ it) implements self::E<core::String>% /* erasure=core::String, declared=! */, self::E<core::bool>% /* erasure=core::bool, declared=! */ {
abstract extension-type-member representation-field get it() self::E<Never>% /* erasure=Never, declared=! */;
constructor = self::E5|constructor#;
constructor tearoff = self::E5|constructor#_#new#tearOff;
}
extension type E61(self::E<Never>% /* erasure=Never, declared=! */ it) implements self::E<core::num>% /* erasure=core::num, declared=! */ {
abstract extension-type-member representation-field get it() self::E<Never>% /* erasure=Never, declared=! */;
constructor = self::E61|constructor#;
constructor tearoff = self::E61|constructor#_#new#tearOff;
}
extension type E62(self::E<Never>% /* erasure=Never, declared=! */ it) implements self::E61% /* erasure=Never, declared=! */, self::E<core::String>% /* erasure=core::String, declared=! */ {
abstract extension-type-member representation-field get it() self::E<Never>% /* erasure=Never, declared=! */;
constructor = self::E62|constructor#;
constructor tearoff = self::E62|constructor#_#new#tearOff;
}
extension type E71(self::E<Never>% /* erasure=Never, declared=! */ it) implements self::E<core::double>% /* erasure=core::double, declared=! */ {
abstract extension-type-member representation-field get it() self::E<Never>% /* erasure=Never, declared=! */;
constructor = self::E71|constructor#;
constructor tearoff = self::E71|constructor#_#new#tearOff;
}
extension type E72(self::E<Never>% /* erasure=Never, declared=! */ it) implements self::E<core::bool>% /* erasure=core::bool, declared=! */ {
abstract extension-type-member representation-field get it() self::E<Never>% /* erasure=Never, declared=! */;
constructor = self::E72|constructor#;
constructor tearoff = self::E72|constructor#_#new#tearOff;
}
extension type E73(self::E<Never>% /* erasure=Never, declared=! */ it) implements self::E71% /* erasure=Never, declared=! */, self::E72% /* erasure=Never, declared=! */ {
abstract extension-type-member representation-field get it() self::E<Never>% /* erasure=Never, declared=! */;
constructor = self::E73|constructor#;
constructor tearoff = self::E73|constructor#_#new#tearOff;
}
static extension-type-member method E|constructor#<X extends core::Object? = dynamic>(self::E|constructor#::X% it) → self::E<self::E|constructor#::X%>% /* erasure=self::E|constructor#::X%, declared=! */ {
lowered final self::E<self::E|constructor#::X%>% /* erasure=self::E|constructor#::X%, declared=! */ #this = it;
return #this;
}
static extension-type-member method E|constructor#_#new#tearOff<X extends core::Object? = dynamic>(self::E|constructor#_#new#tearOff::X% it) → self::E<self::E|constructor#_#new#tearOff::X%>% /* erasure=self::E|constructor#_#new#tearOff::X%, declared=! */
return self::E|constructor#<self::E|constructor#_#new#tearOff::X%>(it);
static extension-type-member method E1|constructor#(self::A<Never> it) → self::E1 /* erasure=self::A<Never> */ {
lowered final self::E1 /* erasure=self::A<Never> */ #this = it;
return #this;
}
static extension-type-member method E1|constructor#_#new#tearOff(self::A<Never> it) → self::E1 /* erasure=self::A<Never> */
return self::E1|constructor#(it);
static extension-type-member method E2|constructor#(self::B<Never> it) → self::E2 /* erasure=self::B<Never> */ {
lowered final self::E2 /* erasure=self::B<Never> */ #this = it;
return #this;
}
static extension-type-member method E2|constructor#_#new#tearOff(self::B<Never> it) → self::E2 /* erasure=self::B<Never> */
return self::E2|constructor#(it);
static extension-type-member method E3|constructor#(self::C it) → self::E3 /* erasure=self::C */ {
lowered final self::E3 /* erasure=self::C */ #this = it;
return #this;
}
static extension-type-member method E3|constructor#_#new#tearOff(self::C it) → self::E3 /* erasure=self::C */
return self::E3|constructor#(it);
static extension-type-member method E41|constructor#(self::A<Never> it) → self::E41 /* erasure=self::A<Never> */ {
lowered final self::E41 /* erasure=self::A<Never> */ #this = it;
return #this;
}
static extension-type-member method E41|constructor#_#new#tearOff(self::A<Never> it) → self::E41 /* erasure=self::A<Never> */
return self::E41|constructor#(it);
static extension-type-member method E42|constructor#(self::A<Never> it) → self::E42 /* erasure=self::A<Never> */ {
lowered final self::E42 /* erasure=self::A<Never> */ #this = it;
return #this;
}
static extension-type-member method E42|constructor#_#new#tearOff(self::A<Never> it) → self::E42 /* erasure=self::A<Never> */
return self::E42|constructor#(it);
static extension-type-member method E5|constructor#(self::E<Never>% /* erasure=Never, declared=! */ it) → self::E5% /* erasure=Never, declared=! */ {
lowered final self::E5% /* erasure=Never, declared=! */ #this = it;
return #this;
}
static extension-type-member method E5|constructor#_#new#tearOff(self::E<Never>% /* erasure=Never, declared=! */ it) → self::E5% /* erasure=Never, declared=! */
return self::E5|constructor#(it);
static extension-type-member method E61|constructor#(self::E<Never>% /* erasure=Never, declared=! */ it) → self::E61% /* erasure=Never, declared=! */ {
lowered final self::E61% /* erasure=Never, declared=! */ #this = it;
return #this;
}
static extension-type-member method E61|constructor#_#new#tearOff(self::E<Never>% /* erasure=Never, declared=! */ it) → self::E61% /* erasure=Never, declared=! */
return self::E61|constructor#(it);
static extension-type-member method E62|constructor#(self::E<Never>% /* erasure=Never, declared=! */ it) → self::E62% /* erasure=Never, declared=! */ {
lowered final self::E62% /* erasure=Never, declared=! */ #this = it;
return #this;
}
static extension-type-member method E62|constructor#_#new#tearOff(self::E<Never>% /* erasure=Never, declared=! */ it) → self::E62% /* erasure=Never, declared=! */
return self::E62|constructor#(it);
static extension-type-member method E71|constructor#(self::E<Never>% /* erasure=Never, declared=! */ it) → self::E71% /* erasure=Never, declared=! */ {
lowered final self::E71% /* erasure=Never, declared=! */ #this = it;
return #this;
}
static extension-type-member method E71|constructor#_#new#tearOff(self::E<Never>% /* erasure=Never, declared=! */ it) → self::E71% /* erasure=Never, declared=! */
return self::E71|constructor#(it);
static extension-type-member method E72|constructor#(self::E<Never>% /* erasure=Never, declared=! */ it) → self::E72% /* erasure=Never, declared=! */ {
lowered final self::E72% /* erasure=Never, declared=! */ #this = it;
return #this;
}
static extension-type-member method E72|constructor#_#new#tearOff(self::E<Never>% /* erasure=Never, declared=! */ it) → self::E72% /* erasure=Never, declared=! */
return self::E72|constructor#(it);
static extension-type-member method E73|constructor#(self::E<Never>% /* erasure=Never, declared=! */ it) → self::E73% /* erasure=Never, declared=! */ {
lowered final self::E73% /* erasure=Never, declared=! */ #this = it;
return #this;
}
static extension-type-member method E73|constructor#_#new#tearOff(self::E<Never>% /* erasure=Never, declared=! */ it) → self::E73% /* erasure=Never, declared=! */
return self::E73|constructor#(it);