blob: f5488ab2964926d0e31154563765fadd602acecd [file] [log] [blame]
library;
//
// Problems in library:
//
// pkg/front_end/testcases/patterns/issue51604.dart:9:14: Error: The variable 'i' is available in some, but not all cases that share this body.
// return i; // Error.
// ^
//
// pkg/front_end/testcases/patterns/issue51604.dart:12:14: Error: The variable 's' is available in some, but not all cases that share this body.
// return s; // Error.
// ^
//
// pkg/front_end/testcases/patterns/issue51604.dart:15:14: Error: The variable 'd' is available in some, but not all cases that share this body.
// return d; // Error.
// ^
//
// pkg/front_end/testcases/patterns/issue51604.dart:18:14: Error: The variable 'b' is available in some, but not all cases that share this body.
// return b; // Error.
// ^
//
// pkg/front_end/testcases/patterns/issue51604.dart:30:14: Error: The variable 'i2' is not available because there is a label or 'default' case.
// return i2; // Error.
// ^^
//
// pkg/front_end/testcases/patterns/issue51604.dart:33:14: Error: The variable 's2' is not available because there is a label or 'default' case.
// return s2; // Error.
// ^^
//
// pkg/front_end/testcases/patterns/issue51604.dart:30:14: Error: Non-nullable variable 'i2' must be assigned before it can be used.
// return i2; // Error.
// ^^
//
// pkg/front_end/testcases/patterns/issue51604.dart:33:14: Error: Non-nullable variable 's2' must be assigned before it can be used.
// return s2; // Error.
// ^^
//
// pkg/front_end/testcases/patterns/issue51604.dart:44:14: Error: The variable 'i3' is not available because there is a label or 'default' case.
// return i3; // Error.
// ^^
//
// pkg/front_end/testcases/patterns/issue51604.dart:48:14: Error: The variable 's3' is not available because there is a label or 'default' case.
// return s3; // Error.
// ^^
//
// pkg/front_end/testcases/patterns/issue51604.dart:59:14: Error: The variable 'i4' is not available because there is a label or 'default' case.
// return i4; // Error.
// ^^
//
// pkg/front_end/testcases/patterns/issue51604.dart:63:14: Error: Variable pattern 's4' doesn't have the same type or finality in all cases.
// return s4; // Error.
// ^^
//
// pkg/front_end/testcases/patterns/issue51604.dart:63:14: Error: The variable 's4' is not available because there is a label or 'default' case.
// return s4; // Error.
// ^^
//
// pkg/front_end/testcases/patterns/issue51604.dart:59:14: Error: Variable pattern 'i4' doesn't have the same type or finality in all cases.
// return i4; // Error.
// ^
//
// pkg/front_end/testcases/patterns/issue51604.dart:87:16: Error: The variable 'i6' is not available because there is a label or 'default' case.
// return i6; // Error.
// ^^
//
// pkg/front_end/testcases/patterns/issue51604.dart:93:18: Error: The variable 's6' is not available because there is a label or 'default' case.
// return s6; // Error.
// ^^
//
// pkg/front_end/testcases/patterns/issue51604.dart:87:16: Error: Non-nullable variable 'i6' must be assigned before it can be used.
// return i6; // Error.
// ^^
//
// pkg/front_end/testcases/patterns/issue51604.dart:93:18: Error: Non-nullable variable 's6' must be assigned before it can be used.
// return s6; // Error.
// ^^
//
import self as self;
import "dart:core" as core;
static method test1(dynamic x) dynamic {
#L1:
{
final synthesized dynamic #0#0 = x;
dynamic #t1;
dynamic #t2;
dynamic #t3;
dynamic #t4;
{
hoisted core::int i;
if(#C1 =={core::num::==}{(core::Object) core::bool} #0#0 || #0#0 is core::int && (let final dynamic #t5 = i = #0#0{core::int} in true) && (let final dynamic #t6 = #t1 = i in true)) {
invalid-type i = #t1{invalid-type};
{
return i;
}
}
}
{
hoisted core::String s;
if(#0#0 is core::String && (let final dynamic #t7 = s = #0#0{core::String} in true) && (let final dynamic #t8 = #t2 = s in true) || #C2 =={core::String::==}{(core::Object) → core::bool} #0#0) {
core::String s = #t2{core::String};
{
return s;
}
}
}
{
hoisted core::double d;
if(#0#0 is core::double && (let final dynamic #t9 = d = #0#0{core::double} in true) && (let final dynamic #t10 = #t3 = d in true) || #0#0{dynamic}.<(#C3) as core::bool) {
core::double d = #t3{core::double};
{
return d;
}
}
}
{
hoisted core::bool b;
if(#0#0 =={core::Object::==}{(core::Object) → core::bool} #C4 || #0#0 is core::bool && (let final dynamic #t11 = b = #0#0{core::bool} in true) && (let final dynamic #t12 = #t4 = b in true)) {
invalid-type b = #t4{invalid-type};
{
return b;
}
}
}
{
{
{
return null;
}
}
}
}
}
static method test2(dynamic x) dynamic {
#L2:
{
core::int #t13 = 1.{core::int::unary-}(){() → core::int};
hoisted core::int i2;
final synthesized dynamic #0#0 = x;
#L3:
{
{
if(#0#0{dynamic}.<=(#C1) as core::bool) {
{
#t13 = 0;
break #L3;
}
}
}
{
if(#0#0 is core::int && (let final dynamic #t14 = i2 = #0#0{core::int} in true)) {
#t13 = 0;
break #L3;
}
}
{
hoisted core::String s2;
if(#0#0 is core::String && (let final dynamic #t15 = s2 = #0#0{core::String} in true) || true) {
{
return invalid-expression "pkg/front_end/testcases/patterns/issue51604.dart:33:14: Error: Non-nullable variable 's2' must be assigned before it can be used.
return s2; // Error.
^^" in s2;
}
}
}
}
switch(#t13) /* dynamic */ {
#L4:
case #C1:
{
{
return invalid-expression "pkg/front_end/testcases/patterns/issue51604.dart:30:14: Error: Non-nullable variable 'i2' must be assigned before it can be used.
return i2; // Error.
^^" in i2;
}
}
}
}
}
static method test3(dynamic x) dynamic {
#L5:
{
core::int #t16 = 1.{core::int::unary-}(){() → core::int};
hoisted core::int i3;
hoisted core::int i3#1;
final synthesized dynamic #0#0 = x;
late final synthesized core::bool #0#6 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C5;
late final synthesized dynamic #0#8 = (#0#0 as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic};
dynamic #t17;
dynamic #t18;
#L6:
{
{
if(#0#0{dynamic}.<=(#C1) as core::bool) {
{
#t16 = 0;
break #L6;
}
}
}
{
if(#0#0 is core::int && (let final dynamic #t19 = i3 = #0#0{core::int} in true) && (let final dynamic #t20 = #t17 = i3 in true) || #0#0 is core::List<dynamic> && #0#6 && (#0#8 is core::int && (let final dynamic #t21 = i3#1 = #0#8{core::int} in true)) && (let final dynamic #t22 = #t17 = i3#1 in true)) {
#t16 = 0;
break #L6;
}
}
{
lowered hoisted core::String s3#case#0;
lowered hoisted core::String s3#case#1;
if(#0#0 is core::String && (let final dynamic #t23 = s3#case#0 = #0#0{core::String} in true) && (let final dynamic #t24 = #t18 = s3#case#0 in true) || #0#0 is core::List<dynamic> && #0#6 && (#0#8 is core::String && (let final dynamic #t25 = s3#case#1 = #0#8{core::String} in true)) && (let final dynamic #t26 = #t18 = s3#case#1 in true) || true) {
core::String s3 = #t18{core::String};
{
return s3;
}
}
}
}
switch(#t16) /* dynamic */ {
#L7:
case #C1:
{
core::int i3 = #t17{core::int};
{
return i3;
}
}
}
}
}
static method test4(dynamic x) dynamic {
#L8:
{
core::int #t27 = 1.{core::int::unary-}(){() → core::int};
hoisted core::int i4;
hoisted core::double i4#1;
final synthesized dynamic #0#0 = x;
late final synthesized core::bool #0#6 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C5;
late final synthesized dynamic #0#8 = (#0#0 as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic};
dynamic #t28;
dynamic #t29;
#L9:
{
{
if(#0#0{dynamic}.<=(#C1) as core::bool) {
{
#t27 = 0;
break #L9;
}
}
}
{
if(#0#0 is core::int && (let final dynamic #t30 = i4 = #0#0{core::int} in true) && (let final dynamic #t31 = #t28 = i4 in true) || #0#0 is core::List<dynamic> && #0#6 && (#0#8 is core::double && (let final dynamic #t32 = i4#1 = #0#8{core::double} in true)) && (let final dynamic #t33 = #t28 = i4#1 in true)) {
#t27 = 0;
break #L9;
}
}
{
lowered hoisted core::String s4#case#0;
lowered final hoisted core::String s4#case#1;
if(#0#0 is core::String && (let final dynamic #t34 = s4#case#0 = #0#0{core::String} in true) && (let final dynamic #t35 = #t29 = s4#case#0 in true) || #0#0 is core::List<dynamic> && #0#6 && (#0#8 is core::String && (let final dynamic #t36 = s4#case#1 = #0#8{core::String} in true)) && (let final dynamic #t37 = #t29 = s4#case#1 in true) || true) {
core::String s4 = #t29{core::String};
{
return s4;
}
}
}
}
switch(#t27) /* dynamic */ {
#L10:
case #C1:
{
core::int i4 = invalid-expression "pkg/front_end/testcases/patterns/issue51604.dart:59:14: Error: Variable pattern 'i4' doesn't have the same type or finality in all cases.
return i4; // Error.
^";
{
return i4;
}
}
}
}
}
static method test5(dynamic x) dynamic {
#L11:
{
core::int #t38 = 1.{core::int::unary-}(){() → core::int};
hoisted core::int i5;
final synthesized dynamic #0#0 = x;
#L12:
{
{
if(#0#0{dynamic}.<=(#C1) as core::bool) {
{
#t38 = 0;
break #L12;
}
}
}
{
if(#0#0 is core::int && (let final dynamic #t39 = i5 = #0#0{core::int} in true) && i5 =={core::num::==}{(core::Object) → core::bool} 1) {
#t38 = 0;
break #L12;
}
}
{
hoisted core::String s5;
if(#0#0 is core::String && (let final dynamic #t40 = s5 = #0#0{core::String} in true) && s5 =={core::String::==}{(core::Object) → core::bool} "foo" || true) {
{
return null;
}
}
}
}
switch(#t38) /* dynamic */ {
#L13:
case #C1:
{
{
return null;
}
}
}
}
}
static method test6(dynamic x, core::bool b) dynamic {
#L14:
{
core::int #t41 = 1.{core::int::unary-}(){() → core::int};
hoisted core::int i6;
final synthesized dynamic #0#0 = x;
#L15:
{
{
if(#0#0{dynamic}.<=(#C1) as core::bool) {
{
#t41 = 0;
break #L15;
}
}
}
{
if(#0#0 is core::int && (let final dynamic #t42 = i6 = #0#0{core::int} in true)) {
#t41 = 0;
break #L15;
}
}
{
hoisted core::String s6;
if(#0#0 is core::String && (let final dynamic #t43 = s6 = #0#0{core::String} in true) || true) {
{
if(b) {
if(b) {
return invalid-expression "pkg/front_end/testcases/patterns/issue51604.dart:93:18: Error: Non-nullable variable 's6' must be assigned before it can be used.
return s6; // Error.
^^" in s6;
}
}
}
}
}
}
switch(#t41) /* dynamic */ {
#L16:
case #C1:
{
{
if(b) {
return invalid-expression "pkg/front_end/testcases/patterns/issue51604.dart:87:16: Error: Non-nullable variable 'i6' must be assigned before it can be used.
return i6; // Error.
^^" in i6;
}
break #L14;
}
}
}
}
}
static method test7(dynamic x) dynamic {
#L17:
{
core::int #t44 = 1.{core::int::unary-}(){() → core::int};
hoisted core::int i7;
final synthesized dynamic #0#0 = x;
#L18:
{
{
if(#0#0{dynamic}.<=(#C1) as core::bool) {
{
#t44 = 0;
break #L18;
}
}
}
{
if(#0#0 is core::int && (let final dynamic #t45 = i7 = #0#0{core::int} in true) && i7 =={core::num::==}{(core::Object) → core::bool} 1) {
#t44 = 0;
break #L18;
}
}
{
hoisted core::String s7;
if(#0#0 is core::String && (let final dynamic #t46 = s7 = #0#0{core::String} in true) && s7 =={core::String::==}{(core::Object) → core::bool} "foo" || true) {
{
core::String s7 = "foo";
return s7;
}
}
}
}
switch(#t44) /* dynamic */ {
#L19:
case #C1:
{
{
core::int i7 = 1;
return i7;
}
}
}
}
}
constants {
#C1 = 0
#C2 = "foo"
#C3 = 3.14
#C4 = false
#C5 = 1
}