| library; |
| // |
| // Problems in library: |
| // |
| // pkg/front_end/testcases/extension_types/issue54097_2.dart:20:23: Error: Type 'Y' is a bound of itself via 'X'. |
| // Try breaking the cycle by removing at least one of the 'extends' clauses in the cycle. |
| // class A1<X extends Y, Y extends X> {} // Error. |
| // ^ |
| // |
| // pkg/front_end/testcases/extension_types/issue54097_2.dart:21:10: Error: Type 'X' can't use itself as a bound. |
| // Try breaking the cycle by removing at least one of the 'extends' clauses in the cycle. |
| // class A2<X extends X> {} // Error. |
| // ^ |
| // |
| // pkg/front_end/testcases/extension_types/issue54097_2.dart:22:26: Error: Type 'Z' is a bound of itself via 'Y'. |
| // Try breaking the cycle by removing at least one of the 'extends' clauses in the cycle. |
| // class A3<X, Y extends Z, Z extends Y> {} // Error. |
| // ^ |
| // |
| // pkg/front_end/testcases/extension_types/issue54097_2.dart:24:12: Error: Type 'X' can't use itself as a bound. |
| // Try breaking the cycle by removing at least one of the 'extends' clauses in the cycle. |
| // class AF11<X extends F1<X>> {} // Error. |
| // ^ |
| // |
| // pkg/front_end/testcases/extension_types/issue54097_2.dart:25:12: Error: Type 'X' can't use itself as a bound. |
| // Try breaking the cycle by removing at least one of the 'extends' clauses in the cycle. |
| // class AF12<X extends F2<X>> {} // Error. |
| // ^ |
| // |
| // pkg/front_end/testcases/extension_types/issue54097_2.dart:26:12: Error: Type 'X' can't use itself as a bound. |
| // Try breaking the cycle by removing at least one of the 'extends' clauses in the cycle. |
| // class AF13<X extends F3<X>> {} // Error. |
| // ^ |
| // |
| // pkg/front_end/testcases/extension_types/issue54097_2.dart:27:12: Error: Type 'X' can't use itself as a bound. |
| // Try breaking the cycle by removing at least one of the 'extends' clauses in the cycle. |
| // class AF14<X extends F4<X>> {} // Error. |
| // ^ |
| // |
| // pkg/front_end/testcases/extension_types/issue54097_2.dart:28:12: Error: Type 'X' can't use itself as a bound. |
| // Try breaking the cycle by removing at least one of the 'extends' clauses in the cycle. |
| // class AF15<X extends F5<X>> {} // Error. |
| // ^ |
| // |
| // pkg/front_end/testcases/extension_types/issue54097_2.dart:29:12: Error: Type 'X' can't use itself as a bound. |
| // Try breaking the cycle by removing at least one of the 'extends' clauses in the cycle. |
| // class AF16<X extends F6<X>> {} // Error. |
| // ^ |
| // |
| // pkg/front_end/testcases/extension_types/issue54097_2.dart:30:12: Error: Type 'X' can't use itself as a bound. |
| // Try breaking the cycle by removing at least one of the 'extends' clauses in the cycle. |
| // class AF17<X extends F7<X>> {} // Error. |
| // ^ |
| // |
| // pkg/front_end/testcases/extension_types/issue54097_2.dart:31:12: Error: Type 'X' can't use itself as a bound. |
| // Try breaking the cycle by removing at least one of the 'extends' clauses in the cycle. |
| // class AE11<X extends E1<X>> {} // Error. |
| // ^ |
| // |
| // pkg/front_end/testcases/extension_types/issue54097_2.dart:32:12: Error: Type 'X' can't use itself as a bound. |
| // Try breaking the cycle by removing at least one of the 'extends' clauses in the cycle. |
| // class AE12<X extends E2<X>> {} // Error. |
| // ^ |
| // |
| // pkg/front_end/testcases/extension_types/issue54097_2.dart:33:12: Error: Type 'X' can't use itself as a bound. |
| // Try breaking the cycle by removing at least one of the 'extends' clauses in the cycle. |
| // class AE13<X extends E3<X>> {} // Error. |
| // ^ |
| // |
| // pkg/front_end/testcases/extension_types/issue54097_2.dart:34:12: Error: Type 'X' can't use itself as a bound. |
| // Try breaking the cycle by removing at least one of the 'extends' clauses in the cycle. |
| // class AE14<X extends E4<X>> {} // Error. |
| // ^ |
| // |
| // pkg/front_end/testcases/extension_types/issue54097_2.dart:35:12: Error: Type 'X' can't use itself as a bound. |
| // Try breaking the cycle by removing at least one of the 'extends' clauses in the cycle. |
| // class AE15<X extends E5<X>> {} // Error. |
| // ^ |
| // |
| // pkg/front_end/testcases/extension_types/issue54097_2.dart:36:12: Error: Type 'X' can't use itself as a bound. |
| // Try breaking the cycle by removing at least one of the 'extends' clauses in the cycle. |
| // class AE16<X extends E6<X>> {} // Error. |
| // ^ |
| // |
| // pkg/front_end/testcases/extension_types/issue54097_2.dart:37:12: Error: Type 'X' can't use itself as a bound. |
| // Try breaking the cycle by removing at least one of the 'extends' clauses in the cycle. |
| // class AE17<X extends E7<X>> {} // Error. |
| // ^ |
| // |
| // pkg/front_end/testcases/extension_types/issue54097_2.dart:40:4: Error: Type 'X' can't use itself as a bound. |
| // Try breaking the cycle by removing at least one of the 'extends' clauses in the cycle. |
| // <X extends F1<X>>() {}; // Error. |
| // ^ |
| // |
| // pkg/front_end/testcases/extension_types/issue54097_2.dart:41:4: Error: Type 'X' can't use itself as a bound. |
| // Try breaking the cycle by removing at least one of the 'extends' clauses in the cycle. |
| // <X extends F2<X>>() {}; // Error. |
| // ^ |
| // |
| // pkg/front_end/testcases/extension_types/issue54097_2.dart:42:4: Error: Type 'X' can't use itself as a bound. |
| // Try breaking the cycle by removing at least one of the 'extends' clauses in the cycle. |
| // <X extends F3<X>>() {}; // Error. |
| // ^ |
| // |
| // pkg/front_end/testcases/extension_types/issue54097_2.dart:43:4: Error: Type 'X' can't use itself as a bound. |
| // Try breaking the cycle by removing at least one of the 'extends' clauses in the cycle. |
| // <X extends F4<X>>() {}; // Error. |
| // ^ |
| // |
| // pkg/front_end/testcases/extension_types/issue54097_2.dart:44:4: Error: Type 'X' can't use itself as a bound. |
| // Try breaking the cycle by removing at least one of the 'extends' clauses in the cycle. |
| // <X extends F5<X>>() {}; // Error. |
| // ^ |
| // |
| // pkg/front_end/testcases/extension_types/issue54097_2.dart:45:4: Error: Type 'X' can't use itself as a bound. |
| // Try breaking the cycle by removing at least one of the 'extends' clauses in the cycle. |
| // <X extends F6<X>>() {}; // Error. |
| // ^ |
| // |
| // pkg/front_end/testcases/extension_types/issue54097_2.dart:46:4: Error: Type 'X' can't use itself as a bound. |
| // Try breaking the cycle by removing at least one of the 'extends' clauses in the cycle. |
| // <X extends F7<X>>() {}; // Error. |
| // ^ |
| // |
| // pkg/front_end/testcases/extension_types/issue54097_2.dart:47:4: Error: Type 'X' can't use itself as a bound. |
| // Try breaking the cycle by removing at least one of the 'extends' clauses in the cycle. |
| // <X extends E1<X>>() {}; // Error. |
| // ^ |
| // |
| // pkg/front_end/testcases/extension_types/issue54097_2.dart:48:4: Error: Type 'X' can't use itself as a bound. |
| // Try breaking the cycle by removing at least one of the 'extends' clauses in the cycle. |
| // <X extends E2<X>>() {}; // Error. |
| // ^ |
| // |
| // pkg/front_end/testcases/extension_types/issue54097_2.dart:49:4: Error: Type 'X' can't use itself as a bound. |
| // Try breaking the cycle by removing at least one of the 'extends' clauses in the cycle. |
| // <X extends E3<X>>() {}; // Error. |
| // ^ |
| // |
| // pkg/front_end/testcases/extension_types/issue54097_2.dart:50:4: Error: Type 'X' can't use itself as a bound. |
| // Try breaking the cycle by removing at least one of the 'extends' clauses in the cycle. |
| // <X extends E4<X>>() {}; // Error. |
| // ^ |
| // |
| // pkg/front_end/testcases/extension_types/issue54097_2.dart:51:4: Error: Type 'X' can't use itself as a bound. |
| // Try breaking the cycle by removing at least one of the 'extends' clauses in the cycle. |
| // <X extends E5<X>>() {}; // Error. |
| // ^ |
| // |
| // pkg/front_end/testcases/extension_types/issue54097_2.dart:52:4: Error: Type 'X' can't use itself as a bound. |
| // Try breaking the cycle by removing at least one of the 'extends' clauses in the cycle. |
| // <X extends E6<X>>() {}; // Error. |
| // ^ |
| // |
| // pkg/front_end/testcases/extension_types/issue54097_2.dart:53:4: Error: Type 'X' can't use itself as a bound. |
| // Try breaking the cycle by removing at least one of the 'extends' clauses in the cycle. |
| // <X extends E7<X>>() {}; // Error. |
| // ^ |
| // |
| import self as self; |
| import "dart:core" as core; |
| |
| typedef F1<X extends core::Object? = dynamic> = X%; |
| typedef F2<X extends core::Object? = dynamic> = self::E1<X%>% /* erasure=X%, declared=! */; |
| typedef F3<X extends core::Object? = dynamic> = self::E1<X%>% /* erasure=X%, declared=! */; |
| typedef F4<X extends core::Object? = dynamic> = self::E1<X%>% /* erasure=X%, declared=! */; |
| typedef F5<X extends core::Object? = dynamic> = self::E1<X%>% /* erasure=X%, declared=! */; |
| typedef F6<X extends core::Object? = dynamic> = X%; |
| typedef F7<X extends core::Object? = dynamic> = self::E1<self::E1<X%>% /* erasure=X%, declared=! */>% /* erasure=X%, declared=! */; |
| class A1<X extends self::A1::Y% = dynamic, Y extends invalid-type = dynamic> extends core::Object { |
| synthetic constructor •() → self::A1<self::A1::X%, self::A1::Y%> |
| : super core::Object::•() |
| ; |
| } |
| class A2<X extends invalid-type = dynamic> extends core::Object { |
| synthetic constructor •() → self::A2<self::A2::X%> |
| : super core::Object::•() |
| ; |
| } |
| class A3<X extends core::Object? = dynamic, Y extends self::A3::Z% = dynamic, Z extends invalid-type = dynamic> extends core::Object { |
| synthetic constructor •() → self::A3<self::A3::X%, self::A3::Y%, self::A3::Z%> |
| : super core::Object::•() |
| ; |
| } |
| class AF11<X extends invalid-type = dynamic> extends core::Object { |
| synthetic constructor •() → self::AF11<self::AF11::X%> |
| : super core::Object::•() |
| ; |
| } |
| class AF12<X extends invalid-type = self::E1<dynamic>% /* erasure=dynamic, declared=! */> extends core::Object { |
| synthetic constructor •() → self::AF12<self::AF12::X%> |
| : super core::Object::•() |
| ; |
| } |
| class AF13<X extends invalid-type = self::E1<dynamic>% /* erasure=dynamic, declared=! */> extends core::Object { |
| synthetic constructor •() → self::AF13<self::AF13::X%> |
| : super core::Object::•() |
| ; |
| } |
| class AF14<X extends invalid-type = self::E1<dynamic>% /* erasure=dynamic, declared=! */> extends core::Object { |
| synthetic constructor •() → self::AF14<self::AF14::X%> |
| : super core::Object::•() |
| ; |
| } |
| class AF15<X extends invalid-type = self::E1<dynamic>% /* erasure=dynamic, declared=! */> extends core::Object { |
| synthetic constructor •() → self::AF15<self::AF15::X%> |
| : super core::Object::•() |
| ; |
| } |
| class AF16<X extends invalid-type = dynamic> extends core::Object { |
| synthetic constructor •() → self::AF16<self::AF16::X%> |
| : super core::Object::•() |
| ; |
| } |
| class AF17<X extends invalid-type = self::E1<self::E1<dynamic>% /* erasure=dynamic, declared=! */>% /* erasure=dynamic, declared=! */> extends core::Object { |
| synthetic constructor •() → self::AF17<self::AF17::X%> |
| : super core::Object::•() |
| ; |
| } |
| class AE11<X extends invalid-type = self::E1<dynamic>% /* erasure=dynamic, declared=! */> extends core::Object { |
| synthetic constructor •() → self::AE11<self::AE11::X%> |
| : super core::Object::•() |
| ; |
| } |
| class AE12<X extends invalid-type = self::E2<dynamic>% /* erasure=dynamic, declared=! */> extends core::Object { |
| synthetic constructor •() → self::AE12<self::AE12::X%> |
| : super core::Object::•() |
| ; |
| } |
| class AE13<X extends invalid-type = self::E3<dynamic>% /* erasure=dynamic, declared=! */> extends core::Object { |
| synthetic constructor •() → self::AE13<self::AE13::X%> |
| : super core::Object::•() |
| ; |
| } |
| class AE14<X extends invalid-type = self::E4<dynamic>% /* erasure=dynamic, declared=! */> extends core::Object { |
| synthetic constructor •() → self::AE14<self::AE14::X%> |
| : super core::Object::•() |
| ; |
| } |
| class AE15<X extends invalid-type = self::E5<dynamic>% /* erasure=dynamic, declared=! */> extends core::Object { |
| synthetic constructor •() → self::AE15<self::AE15::X%> |
| : super core::Object::•() |
| ; |
| } |
| class AE16<X extends invalid-type = self::E6<dynamic>% /* erasure=dynamic, declared=! */> extends core::Object { |
| synthetic constructor •() → self::AE16<self::AE16::X%> |
| : super core::Object::•() |
| ; |
| } |
| class AE17<X extends invalid-type = self::E7<dynamic>% /* erasure=dynamic, declared=! */> extends core::Object { |
| synthetic constructor •() → self::AE17<self::AE17::X%> |
| : super core::Object::•() |
| ; |
| } |
| extension type E1<X extends core::Object? = dynamic>(X% it) { |
| abstract extension-type-member representation-field get it() → X%; |
| constructor • = self::E1|constructor#; |
| constructor tearoff • = self::E1|constructor#_#new#tearOff; |
| } |
| extension type E2<X extends core::Object? = dynamic>(X% it) { |
| abstract extension-type-member representation-field get it() → X%; |
| constructor • = self::E2|constructor#; |
| constructor tearoff • = self::E2|constructor#_#new#tearOff; |
| } |
| extension type E3<X extends core::Object? = dynamic>(self::E1<X%>% /* erasure=X%, declared=! */ it) { |
| abstract extension-type-member representation-field get it() → self::E1<X%>% /* erasure=X%, declared=! */; |
| constructor • = self::E3|constructor#; |
| constructor tearoff • = self::E3|constructor#_#new#tearOff; |
| } |
| extension type E4<X extends core::Object? = dynamic>(self::E1<X%>% /* erasure=X%, declared=! */ it) { |
| abstract extension-type-member representation-field get it() → self::E1<X%>% /* erasure=X%, declared=! */; |
| constructor • = self::E4|constructor#; |
| constructor tearoff • = self::E4|constructor#_#new#tearOff; |
| } |
| extension type E5<X extends core::Object? = dynamic>(self::E1<self::E1<X%>% /* erasure=X%, declared=! */>% /* erasure=X%, declared=! */ it) { |
| abstract extension-type-member representation-field get it() → self::E1<self::E1<X%>% /* erasure=X%, declared=! */>% /* erasure=X%, declared=! */; |
| constructor • = self::E5|constructor#; |
| constructor tearoff • = self::E5|constructor#_#new#tearOff; |
| } |
| extension type E6<X extends core::Object? = dynamic>(self::E1<self::E1<X%>% /* erasure=X%, declared=! */>% /* erasure=X%, declared=! */ it) { |
| abstract extension-type-member representation-field get it() → self::E1<self::E1<X%>% /* erasure=X%, declared=! */>% /* erasure=X%, declared=! */; |
| constructor • = self::E6|constructor#; |
| constructor tearoff • = self::E6|constructor#_#new#tearOff; |
| } |
| extension type E7<X extends core::Object? = dynamic>(X% it) { |
| abstract extension-type-member representation-field get it() → X%; |
| constructor • = self::E7|constructor#; |
| constructor tearoff • = self::E7|constructor#_#new#tearOff; |
| } |
| static extension-type-member method E1|constructor#<X extends core::Object? = dynamic>(self::E1|constructor#::X% it) → self::E1<self::E1|constructor#::X%>% /* erasure=self::E1|constructor#::X%, declared=! */ { |
| lowered final self::E1<self::E1|constructor#::X%>% /* erasure=self::E1|constructor#::X%, declared=! */ #this = it; |
| return #this; |
| } |
| static extension-type-member method E1|constructor#_#new#tearOff<X extends core::Object? = dynamic>(self::E1|constructor#_#new#tearOff::X% it) → self::E1<self::E1|constructor#_#new#tearOff::X%>% /* erasure=self::E1|constructor#_#new#tearOff::X%, declared=! */ |
| return self::E1|constructor#<self::E1|constructor#_#new#tearOff::X%>(it); |
| static extension-type-member method E2|constructor#<X extends core::Object? = dynamic>(self::E2|constructor#::X% it) → self::E2<self::E2|constructor#::X%>% /* erasure=self::E2|constructor#::X%, declared=! */ { |
| lowered final self::E2<self::E2|constructor#::X%>% /* erasure=self::E2|constructor#::X%, declared=! */ #this = it; |
| return #this; |
| } |
| static extension-type-member method E2|constructor#_#new#tearOff<X extends core::Object? = dynamic>(self::E2|constructor#_#new#tearOff::X% it) → self::E2<self::E2|constructor#_#new#tearOff::X%>% /* erasure=self::E2|constructor#_#new#tearOff::X%, declared=! */ |
| return self::E2|constructor#<self::E2|constructor#_#new#tearOff::X%>(it); |
| static extension-type-member method E3|constructor#<X extends core::Object? = dynamic>(self::E1<self::E3|constructor#::X%>% /* erasure=self::E3|constructor#::X%, declared=! */ it) → self::E3<self::E3|constructor#::X%>% /* erasure=self::E3|constructor#::X%, declared=! */ { |
| lowered final self::E3<self::E3|constructor#::X%>% /* erasure=self::E3|constructor#::X%, declared=! */ #this = it; |
| return #this; |
| } |
| static extension-type-member method E3|constructor#_#new#tearOff<X extends core::Object? = dynamic>(self::E1<self::E3|constructor#_#new#tearOff::X%>% /* erasure=self::E3|constructor#_#new#tearOff::X%, declared=! */ it) → self::E3<self::E3|constructor#_#new#tearOff::X%>% /* erasure=self::E3|constructor#_#new#tearOff::X%, declared=! */ |
| return self::E3|constructor#<self::E3|constructor#_#new#tearOff::X%>(it); |
| static extension-type-member method E4|constructor#<X extends core::Object? = dynamic>(self::E1<self::E4|constructor#::X%>% /* erasure=self::E4|constructor#::X%, declared=! */ it) → self::E4<self::E4|constructor#::X%>% /* erasure=self::E4|constructor#::X%, declared=! */ { |
| lowered final self::E4<self::E4|constructor#::X%>% /* erasure=self::E4|constructor#::X%, declared=! */ #this = it; |
| return #this; |
| } |
| static extension-type-member method E4|constructor#_#new#tearOff<X extends core::Object? = dynamic>(self::E1<self::E4|constructor#_#new#tearOff::X%>% /* erasure=self::E4|constructor#_#new#tearOff::X%, declared=! */ it) → self::E4<self::E4|constructor#_#new#tearOff::X%>% /* erasure=self::E4|constructor#_#new#tearOff::X%, declared=! */ |
| return self::E4|constructor#<self::E4|constructor#_#new#tearOff::X%>(it); |
| static extension-type-member method E5|constructor#<X extends core::Object? = dynamic>(self::E1<self::E1<self::E5|constructor#::X%>% /* erasure=self::E5|constructor#::X%, declared=! */>% /* erasure=self::E5|constructor#::X%, declared=! */ it) → self::E5<self::E5|constructor#::X%>% /* erasure=self::E5|constructor#::X%, declared=! */ { |
| lowered final self::E5<self::E5|constructor#::X%>% /* erasure=self::E5|constructor#::X%, declared=! */ #this = it; |
| return #this; |
| } |
| static extension-type-member method E5|constructor#_#new#tearOff<X extends core::Object? = dynamic>(self::E1<self::E1<self::E5|constructor#_#new#tearOff::X%>% /* erasure=self::E5|constructor#_#new#tearOff::X%, declared=! */>% /* erasure=self::E5|constructor#_#new#tearOff::X%, declared=! */ it) → self::E5<self::E5|constructor#_#new#tearOff::X%>% /* erasure=self::E5|constructor#_#new#tearOff::X%, declared=! */ |
| return self::E5|constructor#<self::E5|constructor#_#new#tearOff::X%>(it); |
| static extension-type-member method E6|constructor#<X extends core::Object? = dynamic>(self::E1<self::E1<self::E6|constructor#::X%>% /* erasure=self::E6|constructor#::X%, declared=! */>% /* erasure=self::E6|constructor#::X%, declared=! */ it) → self::E6<self::E6|constructor#::X%>% /* erasure=self::E6|constructor#::X%, declared=! */ { |
| lowered final self::E6<self::E6|constructor#::X%>% /* erasure=self::E6|constructor#::X%, declared=! */ #this = it; |
| return #this; |
| } |
| static extension-type-member method E6|constructor#_#new#tearOff<X extends core::Object? = dynamic>(self::E1<self::E1<self::E6|constructor#_#new#tearOff::X%>% /* erasure=self::E6|constructor#_#new#tearOff::X%, declared=! */>% /* erasure=self::E6|constructor#_#new#tearOff::X%, declared=! */ it) → self::E6<self::E6|constructor#_#new#tearOff::X%>% /* erasure=self::E6|constructor#_#new#tearOff::X%, declared=! */ |
| return self::E6|constructor#<self::E6|constructor#_#new#tearOff::X%>(it); |
| static extension-type-member method E7|constructor#<X extends core::Object? = dynamic>(self::E7|constructor#::X% it) → self::E7<self::E7|constructor#::X%>% /* erasure=self::E7|constructor#::X%, declared=! */ { |
| lowered final self::E7<self::E7|constructor#::X%>% /* erasure=self::E7|constructor#::X%, declared=! */ #this = it; |
| return #this; |
| } |
| static extension-type-member method E7|constructor#_#new#tearOff<X extends core::Object? = dynamic>(self::E7|constructor#_#new#tearOff::X% it) → self::E7<self::E7|constructor#_#new#tearOff::X%>% /* erasure=self::E7|constructor#_#new#tearOff::X%, declared=! */ |
| return self::E7|constructor#<self::E7|constructor#_#new#tearOff::X%>(it); |
| static method test() → dynamic { |
| <X extends invalid-type>() → Null {}; |
| <X extends invalid-type>() → Null {}; |
| <X extends invalid-type>() → Null {}; |
| <X extends invalid-type>() → Null {}; |
| <X extends invalid-type>() → Null {}; |
| <X extends invalid-type>() → Null {}; |
| <X extends invalid-type>() → Null {}; |
| <X extends invalid-type>() → Null {}; |
| <X extends invalid-type>() → Null {}; |
| <X extends invalid-type>() → Null {}; |
| <X extends invalid-type>() → Null {}; |
| <X extends invalid-type>() → Null {}; |
| <X extends invalid-type>() → Null {}; |
| <X extends invalid-type>() → Null {}; |
| } |
| static method _#F7#new#tearOff<X extends core::Object? = dynamic>(self::E1<self::_#F7#new#tearOff::X%>% /* erasure=self::_#F7#new#tearOff::X%, declared=! */ it) → self::E1<self::E1<self::_#F7#new#tearOff::X%>% /* erasure=self::_#F7#new#tearOff::X%, declared=! */>% /* erasure=self::_#F7#new#tearOff::X%, declared=! */ |
| return self::E1|constructor#<self::E1<self::_#F7#new#tearOff::X%>% /* erasure=self::_#F7#new#tearOff::X%, declared=! */>(it); |