| 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%> |
| ; |
| } |
| class B<X extends core::Object? = dynamic> extends self::A<self::B::X%> { |
| synthetic constructor •() → self::B<self::B::X%> |
| ; |
| } |
| class C extends self::A<core::String> { |
| synthetic constructor •() → self::C |
| ; |
| } |
| 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=! */ |
| ; |
| 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> */ |
| ; |
| 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> */ |
| ; |
| 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 */ |
| ; |
| 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> */ |
| ; |
| 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> */ |
| ; |
| 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=! */ |
| ; |
| 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=! */ |
| ; |
| 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=! */ |
| ; |
| 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=! */ |
| ; |
| 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=! */ |
| ; |
| 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=! */ |
| ; |
| 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); |