blob: 07f9d8f8699e0058dc9fb96fb2f09cf984ee30d1 [file] [log] [blame]
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 = <self::V<self::V<dynamic>% /* erasure=dynamic, declared=! */>% /* erasure=dynamic, declared=! */>[v];
}