blob: 59bc638bd272896c7471acaa1171bfef3bf48358 [file] [log] [blame]
library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/general/bounds_enums.dart:11:6: Error: Inferred type argument 'A<dynamic>' doesn't conform to the bound 'Y Function(Y)' of the type variable 'Y' on 'E1'.
// Try specifying type arguments explicitly so that they conform to the bounds.
// enum E1<Y extends A<Y>> /* Error */ {
// ^
// pkg/front_end/testcases/general/bounds_enums.dart:11:9: Context: This is the type variable whose bound isn't conformed to.
// enum E1<Y extends A<Y>> /* Error */ {
// ^
// pkg/front_end/testcases/general/bounds_enums.dart:11:6: Context: If you want 'E1<A<dynamic>>' to be a super-bounded type, note that the inverted type 'E1<A<Never>>' must then satisfy its bounds, which it does not.
// - 'E1' is from 'pkg/front_end/testcases/general/bounds_enums.dart'.
// enum E1<Y extends A<Y>> /* Error */ {
// ^
//
import self as self;
import "dart:core" as core;
typedef A<invariant X extends core::Object? = dynamic> = (X%) X%;
class B<X extends core::Object? = dynamic> extends core::Object {
synthetic constructor •() self::B<self::B::X%>
;
}
class E1<Y extends (self::E1::Y) self::E1::Y = (dynamic) dynamic> extends core::_Enum /*isEnum*/ {
static const field core::List<self::E1<(dynamic) dynamic>> values = const <self::E1<dynamic>>[self::E1::e1];
static const field self::E1<Never> e1 = const self::E1::•<Never>(0, "e1");
const constructor •(core::int #index, core::String #name) → self::E1<self::E1::Y>
: super core::_Enum::•(#index, #name)
;
method toString() core::String
return "E1.${this.{core::_Enum::_name}{core::String}}";
}
class E2<Y extends self::B<self::E2::Y> = self::B<dynamic>> extends core::_Enum /*isEnum*/ {
static const field core::List<self::E2<self::B<dynamic>>> values = const <self::E2<dynamic>>[self::E2::e2];
static const field self::E2<Never> e2 = const self::E2::•<Never>(0, "e2");
const constructor •(core::int #index, core::String #name) → self::E2<self::E2::Y>
: super core::_Enum::•(#index, #name)
;
method toString() core::String
return "E2.${this.{core::_Enum::_name}{core::String}}";
}
class E3<Y extends self::E3<self::E3::Y> = self::E3<dynamic>> extends core::_Enum /*isEnum*/ {
static const field core::List<self::E3<self::E3<dynamic>>> values = const <self::E3<dynamic>>[self::E3::e3];
static const field self::E3<Never> e3 = const self::E3::•<Never>(0, "e3");
const constructor •(core::int #index, core::String #name) → self::E3<self::E3::Y>
: super core::_Enum::•(#index, #name)
;
method toString() core::String
return "E3.${this.{core::_Enum::_name}{core::String}}";
}
static method main() dynamic
;
Extra constant evaluation status:
Evaluated: ListLiteral @ org-dartlang-testcase:///bounds_enums.dart:11:6 -> ListConstant(const <E1<dynamic>*>[const E1<Never*>{_Enum.index: 0, _Enum._name: "e1"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///bounds_enums.dart:12:3 -> InstanceConstant(const E1<Never*>{_Enum.index: 0, _Enum._name: "e1"})
Evaluated: ListLiteral @ org-dartlang-testcase:///bounds_enums.dart:15:6 -> ListConstant(const <E2<dynamic>*>[const E2<Never*>{_Enum.index: 0, _Enum._name: "e2"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///bounds_enums.dart:16:3 -> InstanceConstant(const E2<Never*>{_Enum.index: 0, _Enum._name: "e2"})
Evaluated: ListLiteral @ org-dartlang-testcase:///bounds_enums.dart:19:6 -> ListConstant(const <E3<dynamic>*>[const E3<Never*>{_Enum.index: 0, _Enum._name: "e3"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///bounds_enums.dart:20:3 -> InstanceConstant(const E3<Never*>{_Enum.index: 0, _Enum._name: "e3"})
Extra constant evaluation: evaluated: 21, effectively constant: 6