|
| 1 | +library /*isNonNullableByDefault*/; |
| 2 | +import self as self; |
| 3 | +import "dart:core" as core; |
| 4 | + |
| 5 | +abstract class A extends core::Enum { |
| 6 | + synthetic constructor •() → self::A |
| 7 | + : super core::Enum::•() |
| 8 | + ; |
| 9 | + get foo() → core::int |
| 10 | + return this.{core::Enum::index}{core::int}; |
| 11 | +} |
| 12 | +abstract class _EA&_Enum&A = core::_Enum with self::A /*isAnonymousMixin,hasConstConstructor*/ { |
| 13 | + const synthetic constructor •(core::int index, core::String _name) → self::_EA&_Enum&A |
| 14 | + : super core::_Enum::•(index, _name) |
| 15 | + ; |
| 16 | + mixin-super-stub get foo() → core::int |
| 17 | + return super.{self::A::foo}; |
| 18 | +} |
| 19 | +class EA extends self::_EA&_Enum&A /*isEnum*/ { |
| 20 | + static const field core::List<self::EA> values = #C4; |
| 21 | + static const field self::EA element = #C3; |
| 22 | + const constructor •(core::int index, core::String name) → self::EA |
| 23 | + : super self::_EA&_Enum&A::•(index, name) |
| 24 | + ; |
| 25 | + method toString() → core::String |
| 26 | + ; |
| 27 | +} |
| 28 | +abstract class B extends core::Object implements core::Enum { |
| 29 | + synthetic constructor •() → self::B |
| 30 | + : super core::Object::•() |
| 31 | + ; |
| 32 | + get foo() → core::int |
| 33 | + return this.{core::Enum::index}{core::int}; |
| 34 | +} |
| 35 | +abstract class _EB&_Enum&B = core::_Enum with self::B /*isAnonymousMixin,hasConstConstructor*/ { |
| 36 | + const synthetic constructor •(core::int index, core::String _name) → self::_EB&_Enum&B |
| 37 | + : super core::_Enum::•(index, _name) |
| 38 | + ; |
| 39 | + mixin-super-stub get foo() → core::int |
| 40 | + return super.{self::B::foo}; |
| 41 | +} |
| 42 | +class EB extends self::_EB&_Enum&B /*isEnum*/ { |
| 43 | + static const field core::List<self::EB> values = #C6; |
| 44 | + static const field self::EB element = #C5; |
| 45 | + const constructor •(core::int index, core::String name) → self::EB |
| 46 | + : super self::_EB&_Enum&B::•(index, name) |
| 47 | + ; |
| 48 | + method toString() → core::String |
| 49 | + ; |
| 50 | +} |
| 51 | +abstract class M extends core::Enum /*isMixinDeclaration*/ { |
| 52 | + get foo() → core::int |
| 53 | + return this.{core::Enum::index}{core::int}; |
| 54 | +} |
| 55 | +abstract class _EM&_Enum&M = core::_Enum with self::M /*isAnonymousMixin,hasConstConstructor*/ { |
| 56 | + const synthetic constructor •(core::int index, core::String _name) → self::_EM&_Enum&M |
| 57 | + : super core::_Enum::•(index, _name) |
| 58 | + ; |
| 59 | + mixin-super-stub get foo() → core::int |
| 60 | + return super.{self::M::foo}; |
| 61 | +} |
| 62 | +class EM extends self::_EM&_Enum&M /*isEnum*/ { |
| 63 | + static const field core::List<self::EM> values = #C8; |
| 64 | + static const field self::EM element = #C7; |
| 65 | + const constructor •(core::int index, core::String name) → self::EM |
| 66 | + : super self::_EM&_Enum&M::•(index, name) |
| 67 | + ; |
| 68 | + method toString() → core::String |
| 69 | + ; |
| 70 | +} |
| 71 | +abstract class N extends core::Object implements core::Enum /*isMixinDeclaration*/ { |
| 72 | + get foo() → core::int |
| 73 | + return this.{core::Enum::index}{core::int}; |
| 74 | +} |
| 75 | +abstract class _EN&_Enum&N = core::_Enum with self::N /*isAnonymousMixin,hasConstConstructor*/ { |
| 76 | + const synthetic constructor •(core::int index, core::String _name) → self::_EN&_Enum&N |
| 77 | + : super core::_Enum::•(index, _name) |
| 78 | + ; |
| 79 | + mixin-super-stub get foo() → core::int |
| 80 | + return super.{self::N::foo}; |
| 81 | +} |
| 82 | +class EN extends self::_EN&_Enum&N /*isEnum*/ { |
| 83 | + static const field core::List<self::EN> values = #C10; |
| 84 | + static const field self::EN element = #C9; |
| 85 | + const constructor •(core::int index, core::String name) → self::EN |
| 86 | + : super self::_EN&_Enum&N::•(index, name) |
| 87 | + ; |
| 88 | + method toString() → core::String |
| 89 | + ; |
| 90 | +} |
| 91 | +static method expectEquals(dynamic x, dynamic y) → dynamic { |
| 92 | + if(!(x =={core::Object::==}{(core::Object) → core::bool} y)) { |
| 93 | + throw "Expected '${x}' to be equal to '${y}'."; |
| 94 | + } |
| 95 | +} |
| 96 | +static method main() → dynamic { |
| 97 | + self::expectEquals(#C3.{self::_EA&_Enum&A::foo}{core::int}, #C3.{core::_Enum::index}{core::int}); |
| 98 | + self::expectEquals(#C5.{self::_EB&_Enum&B::foo}{core::int}, #C5.{core::_Enum::index}{core::int}); |
| 99 | + self::expectEquals(#C7.{self::_EM&_Enum&M::foo}{core::int}, #C7.{core::_Enum::index}{core::int}); |
| 100 | + self::expectEquals(#C9.{self::_EN&_Enum&N::foo}{core::int}, #C9.{core::_Enum::index}{core::int}); |
| 101 | +} |
| 102 | + |
| 103 | +constants { |
| 104 | + #C1 = 0 |
| 105 | + #C2 = "element" |
| 106 | + #C3 = self::EA {index:#C1, _name:#C2} |
| 107 | + #C4 = <self::EA>[#C3] |
| 108 | + #C5 = self::EB {index:#C1, _name:#C2} |
| 109 | + #C6 = <self::EB>[#C5] |
| 110 | + #C7 = self::EM {index:#C1, _name:#C2} |
| 111 | + #C8 = <self::EM>[#C7] |
| 112 | + #C9 = self::EN {index:#C1, _name:#C2} |
| 113 | + #C10 = <self::EN>[#C9] |
| 114 | +} |
| 115 | + |
| 116 | + |
| 117 | +Constructor coverage from constants: |
| 118 | +org-dartlang-testcase:///enum_as_supertype.dart: |
| 119 | +- EA. (from org-dartlang-testcase:///enum_as_supertype.dart:9:6) |
| 120 | +- _EA&_Enum&A. (from org-dartlang-testcase:///enum_as_supertype.dart:9:6) |
| 121 | +- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:76:9) |
| 122 | +- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9) |
| 123 | +- EB. (from org-dartlang-testcase:///enum_as_supertype.dart:15:6) |
| 124 | +- _EB&_Enum&B. (from org-dartlang-testcase:///enum_as_supertype.dart:15:6) |
| 125 | +- EM. (from org-dartlang-testcase:///enum_as_supertype.dart:21:6) |
| 126 | +- _EM&_Enum&M. (from org-dartlang-testcase:///enum_as_supertype.dart:21:6) |
| 127 | +- EN. (from org-dartlang-testcase:///enum_as_supertype.dart:27:6) |
| 128 | +- _EN&_Enum&N. (from org-dartlang-testcase:///enum_as_supertype.dart:27:6) |
0 commit comments