blob: 6b561e7276bb2d04a0fb8115457c6c296ebddad2 [file] [log] [blame]
library;
import self as self;
import "dart:core" as core;
import "dart:_internal" as _in;
class E extends core::_Enum /*isEnum*/ {
static const field core::List<self::E> values = #C10;
enum-element static const field self::E a = #C3;
enum-element static const field self::E b = #C6;
enum-element static const field self::E c = #C9;
const synthetic constructor •(core::int #index, core::String #name) → self::E
: super core::_Enum::•(#index, #name)
;
method _enumToString() core::String
return "E.${this.{core::_Enum::_name}{core::String}}";
}
class PrimitiveEquals extends core::Object /*hasConstConstructor*/ {
final field core::int field;
const constructor •(core::int field) self::PrimitiveEquals
: self::PrimitiveEquals::field = field, super core::Object::•()
;
}
class NonPrimitiveEquals extends core::Object /*hasConstConstructor*/ {
final field core::int field;
const constructor •(core::int field) self::NonPrimitiveEquals
: self::NonPrimitiveEquals::field = field, super core::Object::•()
;
get hashCode() core::int
return this.{self::NonPrimitiveEquals::field}{core::int}.{core::num::hashCode}{core::int};
operator ==(core::Object other) core::bool {
if(core::identical(this, other))
return true;
return other is self::NonPrimitiveEquals && this.{self::NonPrimitiveEquals::field}{core::int} =={core::num::==}{(core::Object) core::bool} other{self::NonPrimitiveEquals}.{self::NonPrimitiveEquals::field}{core::int};
}
}
static method switchStatement(dynamic o) dynamic {
#L1:
{
final synthesized dynamic #0#0 = o;
synthesized core::int #0#2;
synthesized core::bool #0#2#isSet = false;
dynamic #t1;
{
lowered hoisted dynamic a#case#0;
lowered hoisted dynamic a#case#1;
if(#0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C4 && (let final dynamic #t3 = a#case#0 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true) && a#case#0{dynamic}.>(5) as{TypeError} core::bool && (let final dynamic #t4 = #t1 = a#case#0 in true) || #0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t5 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && (let final dynamic #t6 = a#case#1 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true) && a#case#1{dynamic}.<(5) as{TypeError} core::bool && (let final dynamic #t7 = #t1 = a#case#1 in true)) {
dynamic a = #t1{dynamic};
{
core::print(a);
break #L1;
}
}
}
{
hoisted dynamic a;
if(#0#0 is core::Map<dynamic, dynamic> && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C4){(core::Object?) → core::bool} && (let final dynamic #t8 = a = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic} in true)) {
{
core::print(a);
}
}
}
}
}
static method switchStatementWithLabel(dynamic o) dynamic {
#L2:
{
final synthesized dynamic #0#0 = o;
synthesized core::int #0#2;
synthesized core::bool #0#2#isSet = false;
dynamic #t9;
{
lowered hoisted dynamic a#case#0;
lowered hoisted dynamic a#case#1;
if(#0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t10 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C4 && (let final dynamic #t11 = a#case#0 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true) && a#case#0{dynamic}.>(5) as{TypeError} core::bool && (let final dynamic #t12 = #t9 = a#case#0 in true) || #0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t13 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && (let final dynamic #t14 = a#case#1 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true) && a#case#1{dynamic}.<(5) as{TypeError} core::bool && (let final dynamic #t15 = #t9 = a#case#1 in true)) {
dynamic a = #t9{dynamic};
{
core::print(a);
break #L2;
}
}
}
{
hoisted dynamic a;
if(#0#0 is core::Map<dynamic, dynamic> && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C4){(core::Object?) → core::bool} && (let final dynamic #t16 = a = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic} in true)) {
{
core::print(a);
break #L2;
}
}
}
{
if(#C4 =={core::num::==}{(core::Object) core::bool} #0#0) {
{
core::print(1);
}
}
}
}
}
static method switchStatementWithContinue(dynamic o) dynamic {
#L3:
{
core::int #t17 = 1.{core::int::unary-}(){() → core::int};
final synthesized dynamic #0#0 = o;
synthesized core::int #0#2;
synthesized core::bool #0#2#isSet = false;
dynamic #t18;
#L4:
{
{
lowered hoisted dynamic a#case#0;
lowered hoisted dynamic a#case#1;
if(#0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t19 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C4 && (let final dynamic #t20 = a#case#0 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true) && a#case#0{dynamic}.>(5) as{TypeError} core::bool && (let final dynamic #t21 = #t18 = a#case#0 in true) || #0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t22 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && (let final dynamic #t23 = a#case#1 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true) && a#case#1{dynamic}.<(5) as{TypeError} core::bool && (let final dynamic #t24 = #t18 = a#case#1 in true)) {
dynamic a = #t18{dynamic};
{
core::print(a);
break #L3;
}
}
}
{
hoisted dynamic a;
if(#0#0 is core::Map<dynamic, dynamic> && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C4){(core::Object?) → core::bool} && (let final dynamic #t25 = a = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic} in true)) {
{
core::print(a);
#t17 = 0;
break #L4;
}
}
}
{
if(#C1 =={core::num::==}{(core::Object) core::bool} #0#0) {
{
core::print(o);
break #L3;
}
}
}
{
if(#C4 =={core::num::==}{(core::Object) core::bool} #0#0) {
#t17 = 0;
break #L4;
}
}
{
if(#C7 =={core::num::==}{(core::Object) core::bool} #0#0) {
#t17 = 1;
break #L4;
}
}
}
switch(#t17) /* dynamic */ {
#L5:
case #C1:
{
{
core::print(1);
continue #L6;
}
}
#L6:
case #C4:
{
{
core::print(2);
}
}
}
}
}
static method switchStatementWithContinueNested(dynamic o1, dynamic o2) dynamic {
#L7:
{
core::int #t26 = 1.{core::int::unary-}(){() → core::int};
final synthesized dynamic #2#0 = o1;
#L8:
{
{
hoisted dynamic a;
if(#2#0 is core::List<dynamic> && #2#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C4 && (let final dynamic #t27 = a = #2#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true)) {
{
core::print(a);
break #L7;
}
}
}
{
hoisted dynamic a;
if(#2#0 is core::Map<dynamic, dynamic> && #2#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C4){(core::Object?) → core::bool} && (let final dynamic #t28 = a = #2#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic} in true)) {
{
core::print(a);
#L9:
{
core::int #t29 = 1.{core::int::unary-}(){() → core::int};
final synthesized dynamic #0#0 = o2;
synthesized core::int #0#2;
synthesized core::bool #0#2#isSet = false;
dynamic #t30;
#L10:
{
{
lowered hoisted dynamic a#case#0;
lowered hoisted dynamic a#case#1;
if(#0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t31 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C4 && (let final dynamic #t32 = a#case#0 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true) && a#case#0{dynamic}.>(5) as{TypeError} core::bool && (let final dynamic #t33 = #t30 = a#case#0 in true) || #0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t34 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && (let final dynamic #t35 = a#case#1 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true) && a#case#1{dynamic}.<(5) as{TypeError} core::bool && (let final dynamic #t36 = #t30 = a#case#1 in true)) {
dynamic a = #t30{dynamic};
{
core::print(a);
break #L9;
}
}
}
{
hoisted dynamic a;
if(#0#0 is core::Map<dynamic, dynamic> && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C4){(core::Object?) → core::bool} && (let final dynamic #t37 = a = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic} in true)) {
{
core::print(a);
#t26 = 1;
break #L8;
}
}
}
{
if(#C1 =={core::num::==}{(core::Object) core::bool} #0#0) {
{
core::print(o2);
#t29 = 0;
break #L10;
}
}
}
{
if(#C4 =={core::num::==}{(core::Object) core::bool} #0#0) {
#t29 = 0;
break #L10;
}
}
{
if(#C7 =={core::num::==}{(core::Object) core::bool} #0#0) {
#t29 = 1;
break #L10;
}
}
}
switch(#t29) /* dynamic */ {
#L11:
case #C1:
{
{
core::print(1);
continue #L12;
}
}
#L12:
case #C4:
{
{
core::print(2);
#t26 = 0;
break #L8;
}
}
}
}
break #L7;
}
}
}
{
if(#C1 =={core::num::==}{(core::Object) core::bool} #2#0) {
{
core::print(o1);
break #L7;
}
}
}
{
if(#C4 =={core::num::==}{(core::Object) core::bool} #2#0) {
#t26 = 0;
break #L8;
}
}
{
if(#C7 =={core::num::==}{(core::Object) core::bool} #2#0) {
#t26 = 1;
break #L8;
}
}
}
switch(#t26) /* dynamic */ {
#L13:
case #C1:
{
{
core::print(1);
continue #L14;
}
}
#L14:
case #C4:
{
{
core::print(2);
#L15:
{
core::int #t38 = 1.{core::int::unary-}(){() → core::int};
final synthesized dynamic #1#0 = o2;
synthesized core::int #1#2;
synthesized core::bool #1#2#isSet = false;
dynamic #t39;
#L16:
{
{
lowered hoisted dynamic a#case#0;
lowered hoisted dynamic a#case#1;
if(#1#0 is core::List<dynamic> && (#1#2#isSet ?{core::int} #1#2{core::int} : let final core::bool #t40 = #1#2#isSet = true in #1#2 = #1#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C4 && (let final dynamic #t41 = a#case#0 = #1#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true) && a#case#0{dynamic}.>(5) as{TypeError} core::bool && (let final dynamic #t42 = #t39 = a#case#0 in true) || #1#0 is core::List<dynamic> && (#1#2#isSet ?{core::int} #1#2{core::int} : let final core::bool #t43 = #1#2#isSet = true in #1#2 = #1#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && (let final dynamic #t44 = a#case#1 = #1#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true) && a#case#1{dynamic}.<(5) as{TypeError} core::bool && (let final dynamic #t45 = #t39 = a#case#1 in true)) {
dynamic a = #t39{dynamic};
{
core::print(a);
break #L15;
}
}
}
{
hoisted dynamic a;
if(#1#0 is core::Map<dynamic, dynamic> && #1#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C4){(core::Object?) → core::bool} && (let final dynamic #t46 = a = #1#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic} in true)) {
{
core::print(a);
continue #L14;
}
}
}
{
if(#C1 =={core::num::==}{(core::Object) core::bool} #1#0) {
{
core::print(o2);
#t38 = 0;
break #L16;
}
}
}
{
if(#C4 =={core::num::==}{(core::Object) core::bool} #1#0) {
#t38 = 0;
break #L16;
}
}
{
if(#C7 =={core::num::==}{(core::Object) core::bool} #1#0) {
#t38 = 1;
break #L16;
}
}
}
switch(#t38) /* dynamic */ {
#L17:
case #C1:
{
{
core::print(1);
continue #L18;
}
}
#L18:
case #C4:
{
{
core::print(2);
continue #L13;
}
}
}
}
}
}
}
}
}
static method switchStatementEnum(self::E o) dynamic {
#L19:
switch(o) /* isExplicitlyExhaustive, self::E */ {
#L20:
case #C3:
{
core::print("a");
break #L19;
}
#L21:
case #C6:
{
core::print("b");
break #L19;
}
#L22:
case #C9:
{
core::print("c");
break #L19;
}
#L23:
default:
throw{for-error-handling} new _in::ReachabilityError::•("`null` encountered as case in a switch statement with a non-nullable type.");
}
}
static method switchStatementEnumWithGuard(self::E o) dynamic {
#L24:
{
final synthesized self::E #0#0 = o;
{
if(#C3 =={core::Object::==}{(core::Object) core::bool} #0#0 && true) {
{
core::print("a");
break #L24;
}
}
}
{
if(#C6 =={core::Object::==}{(core::Object) core::bool} #0#0) {
{
core::print("b");
break #L24;
}
}
}
{
if(true) {
}
break #L24;
}
throw{for-error-handling} new _in::ReachabilityError::•("`null` encountered as case in a switch statement with a non-nullable type.");
}
}
static method switchStatementEnumWithLabel(self::E o) dynamic {
#L25:
switch(o) /* isExplicitlyExhaustive, self::E */ {
#L26:
case #C3:
{
core::print("a");
break #L25;
}
#L27:
case #C6:
{
core::print("b");
break #L25;
}
#L28:
case #C9:
{
core::print("c");
break #L25;
}
#L29:
default:
throw{for-error-handling} new _in::ReachabilityError::•("`null` encountered as case in a switch statement with a non-nullable type.");
}
}
static method switchStatementEnumWithContinue(self::E o) dynamic {
#L30:
switch(o) /* isExplicitlyExhaustive, self::E */ {
#L31:
case #C3:
{
core::print("a");
continue #L32;
}
#L32:
case #C6:
{
core::print("b");
continue #L33;
}
#L33:
case #C9:
{
core::print("c");
break #L30;
}
#L34:
default:
throw{for-error-handling} new _in::ReachabilityError::•("`null` encountered as case in a switch statement with a non-nullable type.");
}
}
static method switchStatementPrimitiveEquals(dynamic o) dynamic {
#L35:
switch(o) /* dynamic */ {
#L36:
case #C11:
{
core::print("a");
break #L35;
}
#L37:
case #C12:
{
core::print("b");
}
}
}
static method switchStatementNonPrimitiveEquals(dynamic o) dynamic {
#L38:
{
final synthesized dynamic #0#0 = o;
{
if(#C13 =={self::NonPrimitiveEquals::==}{(core::Object) core::bool} #0#0) {
{
core::print("a");
break #L38;
}
}
}
{
if(#C14 =={self::NonPrimitiveEquals::==}{(core::Object) core::bool} #0#0) {
{
core::print("b");
}
}
}
}
}
static method switchExpression(dynamic o) dynamic {
return block {
dynamic #t47;
final synthesized dynamic #0#0 = o;
#L39:
{
{
hoisted dynamic a;
if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C4) {
a = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic};
#t47 = a;
break #L39;
}
}
{
hoisted dynamic a;
if(#0#0 is core::Map<dynamic, dynamic> && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}) {
a = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic};
#t47 = a;
break #L39;
}
}
{
if(true) {
#t47 = null;
break #L39;
}
}
throw{for-error-handling} new _in::ReachabilityError::•("`null` encountered as case in a switch expression with a non-nullable type.");
}
} =>#t47;
}
static method switchExpressionEnum(self::E o) dynamic {
return block {
core::int #t48;
#L40:
switch(o) /* isExplicitlyExhaustive, self::E */ {
#L41:
case #C3:
{
#t48 = 0;
break #L40;
}
#L42:
case #C6:
{
#t48 = 1;
break #L40;
}
#L43:
case #C9:
{
#t48 = 2;
break #L40;
}
#L44:
default:
throw{for-error-handling} new _in::ReachabilityError::•("`null` encountered as case in a switch expression with a non-nullable type.");
}
} =>#t48;
}
static method switchExpressionEnumWithGuard(self::E o) dynamic {
return block {
core::int #t49;
final synthesized self::E #0#0 = o;
#L45:
{
{
if(#C3 =={core::Object::==}{(core::Object) core::bool} #0#0 && true) {
#t49 = 0;
break #L45;
}
}
{
if(#C6 =={core::Object::==}{(core::Object) core::bool} #0#0) {
#t49 = 1;
break #L45;
}
}
{
if(true) {
#t49 = 2;
break #L45;
}
}
throw{for-error-handling} new _in::ReachabilityError::•("`null` encountered as case in a switch expression with a non-nullable type.");
}
} =>#t49;
}
static method switchExpressionPrimitiveEquals(dynamic o) dynamic {
return block {
core::int #t50;
final synthesized dynamic #0#0 = o;
#L46:
{
{
if(#C11 =={core::Object::==}{(core::Object) core::bool} #0#0) {
#t50 = 0;
break #L46;
}
}
{
if(#C12 =={core::Object::==}{(core::Object) core::bool} #0#0) {
#t50 = 1;
break #L46;
}
}
{
if(true) {
#t50 = 2;
break #L46;
}
}
throw{for-error-handling} new _in::ReachabilityError::•("`null` encountered as case in a switch expression with a non-nullable type.");
}
} =>#t50;
}
static method switchExpressionNonPrimitiveEquals(dynamic o) dynamic {
return block {
core::int #t51;
final synthesized dynamic #0#0 = o;
#L47:
{
{
if(#C13 =={self::NonPrimitiveEquals::==}{(core::Object) core::bool} #0#0) {
#t51 = 0;
break #L47;
}
}
{
if(#C14 =={self::NonPrimitiveEquals::==}{(core::Object) core::bool} #0#0) {
#t51 = 1;
break #L47;
}
}
{
if(true) {
#t51 = 2;
break #L47;
}
}
throw{for-error-handling} new _in::ReachabilityError::•("`null` encountered as case in a switch expression with a non-nullable type.");
}
} =>#t51;
}
static method switchStatementSymbol(core::Symbol s) dynamic {
#L48:
{
final synthesized core::Symbol #0#0 = s;
{
if(#C15 =={core::Symbol::==}{(core::Object) core::bool} #0#0) {
{
return 0;
}
}
}
{
if(#C16 =={core::Symbol::==}{(core::Object) core::bool} #0#0) {
{
return 1;
}
}
}
{
{
{
return 2;
}
}
}
}
}
static method switchExpressionSymbol(core::Symbol s) dynamic {
return block {
core::int #t52;
final synthesized core::Symbol #0#0 = s;
#L49:
{
{
if(#C15 =={core::Symbol::==}{(core::Object) core::bool} #0#0) {
#t52 = 0;
break #L49;
}
}
{
if(#C16 =={core::Symbol::==}{(core::Object) core::bool} #0#0) {
#t52 = 1;
break #L49;
}
}
{
if(true) {
#t52 = 2;
break #L49;
}
}
throw{for-error-handling} new _in::ReachabilityError::•("`null` encountered as case in a switch expression with a non-nullable type.");
}
} =>#t52;
}
constants {
#C1 = 0
#C2 = "a"
#C3 = self::E {index:#C1, _name:#C2}
#C4 = 1
#C5 = "b"
#C6 = self::E {index:#C4, _name:#C5}
#C7 = 2
#C8 = "c"
#C9 = self::E {index:#C7, _name:#C8}
#C10 = <self::E*>[#C3, #C6, #C9]
#C11 = self::PrimitiveEquals {field:#C1}
#C12 = self::PrimitiveEquals {field:#C4}
#C13 = self::NonPrimitiveEquals {field:#C1}
#C14 = self::NonPrimitiveEquals {field:#C4}
#C15 = #a
#C16 = #b
}
Extra constant evaluation status:
Evaluated: InstanceInvocation @ org-dartlang-testcase:///switch_encoding.dart:50:3 -> IntConstant(-1)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///switch_encoding.dart:70:3 -> IntConstant(-1)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///switch_encoding.dart:75:7 -> IntConstant(-1)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///switch_encoding.dart:103:7 -> IntConstant(-1)
Extra constant evaluation: evaluated: 573, effectively constant: 4
Constructor coverage from constants:
org-dartlang-testcase:///switch_encoding.dart:
- E. (from org-dartlang-testcase:///switch_encoding.dart:5:6)
- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart)
- PrimitiveEquals. (from org-dartlang-testcase:///switch_encoding.dart:10:9)
- NonPrimitiveEquals. (from org-dartlang-testcase:///switch_encoding.dart:16:9)