blob: 570b864644168c45f7a2518759c67ff6d712737b [file] [log] [blame]
library;
//
// Problems in library:
//
// pkg/front_end/testcases/extension_types/issue53791.dart:10:39: Error: 'A' can only be implemented once.
// Try removing 1 of the occurrences.
// extension type E1(A it) implements A, A {} // Error.
// ^
//
// pkg/front_end/testcases/extension_types/issue53791.dart:12:39: Error: 'E' can only be implemented once.
// Try removing 1 of the occurrences.
// extension type E2(E it) implements E, E {} // Error.
// ^
//
// pkg/front_end/testcases/extension_types/issue53791.dart:14:39: Error: 'A' can only be implemented once.
// Try removing 3 of the occurrences.
// extension type E3(A it) implements A, TA, A, TA {} // Error.
// ^
//
// pkg/front_end/testcases/extension_types/issue53791.dart:16:39: Error: 'E' can only be implemented once.
// Try removing 3 of the occurrences.
// extension type E4(E it) implements E, TE, E, TE {} // Error.
// ^
//
import self as self;
import "dart:core" as core;
typedef TA = self::A;
typedef TE = self::E% /* erasure=core::Object?, declared=! */;
class A extends core::Object {
synthetic constructor •() self::A
: super core::Object::•()
;
}
extension type E(core::Object? it) {
abstract extension-type-member representation-field get it() core::Object?;
constructor = self::E|constructor#;
constructor tearoff = self::E|constructor#_#new#tearOff;
}
extension type E1(self::A it) implements self::A, self::A {
abstract extension-type-member representation-field get it() self::A;
constructor = self::E1|constructor#;
constructor tearoff = self::E1|constructor#_#new#tearOff;
}
extension type E2(self::E% /* erasure=core::Object?, declared=! */ it) implements self::E% /* erasure=core::Object?, declared=! */, self::E% /* erasure=core::Object?, declared=! */ {
abstract extension-type-member representation-field get it() self::E% /* erasure=core::Object?, declared=! */;
constructor = self::E2|constructor#;
constructor tearoff = self::E2|constructor#_#new#tearOff;
}
extension type E3(self::A it) implements self::A, self::A, self::A, self::A {
abstract extension-type-member representation-field get it() self::A;
constructor = self::E3|constructor#;
constructor tearoff = self::E3|constructor#_#new#tearOff;
}
extension type E4(self::E% /* erasure=core::Object?, declared=! */ it) implements self::E% /* erasure=core::Object?, declared=! */, self::E% /* erasure=core::Object?, declared=! */, self::E% /* erasure=core::Object?, declared=! */, self::E% /* erasure=core::Object?, declared=! */ {
abstract extension-type-member representation-field get it() self::E% /* erasure=core::Object?, declared=! */;
constructor = self::E4|constructor#;
constructor tearoff = self::E4|constructor#_#new#tearOff;
}
static extension-type-member method E|constructor#(core::Object? it) → self::E% /* erasure=core::Object?, declared=! */ {
lowered final self::E% /* erasure=core::Object?, declared=! */ #this = it;
return #this;
}
static extension-type-member method E|constructor#_#new#tearOff(core::Object? it) → self::E% /* erasure=core::Object?, declared=! */
return self::E|constructor#(it);
static extension-type-member method E1|constructor#(self::A it) → self::E1 /* erasure=self::A */ {
lowered final self::E1 /* erasure=self::A */ #this = it;
return #this;
}
static extension-type-member method E1|constructor#_#new#tearOff(self::A it) → self::E1 /* erasure=self::A */
return self::E1|constructor#(it);
static extension-type-member method E2|constructor#(self::E% /* erasure=core::Object?, declared=! */ it) → self::E2% /* erasure=core::Object?, declared=! */ {
lowered final self::E2% /* erasure=core::Object?, declared=! */ #this = it;
return #this;
}
static extension-type-member method E2|constructor#_#new#tearOff(self::E% /* erasure=core::Object?, declared=! */ it) → self::E2% /* erasure=core::Object?, declared=! */
return self::E2|constructor#(it);
static extension-type-member method E3|constructor#(self::A it) → self::E3 /* erasure=self::A */ {
lowered final self::E3 /* erasure=self::A */ #this = it;
return #this;
}
static extension-type-member method E3|constructor#_#new#tearOff(self::A it) → self::E3 /* erasure=self::A */
return self::E3|constructor#(it);
static extension-type-member method E4|constructor#(self::E% /* erasure=core::Object?, declared=! */ it) → self::E4% /* erasure=core::Object?, declared=! */ {
lowered final self::E4% /* erasure=core::Object?, declared=! */ #this = it;
return #this;
}
static extension-type-member method E4|constructor#_#new#tearOff(self::E% /* erasure=core::Object?, declared=! */ it) → self::E4% /* erasure=core::Object?, declared=! */
return self::E4|constructor#(it);