| 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); |