| library; |
| // |
| // Problems in library: |
| // |
| // pkg/front_end/testcases/extension_types/issue53123.dart:5:18: Error: Type 'T' can't use itself as a bound. |
| // Try breaking the cycle by removing at least one of the 'extends' clauses in the cycle. |
| // extension type V<T extends V<T>>(T id) {} |
| // ^ |
| // |
| import self as self; |
| import "dart:core" as core; |
| |
| extension type V<T extends invalid-type = self::V<dynamic>% /* erasure=dynamic, declared=! */>(T% id) { |
| abstract extension-type-member representation-field get id() → T%; |
| constructor • = self::V|constructor#; |
| constructor tearoff • = self::V|constructor#_#new#tearOff; |
| } |
| static extension-type-member method V|constructor#<T extends invalid-type = self::V<dynamic>% /* erasure=dynamic, declared=! */>(self::V|constructor#::T% id) → self::V<self::V|constructor#::T%>% /* erasure=self::V|constructor#::T%, declared=! */ { |
| lowered final self::V<self::V|constructor#::T%>% /* erasure=self::V|constructor#::T%, declared=! */ #this = id; |
| return #this; |
| } |
| static extension-type-member method V|constructor#_#new#tearOff<T extends invalid-type = self::V<dynamic>% /* erasure=dynamic, declared=! */>(self::V|constructor#_#new#tearOff::T% id) → self::V<self::V|constructor#_#new#tearOff::T%>% /* erasure=self::V|constructor#_#new#tearOff::T%, declared=! */ |
| return self::V|constructor#<self::V|constructor#_#new#tearOff::T%>(id); |
| static method test(self::V<self::V<dynamic>% /* erasure=dynamic, declared=! */>% /* erasure=dynamic, declared=! */ v) → dynamic { |
| core::List<self::V<self::V<dynamic>% /* erasure=dynamic, declared=! */>% /* erasure=dynamic, declared=! */> l = core::_GrowableList::_literal1<self::V<self::V<dynamic>% /* erasure=dynamic, declared=! */>% /* erasure=dynamic, declared=! */>(v); |
| } |