diff --git a/pkg/dart2native/lib/generate.dart b/pkg/dart2native/lib/generate.dart index 5304ab7dec6..0fb6d690d41 100644 --- a/pkg/dart2native/lib/generate.dart +++ b/pkg/dart2native/lib/generate.dart @@ -72,7 +72,6 @@ Future generateNative({ String? resourcesFile, String enableExperiment = '', bool enableAsserts = false, - bool soundNullSafety = true, bool verbose = false, String verbosity = 'all', List extraOptions = const [], @@ -122,7 +121,6 @@ Future generateNative({ extraGenKernelOptions: [ '--invocation-modes=compile', '--verbosity=$verbosity', - '--${soundNullSafety ? '' : 'no-'}sound-null-safety', ], resourcesFile: resourcesFile, aot: true, @@ -150,7 +148,6 @@ Future generateNative({ extraGenKernelOptions: [ '--invocation-modes=compile', '--verbosity=$verbosity', - '--${soundNullSafety ? '' : 'no-'}sound-null-safety', ], nativeAssets: nativeAssets, aot: true, @@ -172,12 +169,8 @@ Future generateNative({ ); } - final extraAotOptions = [ - if (!soundNullSafety) '--no-sound-null-safety', - ...extraOptions - ]; if (verbose) { - print('Generating AOT snapshot. $genSnapshot $extraAotOptions'); + print('Generating AOT snapshot. $genSnapshot $extraOptions'); } final snapshotFile = kind == Kind.aot ? outputPath : path.join(tempDir.path, 'snapshot.aot'); @@ -186,7 +179,7 @@ Future generateNative({ snapshotFile, debugPath, enableAsserts, - extraAotOptions, + extraOptions, ); if (verbose || snapshotResult.exitCode != 0) { @@ -260,7 +253,6 @@ Future generateKernel({ // What are the implications of using a product mode kernel // in a non-product runtime? bool product = true, - bool soundNullSafety = true, bool verbose = false, String? nativeAssets, String? resourcesFile, @@ -282,7 +274,6 @@ Future generateKernel({ extraGenKernelOptions: [ '--invocation-modes=compile', '--verbosity=$verbosity', - '--${soundNullSafety ? '' : 'no-'}sound-null-safety', ], nativeAssets: nativeAssets, resourcesFile: resourcesFile, diff --git a/pkg/dartdev/lib/src/commands/compile.dart b/pkg/dartdev/lib/src/commands/compile.dart index c8564ae7913..6b403e048c8 100644 --- a/pkg/dartdev/lib/src/commands/compile.dart +++ b/pkg/dartdev/lib/src/commands/compile.dart @@ -235,7 +235,6 @@ class CompileKernelSnapshotCommand extends CompileSubcommandCommand { enableExperiment: args.enabledExperiments.join(','), linkPlatform: args.flag('link-platform'), embedSources: args.flag('embed-sources'), - soundNullSafety: args.flag('sound-null-safety'), verbose: verbose, verbosity: args.option('verbosity')!, ); @@ -518,7 +517,6 @@ Remove debugging information from the output and save it separately to the speci packages: args.option('packages'), enableExperiment: args.enabledExperiments.join(','), enableAsserts: args.flag('enable-asserts'), - soundNullSafety: args.flag('sound-null-safety'), debugFile: args.option('save-debugging-info'), verbose: verbose, verbosity: args.option('verbosity')!, diff --git a/pkg/front_end/testcases/const_functions/const_functions_try_catch_finally.dart.weak.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_try_catch_finally.dart.weak.transformed.expect index d99c27234a5..bd2d823ad50 100644 --- a/pkg/front_end/testcases/const_functions/const_functions_try_catch_finally.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/const_functions/const_functions_try_catch_finally.dart.weak.transformed.expect @@ -20,7 +20,7 @@ static const field core::String var12 = #C5; static const field core::int var13 = #C2; static method fn(dynamic error) → core::int { try { - throw error as{TypeError,Unchecked} core::Object; + throw let dynamic #t1 = error in #t1 == null ?{core::Object} #t1 as{TypeError} core::Object : #t1{core::Object}; } on core::String catch(no-exception-var) { return 0; @@ -31,7 +31,7 @@ static method fn(dynamic error) → core::int { } static method fn1(dynamic error) → core::int { try { - throw error as{TypeError,Unchecked} core::Object; + throw let dynamic #t2 = error in #t2 == null ?{core::Object} #t2 as{TypeError} core::Object : #t2{core::Object}; } on core::int catch(final core::int e) { return e; @@ -44,7 +44,7 @@ static method finallyReturn(dynamic error) → core::int { try try { if(!(error =={core::Object::==}{(core::Object) → core::bool} 1)) - throw error as{TypeError,Unchecked} core::Object; + throw let dynamic #t3 = error in #t3 == null ?{core::Object} #t3 as{TypeError} core::Object : #t3{core::Object}; } on core::int catch(final core::int e) { return e; diff --git a/pkg/front_end/testcases/const_functions/const_functions_try_catch_finally_error.dart.weak.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_try_catch_finally_error.dart.weak.transformed.expect index 82893accf97..8133640c296 100644 --- a/pkg/front_end/testcases/const_functions/const_functions_try_catch_finally_error.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/const_functions/const_functions_try_catch_finally_error.dart.weak.transformed.expect @@ -62,7 +62,7 @@ static method finallyThrow(core::int x) → core::int { } static method unhandledThrow(dynamic x) → core::int { try { - throw x as{TypeError,Unchecked} core::Object; + throw let dynamic #t1 = x in #t1 == null ?{core::Object} #t1 as{TypeError} core::Object : #t1{core::Object}; } on core::String catch(final core::String e) { throw e; diff --git a/pkg/front_end/testcases/constructor_tearoffs/implicit_instantiation_errors.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/implicit_instantiation_errors.dart.weak.transformed.expect index aa4842ffaca..12eb3c53c4c 100644 --- a/pkg/front_end/testcases/constructor_tearoffs/implicit_instantiation_errors.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/constructor_tearoffs/implicit_instantiation_errors.dart.weak.transformed.expect @@ -40,20 +40,20 @@ static method test() → dynamic { self::Class c = new self::Class::•(); (core::int, core::int) → core::int f = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/implicit_instantiation_errors.dart:16:30: Error: A value of type 'int Function(int, int)?' can't be assigned to a variable of type 'int Function(int, int)' because 'int Function(int, int)?' is nullable and 'int Function(int, int)' isn't. int Function(int, int) f = alias; - ^" in (let final (T%, core::int) →? T% #t1 = self::alias in #t1 == null ?{(core::int, core::int) →? core::int} null : #t1{(T%, core::int) → T%}) as{TypeError,Unchecked} (core::int, core::int) → core::int; + ^" in let (core::int, core::int) →? core::int #t1 = let final (T%, core::int) →? T% #t2 = self::alias in #t2 == null ?{(core::int, core::int) →? core::int} null : #t2{(T%, core::int) → T%} in #t1 == null ?{(core::int, core::int) → core::int} #t1 as{TypeError} (core::int, core::int) → core::int : #t1{(core::int, core::int) → core::int}; (core::int, core::int?) →? core::int g; g = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/implicit_instantiation_errors.dart:18:7: Error: A value of type 'int Function(int, int)?' can't be assigned to a variable of type 'int Function(int, int?)?' because 'int?' is nullable and 'int' isn't. g = alias; - ^" in (let final (T%, core::int) →? T% #t2 = self::alias in #t2 == null ?{(core::int, core::int) →? core::int} null : #t2{(T%, core::int) → T%}) as{TypeError,Unchecked} (core::int, core::int?) →? core::int; + ^" in (let final (T%, core::int) →? T% #t3 = self::alias in #t3 == null ?{(core::int, core::int) →? core::int} null : #t3{(T%, core::int) → T%}) as{TypeError} (core::int, core::int?) →? core::int; (core::int, core::int?) → core::int h = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/implicit_instantiation_errors.dart:19:27: Error: A value of type 'int Function(int, int)' can't be assigned to a variable of type 'int Function(int, int?)' because 'int?' is nullable and 'int' isn't. int Function(int, int?) h = c; - ^" in ((let final self::Class #t3 = c in #t3 == null ?{(T%, core::int) → T%} null : #t3.{self::Class::call}{(T%, core::int) → T%})) as{TypeError,Unchecked} (core::int, core::int?) → core::int; + ^" in ((let final self::Class #t4 = c in #t4 == null ?{(T%, core::int) → T%} null : #t4.{self::Class::call}{(T%, core::int) → T%})) as{TypeError} (core::int, core::int?) → core::int; g = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/implicit_instantiation_errors.dart:20:3: Error: A value of type 'int Function(int, int)' can't be assigned to a variable of type 'int Function(int, int?)?' because 'int?' is nullable and 'int' isn't. g = c; - ^" in ((let final self::Class #t4 = c in #t4 == null ?{(T%, core::int) → T%} null : #t4.{self::Class::call}{(T%, core::int) → T%})) as{TypeError,Unchecked} (core::int, core::int?) →? core::int; + ^" in ((let final self::Class #t5 = c in #t5 == null ?{(T%, core::int) → T%} null : #t5.{self::Class::call}{(T%, core::int) → T%})) as{TypeError} (core::int, core::int?) →? core::int; self::method(invalid-expression "pkg/front_end/testcases/constructor_tearoffs/implicit_instantiation_errors.dart:21:10: Error: The argument type 'int Function(int, int)?' can't be assigned to the parameter type 'int Function(int, int?)' because 'int?' is nullable and 'int' isn't. method(alias); - ^" in (let final (T%, core::int) →? T% #t5 = self::alias in #t5 == null ?{(core::int, core::int) →? core::int} null : #t5{(T%, core::int) → T%}) as{TypeError,Unchecked} (core::int, core::int?) → core::int); + ^" in (let final (T%, core::int) →? T% #t6 = self::alias in #t6 == null ?{(core::int, core::int) →? core::int} null : #t6{(T%, core::int) → T%}) as{TypeError} (core::int, core::int?) → core::int); } static method main() → dynamic {} diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/invalid_redirect.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/invalid_redirect.dart.weak.transformed.expect index 24ec5885ddb..fe694aad4be 100644 --- a/pkg/front_end/testcases/constructor_tearoffs/lowering/invalid_redirect.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/invalid_redirect.dart.weak.transformed.expect @@ -84,7 +84,7 @@ class LinkFactory extends core::Object { return invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/invalid_redirect.dart:14:12: Error: The value 'null' can't be returned from a function with return type 'LinkFactory' because 'LinkFactory' is not nullable. - 'LinkFactory' is from 'pkg/front_end/testcases/constructor_tearoffs/lowering/invalid_redirect.dart'. return null; - ^" in null as{TypeError,Unchecked} self::LinkFactory; + ^" in let Null #t1 = null in #t1 == null ?{self::LinkFactory} #t1 as{TypeError} self::LinkFactory : #t1{self::LinkFactory}; } static method _#create#tearOff() → self::LinkFactory return self::LinkFactory::create(); diff --git a/pkg/front_end/testcases/extension_types/assign_interface_type.dart.weak.transformed.expect b/pkg/front_end/testcases/extension_types/assign_interface_type.dart.weak.transformed.expect index 60ad2e84e59..151a31bd6e6 100644 --- a/pkg/front_end/testcases/extension_types/assign_interface_type.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/extension_types/assign_interface_type.dart.weak.transformed.expect @@ -388,22 +388,22 @@ static method test' can't be assigned to a variable of type 'Object' because 'G' is nullable and 'Object' isn't. - 'Object' is from 'dart:core'. o = g1; // Error - ^" in g1 as{TypeError,Unchecked} core::Object; + ^" in let self::G% /* erasure=self::test::T1%, declared=! */ #t3 = g1 in #t3 == null ?{core::Object} #t3 as{TypeError} core::Object : #t3{core::Object}; o = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:45:7: Error: A value of type 'G' can't be assigned to a variable of type 'Object' because 'G' is nullable and 'Object' isn't. - 'Object' is from 'dart:core'. o = g2; // Error - ^" in g2 as{TypeError,Unchecked} core::Object; + ^" in let self::G% /* erasure=self::test::T2, declared=! */ #t4 = g2 in #t4 == null ?{core::Object} #t4 as{TypeError} core::Object : #t4{core::Object}; o = g3; a = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:48:7: Error: A value of type 'Object' can't be assigned to a variable of type 'A'. - 'Object' is from 'dart:core'. diff --git a/pkg/front_end/testcases/extension_types/non_nullable_if_implements_object.dart.weak.transformed.expect b/pkg/front_end/testcases/extension_types/non_nullable_if_implements_object.dart.weak.transformed.expect index 1465afd6618..73bbda4ce5c 100644 --- a/pkg/front_end/testcases/extension_types/non_nullable_if_implements_object.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/extension_types/non_nullable_if_implements_object.dart.weak.transformed.expect @@ -208,122 +208,122 @@ static method test1(self::E1% /* erasure=core::Object, declared=! */ e1, self::E core::Object v1 = invalid-expression "pkg/front_end/testcases/extension_types/non_nullable_if_implements_object.dart:14:15: Error: A value of type 'E1' can't be assigned to a variable of type 'Object' because 'E1' is nullable and 'Object' isn't. - 'Object' is from 'dart:core'. Object v1 = e1; // Error. - ^" in e1 as{TypeError,Unchecked} core::Object; + ^" in let self::E1% /* erasure=core::Object, declared=! */ #t1 = e1 in #t1 == null ?{core::Object} #t1 as{TypeError} core::Object : #t1{core::Object}; e1 = invalid-expression "pkg/front_end/testcases/extension_types/non_nullable_if_implements_object.dart:15:8: Error: The value 'null' can't be assigned to a variable of type 'E1' because 'E1' is not nullable. e1 = null; // Error. - ^" in null as{TypeError,Unchecked} self::E1% /* erasure=core::Object, declared=! */; + ^" in let Null #t2 = null in #t2 == null ?{self::E1% /* erasure=core::Object, declared=! */} #t2 as{TypeError} self::E1% /* erasure=core::Object, declared=! */ : #t2{self::E1% /* erasure=core::Object, declared=! */}; core::Object v2 = e2; e2 = invalid-expression "pkg/front_end/testcases/extension_types/non_nullable_if_implements_object.dart:18:8: Error: The value 'null' can't be assigned to a variable of type 'E2' because 'E2' is not nullable. e2 = null; // Error. - ^" in null as{TypeError,Unchecked} self::E2 /* erasure=core::Object */; + ^" in let Null #t3 = null in #t3 == null ?{self::E2 /* erasure=core::Object */} #t3 as{TypeError} self::E2 /* erasure=core::Object */ : #t3{self::E2 /* erasure=core::Object */}; core::Object v3 = invalid-expression "pkg/front_end/testcases/extension_types/non_nullable_if_implements_object.dart:20:15: Error: A value of type 'E3' can't be assigned to a variable of type 'Object' because 'E3' is nullable and 'Object' isn't. - 'Object' is from 'dart:core'. Object v3 = e3; // Error. - ^" in e3 as{TypeError,Unchecked} core::Object; + ^" in let self::E3% /* erasure=core::Object, declared=! */ #t4 = e3 in #t4 == null ?{core::Object} #t4 as{TypeError} core::Object : #t4{core::Object}; e3 = invalid-expression "pkg/front_end/testcases/extension_types/non_nullable_if_implements_object.dart:21:8: Error: The value 'null' can't be assigned to a variable of type 'E3' because 'E3' is not nullable. e3 = null; // Error. - ^" in null as{TypeError,Unchecked} self::E3% /* erasure=core::Object, declared=! */; + ^" in let Null #t5 = null in #t5 == null ?{self::E3% /* erasure=core::Object, declared=! */} #t5 as{TypeError} self::E3% /* erasure=core::Object, declared=! */ : #t5{self::E3% /* erasure=core::Object, declared=! */}; core::Object v4 = e4; e4 = invalid-expression "pkg/front_end/testcases/extension_types/non_nullable_if_implements_object.dart:24:8: Error: The value 'null' can't be assigned to a variable of type 'E4' because 'E4' is not nullable. e4 = null; // Error. - ^" in null as{TypeError,Unchecked} self::E4 /* erasure=core::Object */; + ^" in let Null #t6 = null in #t6 == null ?{self::E4 /* erasure=core::Object */} #t6 as{TypeError} self::E4 /* erasure=core::Object */ : #t6{self::E4 /* erasure=core::Object */}; core::Object v5 = invalid-expression "pkg/front_end/testcases/extension_types/non_nullable_if_implements_object.dart:26:15: Error: A value of type 'E5' can't be assigned to a variable of type 'Object' because 'E5' is nullable and 'Object' isn't. - 'Object' is from 'dart:core'. Object v5 = e5; // Error. - ^" in e5 as{TypeError,Unchecked} core::Object; + ^" in let self::E5% /* erasure=dynamic, declared=! */ #t7 = e5 in #t7 == null ?{core::Object} #t7 as{TypeError} core::Object : #t7{core::Object}; e5 = invalid-expression "pkg/front_end/testcases/extension_types/non_nullable_if_implements_object.dart:27:8: Error: The value 'null' can't be assigned to a variable of type 'E5' because 'E5' is not nullable. e5 = null; // Error. - ^" in null as{TypeError,Unchecked} self::E5% /* erasure=dynamic, declared=! */; + ^" in let Null #t8 = null in #t8 == null ?{self::E5% /* erasure=dynamic, declared=! */} #t8 as{TypeError} self::E5% /* erasure=dynamic, declared=! */ : #t8{self::E5% /* erasure=dynamic, declared=! */}; core::Object v6 = e6; e6 = invalid-expression "pkg/front_end/testcases/extension_types/non_nullable_if_implements_object.dart:30:8: Error: The value 'null' can't be assigned to a variable of type 'E6' because 'E6' is not nullable. - 'Object' is from 'dart:core'. e6 = null; // Error. - ^" in null as{TypeError,Unchecked} self::E6 /* erasure=core::Object */; + ^" in let Null #t9 = null in #t9 == null ?{self::E6 /* erasure=core::Object */} #t9 as{TypeError} self::E6 /* erasure=core::Object */ : #t9{self::E6 /* erasure=core::Object */}; core::Object v7 = e7; e7 = invalid-expression "pkg/front_end/testcases/extension_types/non_nullable_if_implements_object.dart:33:8: Error: The value 'null' can't be assigned to a variable of type 'E7' because 'E7' is not nullable. e7 = null; // Error. - ^" in null as{TypeError,Unchecked} self::E7 /* erasure=core::num */; + ^" in let Null #t10 = null in #t10 == null ?{self::E7 /* erasure=core::num */} #t10 as{TypeError} self::E7 /* erasure=core::num */ : #t10{self::E7 /* erasure=core::num */}; } static method test2% /* erasure=dynamic, declared=! */, X6 extends self::E6 /* erasure=core::Object */, X7 extends self::E7 /* erasure=core::num */>(self::test2::X1% x1, self::test2::X2 x2, self::test2::X3% x3, self::test2::X4 x4, self::test2::X5% x5, self::test2::X6 x6, self::test2::X7 x7) → dynamic { core::Object v1 = invalid-expression "pkg/front_end/testcases/extension_types/non_nullable_if_implements_object.dart:38:15: Error: A value of type 'X1' can't be assigned to a variable of type 'Object' because 'X1' is nullable and 'Object' isn't. - 'Object' is from 'dart:core'. Object v1 = x1; // Error. - ^" in x1 as{TypeError,Unchecked} core::Object; + ^" in let self::test2::X1% #t11 = x1 in #t11 == null ?{core::Object} #t11 as{TypeError} core::Object : #t11{core::Object}; x1 = invalid-expression "pkg/front_end/testcases/extension_types/non_nullable_if_implements_object.dart:39:8: Error: The value 'null' can't be assigned to a variable of type 'X1' because 'X1' is not nullable. x1 = null; // Error. - ^" in null as{TypeError,Unchecked} Never; + ^" in let Null #t12 = null in #t12 == null ?{Never} #t12 as{TypeError} Never : #t12{Never}; core::Object v2 = x2; x2 = invalid-expression "pkg/front_end/testcases/extension_types/non_nullable_if_implements_object.dart:42:8: Error: The value 'null' can't be assigned to a variable of type 'X2' because 'X2' is not nullable. x2 = null; // Error. - ^" in null as{TypeError,Unchecked} Never; + ^" in let Null #t13 = null in #t13 == null ?{Never} #t13 as{TypeError} Never : #t13{Never}; core::Object v3 = invalid-expression "pkg/front_end/testcases/extension_types/non_nullable_if_implements_object.dart:44:15: Error: A value of type 'X3' can't be assigned to a variable of type 'Object' because 'X3' is nullable and 'Object' isn't. - 'Object' is from 'dart:core'. Object v3 = x3; // Error. - ^" in x3 as{TypeError,Unchecked} core::Object; + ^" in let self::test2::X3% #t14 = x3 in #t14 == null ?{core::Object} #t14 as{TypeError} core::Object : #t14{core::Object}; x3 = invalid-expression "pkg/front_end/testcases/extension_types/non_nullable_if_implements_object.dart:45:8: Error: The value 'null' can't be assigned to a variable of type 'X3' because 'X3' is not nullable. x3 = null; // Error. - ^" in null as{TypeError,Unchecked} Never; + ^" in let Null #t15 = null in #t15 == null ?{Never} #t15 as{TypeError} Never : #t15{Never}; core::Object v4 = x4; x4 = invalid-expression "pkg/front_end/testcases/extension_types/non_nullable_if_implements_object.dart:48:8: Error: The value 'null' can't be assigned to a variable of type 'X4' because 'X4' is not nullable. x4 = null; // Error. - ^" in null as{TypeError,Unchecked} Never; + ^" in let Null #t16 = null in #t16 == null ?{Never} #t16 as{TypeError} Never : #t16{Never}; core::Object v5 = invalid-expression "pkg/front_end/testcases/extension_types/non_nullable_if_implements_object.dart:50:15: Error: A value of type 'X5' can't be assigned to a variable of type 'Object' because 'X5' is nullable and 'Object' isn't. - 'Object' is from 'dart:core'. Object v5 = x5; // Error. - ^" in x5 as{TypeError,Unchecked} core::Object; + ^" in let self::test2::X5% #t17 = x5 in #t17 == null ?{core::Object} #t17 as{TypeError} core::Object : #t17{core::Object}; x5 = invalid-expression "pkg/front_end/testcases/extension_types/non_nullable_if_implements_object.dart:51:8: Error: The value 'null' can't be assigned to a variable of type 'X5' because 'X5' is not nullable. x5 = null; // Error. - ^" in null as{TypeError,Unchecked} Never; + ^" in let Null #t18 = null in #t18 == null ?{Never} #t18 as{TypeError} Never : #t18{Never}; core::Object v6 = x6; x6 = invalid-expression "pkg/front_end/testcases/extension_types/non_nullable_if_implements_object.dart:54:8: Error: The value 'null' can't be assigned to a variable of type 'X6' because 'X6' is not nullable. x6 = null; // Error. - ^" in null as{TypeError,Unchecked} Never; + ^" in let Null #t19 = null in #t19 == null ?{Never} #t19 as{TypeError} Never : #t19{Never}; core::Object v7 = x7; x7 = invalid-expression "pkg/front_end/testcases/extension_types/non_nullable_if_implements_object.dart:57:8: Error: The value 'null' can't be assigned to a variable of type 'X7' because 'X7' is not nullable. x7 = null; // Error. - ^" in null as{TypeError,Unchecked} Never; + ^" in let Null #t20 = null in #t20 == null ?{Never} #t20 as{TypeError} Never : #t20{Never}; } static method test3(self::E1% /* erasure=core::Object, declared=! */ e1, self::E2 /* erasure=core::Object */ e2, self::E3% /* erasure=core::Object, declared=! */ e3, self::E4 /* erasure=core::Object */ e4, self::E5% /* erasure=dynamic, declared=! */ e5, self::E6 /* erasure=core::Object */ e6, self::E7 /* erasure=core::num */ e7, core::String s, core::bool b) → dynamic { core::Object? v11 = b ?{core::Object?} e1 : s; core::Object v12 = invalid-expression "pkg/front_end/testcases/extension_types/non_nullable_if_implements_object.dart:62:16: Error: A value of type 'Object?' can't be assigned to a variable of type 'Object' because 'Object?' is nullable and 'Object' isn't. - 'Object' is from 'dart:core'. Object v12 = v11; // Error. - ^" in v11 as{TypeError,Unchecked} core::Object; + ^" in let core::Object? #t21 = v11 in #t21 == null ?{core::Object} #t21 as{TypeError} core::Object : #t21{core::Object}; v11 = null; core::Object v21 = b ?{core::Object} e2 : s; core::Object v22 = v21; v21 = invalid-expression "pkg/front_end/testcases/extension_types/non_nullable_if_implements_object.dart:67:9: Error: The value 'null' can't be assigned to a variable of type 'Object' because 'Object' is not nullable. - 'Object' is from 'dart:core'. v21 = null; // Error. - ^" in null as{TypeError,Unchecked} core::Object; + ^" in let Null #t22 = null in #t22 == null ?{core::Object} #t22 as{TypeError} core::Object : #t22{core::Object}; core::Object? v31 = b ?{core::Object?} e3 : s; core::Object v32 = invalid-expression "pkg/front_end/testcases/extension_types/non_nullable_if_implements_object.dart:70:16: Error: A value of type 'Object?' can't be assigned to a variable of type 'Object' because 'Object?' is nullable and 'Object' isn't. - 'Object' is from 'dart:core'. Object v32 = v31; // Error. - ^" in v31 as{TypeError,Unchecked} core::Object; + ^" in let core::Object? #t23 = v31 in #t23 == null ?{core::Object} #t23 as{TypeError} core::Object : #t23{core::Object}; v31 = null; core::Object v41 = b ?{core::Object} e4 : s; core::Object v42 = v41; v41 = invalid-expression "pkg/front_end/testcases/extension_types/non_nullable_if_implements_object.dart:75:9: Error: The value 'null' can't be assigned to a variable of type 'Object' because 'Object' is not nullable. - 'Object' is from 'dart:core'. v41 = null; // Error. - ^" in null as{TypeError,Unchecked} core::Object; + ^" in let Null #t24 = null in #t24 == null ?{core::Object} #t24 as{TypeError} core::Object : #t24{core::Object}; core::Object? v51 = b ?{core::Object?} e5 : s; core::Object v52 = invalid-expression "pkg/front_end/testcases/extension_types/non_nullable_if_implements_object.dart:78:16: Error: A value of type 'Object?' can't be assigned to a variable of type 'Object' because 'Object?' is nullable and 'Object' isn't. - 'Object' is from 'dart:core'. Object v52 = v51; // Error. - ^" in v51 as{TypeError,Unchecked} core::Object; + ^" in let core::Object? #t25 = v51 in #t25 == null ?{core::Object} #t25 as{TypeError} core::Object : #t25{core::Object}; v51 = null; core::Object v61 = b ?{core::Object} e6 : s; core::Object v62 = v61; v61 = invalid-expression "pkg/front_end/testcases/extension_types/non_nullable_if_implements_object.dart:83:9: Error: The value 'null' can't be assigned to a variable of type 'Object' because 'Object' is not nullable. - 'Object' is from 'dart:core'. v61 = null; // Error. - ^" in null as{TypeError,Unchecked} core::Object; + ^" in let Null #t26 = null in #t26 == null ?{core::Object} #t26 as{TypeError} core::Object : #t26{core::Object}; core::Object v71 = b ?{core::Object} e7 : s; core::Object v72 = v71; v71 = invalid-expression "pkg/front_end/testcases/extension_types/non_nullable_if_implements_object.dart:87:9: Error: The value 'null' can't be assigned to a variable of type 'Object' because 'Object' is not nullable. - 'Object' is from 'dart:core'. v71 = null; // Error. - ^" in null as{TypeError,Unchecked} core::Object; + ^" in let Null #t27 = null in #t27 == null ?{core::Object} #t27 as{TypeError} core::Object : #t27{core::Object}; } diff --git a/pkg/front_end/testcases/extension_types/nullability.dart.weak.transformed.expect b/pkg/front_end/testcases/extension_types/nullability.dart.weak.transformed.expect index 93d7c4a146a..58186a7f882 100644 --- a/pkg/front_end/testcases/extension_types/nullability.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/extension_types/nullability.dart.weak.transformed.expect @@ -219,47 +219,47 @@ static method testNotNonNullable(self::E1% /* erasure=core::num?, de core::Object x1numNullable = invalid-expression "pkg/front_end/testcases/extension_types/nullability.dart:13:26: Error: A value of type 'E1' can't be assigned to a variable of type 'Object' because 'E1' is nullable and 'Object' isn't. - 'Object' is from 'dart:core'. Object x1numNullable = e1numNullableNNN; // Error. - ^" in e1numNullableNNN as{TypeError,Unchecked} core::Object; + ^" in let self::E1% /* erasure=core::num?, declared=! */ #t1 = e1numNullableNNN in #t1 == null ?{core::Object} #t1 as{TypeError} core::Object : #t1{core::Object}; core::Object x1double = invalid-expression "pkg/front_end/testcases/extension_types/nullability.dart:14:21: Error: A value of type 'E1' can't be assigned to a variable of type 'Object' because 'E1' is nullable and 'Object' isn't. - 'Object' is from 'dart:core'. Object x1double = e1doubleNNN; // Error. - ^" in e1doubleNNN as{TypeError,Unchecked} core::Object; + ^" in let self::E1% /* erasure=core::double, declared=! */ #t2 = e1doubleNNN in #t2 == null ?{core::Object} #t2 as{TypeError} core::Object : #t2{core::Object}; core::Object x2 = invalid-expression "pkg/front_end/testcases/extension_types/nullability.dart:15:15: Error: A value of type 'E2' can't be assigned to a variable of type 'Object' because 'E2' is nullable and 'Object' isn't. - 'Object' is from 'dart:core'. Object x2 = e2NNN; // Error. - ^" in e2NNN as{TypeError,Unchecked} core::Object; + ^" in let self::E2% /* erasure=core::Object?, declared=! */ #t3 = e2NNN in #t3 == null ?{core::Object} #t3 as{TypeError} core::Object : #t3{core::Object}; core::Object x3 = invalid-expression "pkg/front_end/testcases/extension_types/nullability.dart:16:15: Error: A value of type 'E3' can't be assigned to a variable of type 'Object' because 'E3' is nullable and 'Object' isn't. - 'Object' is from 'dart:core'. Object x3 = e3NNN; // Error. - ^" in e3NNN as{TypeError,Unchecked} core::Object; + ^" in let self::E3% /* erasure=core::String?, declared=! */ #t4 = e3NNN in #t4 == null ?{core::Object} #t4 as{TypeError} core::Object : #t4{core::Object}; core::Object x4 = invalid-expression "pkg/front_end/testcases/extension_types/nullability.dart:17:15: Error: A value of type 'E4' can't be assigned to a variable of type 'Object' because 'E4' is nullable and 'Object' isn't. - 'Object' is from 'dart:core'. Object x4 = e4NNN; // Error. - ^" in e4NNN as{TypeError,Unchecked} core::Object; + ^" in let self::E4% /* erasure=core::int, declared=! */ #t5 = e4NNN in #t5 == null ?{core::Object} #t5 as{TypeError} core::Object : #t5{core::Object}; core::Object x5 = invalid-expression "pkg/front_end/testcases/extension_types/nullability.dart:18:15: Error: A value of type 'E5' can't be assigned to a variable of type 'Object' because 'E5' is nullable and 'Object' isn't. - 'Object' is from 'dart:core'. Object x5 = e5NNN; // Error. - ^" in e5NNN as{TypeError,Unchecked} core::Object; + ^" in let self::E5% /* erasure=core::Object?, declared=! */ #t6 = e5NNN in #t6 == null ?{core::Object} #t6 as{TypeError} core::Object : #t6{core::Object}; } static method testNotNullable(self::E1% /* erasure=core::num?, declared=! */ e1numNullableNN, self::E1% /* erasure=core::double, declared=! */ e1doubleNN, self::E2% /* erasure=core::Object?, declared=! */ e2NN, self::E3% /* erasure=core::String?, declared=! */ e3NN, self::E4% /* erasure=core::int, declared=! */ e4NN, self::E5% /* erasure=core::Object?, declared=! */ e5NN, self::E1? /* erasure=core::num? */ e1numNullableNNNullable, self::E1? /* erasure=core::double? */ e1doubleNNNullable, self::E2? /* erasure=core::Object? */ e2NNNullable, self::E3? /* erasure=core::String? */ e3NNNullable, self::E4? /* erasure=core::int? */ e4NNNullable, self::E5? /* erasure=core::Object? */ e5NNNullable) → dynamic { e1numNullableNN = invalid-expression "pkg/front_end/testcases/extension_types/nullability.dart:26:21: Error: The value 'null' can't be assigned to a variable of type 'E1' because 'E1' is not nullable. e1numNullableNN = null; // Error. - ^" in null as{TypeError,Unchecked} self::E1% /* erasure=core::num?, declared=! */; + ^" in let Null #t7 = null in #t7 == null ?{self::E1% /* erasure=core::num?, declared=! */} #t7 as{TypeError} self::E1% /* erasure=core::num?, declared=! */ : #t7{self::E1% /* erasure=core::num?, declared=! */}; e1doubleNN = invalid-expression "pkg/front_end/testcases/extension_types/nullability.dart:27:16: Error: The value 'null' can't be assigned to a variable of type 'E1' because 'E1' is not nullable. e1doubleNN = null; // Error. - ^" in null as{TypeError,Unchecked} self::E1% /* erasure=core::double, declared=! */; + ^" in let Null #t8 = null in #t8 == null ?{self::E1% /* erasure=core::double, declared=! */} #t8 as{TypeError} self::E1% /* erasure=core::double, declared=! */ : #t8{self::E1% /* erasure=core::double, declared=! */}; e2NN = invalid-expression "pkg/front_end/testcases/extension_types/nullability.dart:28:10: Error: The value 'null' can't be assigned to a variable of type 'E2' because 'E2' is not nullable. e2NN = null; // Error. - ^" in null as{TypeError,Unchecked} self::E2% /* erasure=core::Object?, declared=! */; + ^" in let Null #t9 = null in #t9 == null ?{self::E2% /* erasure=core::Object?, declared=! */} #t9 as{TypeError} self::E2% /* erasure=core::Object?, declared=! */ : #t9{self::E2% /* erasure=core::Object?, declared=! */}; e3NN = invalid-expression "pkg/front_end/testcases/extension_types/nullability.dart:29:10: Error: The value 'null' can't be assigned to a variable of type 'E3' because 'E3' is not nullable. e3NN = null; // Error. - ^" in null as{TypeError,Unchecked} self::E3% /* erasure=core::String?, declared=! */; + ^" in let Null #t10 = null in #t10 == null ?{self::E3% /* erasure=core::String?, declared=! */} #t10 as{TypeError} self::E3% /* erasure=core::String?, declared=! */ : #t10{self::E3% /* erasure=core::String?, declared=! */}; e4NN = invalid-expression "pkg/front_end/testcases/extension_types/nullability.dart:30:10: Error: The value 'null' can't be assigned to a variable of type 'E4' because 'E4' is not nullable. e4NN = null; // Error. - ^" in null as{TypeError,Unchecked} self::E4% /* erasure=core::int, declared=! */; + ^" in let Null #t11 = null in #t11 == null ?{self::E4% /* erasure=core::int, declared=! */} #t11 as{TypeError} self::E4% /* erasure=core::int, declared=! */ : #t11{self::E4% /* erasure=core::int, declared=! */}; e5NN = invalid-expression "pkg/front_end/testcases/extension_types/nullability.dart:31:10: Error: The value 'null' can't be assigned to a variable of type 'E5' because 'E5' is not nullable. e5NN = null; // Error. - ^" in null as{TypeError,Unchecked} self::E5% /* erasure=core::Object?, declared=! */; + ^" in let Null #t12 = null in #t12 == null ?{self::E5% /* erasure=core::Object?, declared=! */} #t12 as{TypeError} self::E5% /* erasure=core::Object?, declared=! */ : #t12{self::E5% /* erasure=core::Object?, declared=! */}; e1numNullableNNNullable = null; e1doubleNNNullable = null; e2NNNullable = null; diff --git a/pkg/front_end/testcases/extension_types/pattern.dart.weak.transformed.expect b/pkg/front_end/testcases/extension_types/pattern.dart.weak.transformed.expect index d7ea58ea867..afe12a85cfc 100644 --- a/pkg/front_end/testcases/extension_types/pattern.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/extension_types/pattern.dart.weak.transformed.expect @@ -34,7 +34,7 @@ static method method(self::MyList /* erasure=core::List */ hoisted has-declared-initializer core::bool b; { final synthesized self::MyMap /* erasure=core::Map */ #1#0 = map; - if(!(#1#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && (let final core::bool #t2 = b = #1#0.{core::Map::[]}(#C2){(core::Object?) → core::bool?} as{Unchecked} core::bool in true))) + if(!(#1#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && (let final core::bool #t2 = b = let core::bool? #t3 = #1#0.{core::Map::[]}(#C2){(core::Object?) → core::bool?} in #t3 == null ?{core::bool} #t3 as{Unchecked} core::bool : #t3{core::bool} in true))) throw{for-error-handling} new core::StateError::•("Pattern matching error"); } { @@ -52,7 +52,7 @@ static method method(self::MyList /* erasure=core::List */ { hoisted core::bool d; if(#3#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) { - d = #3#0.{core::Map::[]}(#C2){(core::Object?) → core::bool?} as{Unchecked} core::bool; + d = let core::bool? #t4 = #3#0.{core::Map::[]}(#C2){(core::Object?) → core::bool?} in #t4 == null ?{core::bool} #t4 as{Unchecked} core::bool : #t4{core::bool}; {} } } @@ -62,12 +62,12 @@ static method method(self::MyList /* erasure=core::List */ final synthesized self::MyList /* erasure=core::List */ #4#0 = list; synthesized core::int #4#1; synthesized core::bool #4#1#isSet = false; - dynamic #t3; + dynamic #t5; { lowered hoisted core::int e#case#0; lowered hoisted core::int e#case#1; - if((#4#1#isSet ?{core::int} #4#1{core::int} : let final core::bool #t4 = #4#1#isSet = true in #4#1 = #4#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1 && (let final core::int #t5 = e#case#0 = #4#0.{core::List::[]}(0){(core::int) → core::int} in true) && e#case#0.{core::num::>}(5){(core::num) → core::bool} && (let final core::int #t6 = #t3 = e#case#0 in true) || (#4#1#isSet ?{core::int} #4#1{core::int} : let final core::bool #t7 = #4#1#isSet = true in #4#1 = #4#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C3 && (let final core::int #t8 = e#case#1 = #4#0.{core::List::[]}(1){(core::int) → core::int} in true) && e#case#1.{core::num::<}(5){(core::num) → core::bool} && (let final core::int #t9 = #t3 = e#case#1 in true)) { - core::int e = #t3{core::int}; + if((#4#1#isSet ?{core::int} #4#1{core::int} : let final core::bool #t6 = #4#1#isSet = true in #4#1 = #4#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1 && (let final core::int #t7 = e#case#0 = #4#0.{core::List::[]}(0){(core::int) → core::int} in true) && e#case#0.{core::num::>}(5){(core::num) → core::bool} && (let final core::int #t8 = #t5 = e#case#0 in true) || (#4#1#isSet ?{core::int} #4#1{core::int} : let final core::bool #t9 = #4#1#isSet = true in #4#1 = #4#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C3 && (let final core::int #t10 = e#case#1 = #4#0.{core::List::[]}(1){(core::int) → core::int} in true) && e#case#1.{core::num::<}(5){(core::num) → core::bool} && (let final core::int #t11 = #t5 = e#case#1 in true)) { + core::int e = #t5{core::int}; { core::print(e); } @@ -79,7 +79,7 @@ static method method(self::MyList /* erasure=core::List */ final synthesized self::MyMap /* erasure=core::Map */ #5#0 = map; { hoisted core::bool e; - if(#5#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool} && (let final core::bool #t10 = e = #5#0.{core::Map::[]}(#C1){(core::Object?) → core::bool?} as{Unchecked} core::bool in true)) { + if(#5#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool} && (let final core::bool #t12 = e = let core::bool? #t13 = #5#0.{core::Map::[]}(#C1){(core::Object?) → core::bool?} in #t13 == null ?{core::bool} #t13 as{Unchecked} core::bool : #t13{core::bool} in true)) { { core::print(e); } diff --git a/pkg/front_end/testcases/extensions/on_type_variable_inference2.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/on_type_variable_inference2.dart.weak.transformed.expect index e21d050ffe6..6c4a79e1258 100644 --- a/pkg/front_end/testcases/extensions/on_type_variable_inference2.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/extensions/on_type_variable_inference2.dart.weak.transformed.expect @@ -152,15 +152,15 @@ static method errors() → dynamic { self::Extension|set#property(new self::Struct::•(), invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:52:27: Error: The value 'null' can't be assigned to a variable of type 'Struct' because 'Struct' is not nullable. - 'Struct' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'. new Struct().property = null; // error - ^" in null as{TypeError,Unchecked} self::Struct); + ^" in let Null #t1 = null in #t1 == null ?{self::Struct} #t1 as{TypeError} self::Struct : #t1{self::Struct}); self::Extension|set#property(new self::StructA::•(), invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:53:28: Error: The value 'null' can't be assigned to a variable of type 'StructA' because 'StructA' is not nullable. - 'StructA' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'. new StructA().property = null; // error - ^" in null as{TypeError,Unchecked} self::StructA); + ^" in let Null #t2 = null in #t2 == null ?{self::StructA} #t2 as{TypeError} self::StructA : #t2{self::StructA}); self::Extension|set#property(new self::StructB::•(), invalid-expression "pkg/front_end/testcases/extensions/on_type_variable_inference2.dart:54:28: Error: The value 'null' can't be assigned to a variable of type 'StructB' because 'StructB' is not nullable. - 'StructB' is from 'pkg/front_end/testcases/extensions/on_type_variable_inference2.dart'. new StructB().property = null; // error - ^" in null as{TypeError,Unchecked} self::StructB); + ^" in let Null #t3 = null in #t3 == null ?{self::StructB} #t3 as{TypeError} self::StructB : #t3{self::StructB}); } static method testNonStruct() → dynamic { self::NonStruct nonStruct; diff --git a/pkg/front_end/testcases/general/bounds_as_is.dart.weak.transformed.expect b/pkg/front_end/testcases/general/bounds_as_is.dart.weak.transformed.expect index 99442d91917..f7ee37292c2 100644 --- a/pkg/front_end/testcases/general/bounds_as_is.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/general/bounds_as_is.dart.weak.transformed.expect @@ -110,7 +110,7 @@ static method t5a(dynamic o) → dynamic static method t6a(dynamic o) → dynamic return o as self::Class; static method t7a(dynamic o) → dynamic - return o as{Unchecked} core::Object; + return let dynamic #t1 = o in #t1 == null ?{core::Object} #t1 as core::Object : #t1{core::Object}; static method t8a(dynamic o) → dynamic return o as core::int; static method s1a(dynamic o) → dynamic diff --git a/pkg/front_end/testcases/general/candidate_found.dart.weak.transformed.expect b/pkg/front_end/testcases/general/candidate_found.dart.weak.transformed.expect index b5a5a3b788d..fffd72592e8 100644 --- a/pkg/front_end/testcases/general/candidate_found.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/general/candidate_found.dart.weak.transformed.expect @@ -70,6 +70,6 @@ static method test() → dynamic { ^"; invalid-expression "pkg/front_end/testcases/general/candidate_found.dart:21:24: Error: Too few positional arguments: 1 required, 0 given. (null as Fisk).method(); - ^" in (null as{Unchecked} self::Fisk).{self::Fisk::method}{}.(){() → invalid-type}; + ^" in (let Null #t1 = null in #t1 == null ?{self::Fisk} #t1 as self::Fisk : #t1{self::Fisk}).{self::Fisk::method}{}.(){() → invalid-type}; } static method main() → dynamic {} diff --git a/pkg/front_end/testcases/general/circularity-via-initializing-formal2.dart.weak.transformed.expect b/pkg/front_end/testcases/general/circularity-via-initializing-formal2.dart.weak.transformed.expect index afdf079caf2..d46778e59df 100644 --- a/pkg/front_end/testcases/general/circularity-via-initializing-formal2.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/general/circularity-via-initializing-formal2.dart.weak.transformed.expect @@ -24,7 +24,7 @@ class C extends core::Object { field self::C f = new self::C::_circular(invalid-expression "pkg/front_end/testcases/general/circularity-via-initializing-formal2.dart:14:27: Error: The value 'null' can't be assigned to the parameter type 'C' because 'C' is not nullable. - 'C' is from 'pkg/front_end/testcases/general/circularity-via-initializing-formal2.dart'. var f = new C._circular(null); - ^" in null as{TypeError,Unchecked} self::C); + ^" in let Null #t1 = null in #t1 == null ?{self::C} #t1 as{TypeError} self::C : #t1{self::C}); constructor _circular(self::C f) → self::C : self::C::f = f, super core::Object::•() ; @@ -32,5 +32,5 @@ class C extends core::Object { static field self::C x = new self::C::_circular(invalid-expression "pkg/front_end/testcases/general/circularity-via-initializing-formal2.dart:11:25: Error: The value 'null' can't be assigned to the parameter type 'C' because 'C' is not nullable. - 'C' is from 'pkg/front_end/testcases/general/circularity-via-initializing-formal2.dart'. var x = new C._circular(null); - ^" in null as{TypeError,Unchecked} self::C); + ^" in let Null #t2 = null in #t2 == null ?{self::C} #t2 as{TypeError} self::C : #t2{self::C}); static method main() → dynamic {} diff --git a/pkg/front_end/testcases/general/issue43400.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue43400.dart.weak.transformed.expect index 33cf91f573c..738b4c2de46 100644 --- a/pkg/front_end/testcases/general/issue43400.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/general/issue43400.dart.weak.transformed.expect @@ -25,4 +25,4 @@ extension Extension on self::Generic { static field self::Generic Extension|field = invalid-expression "pkg/front_end/testcases/general/issue43400.dart:8:29: Error: The value 'null' can't be assigned to a variable of type 'Generic' because 'Generic' is not nullable. - 'Generic' is from 'pkg/front_end/testcases/general/issue43400.dart'. static Generic field = null; - ^" in null as{TypeError,Unchecked} self::Generic; + ^" in let Null #t1 = null in #t1 == null ?{self::Generic} #t1 as{TypeError} self::Generic : #t1{self::Generic}; diff --git a/pkg/front_end/testcases/general/issue48090.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue48090.dart.weak.transformed.expect index cbf022b8490..1a88bc8dbe9 100644 --- a/pkg/front_end/testcases/general/issue48090.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/general/issue48090.dart.weak.transformed.expect @@ -18,5 +18,5 @@ static method main() → void { static method test() → void { core::String debugName = invalid-expression "pkg/front_end/testcases/general/issue48090.dart:12:38: Error: A value of type 'String?' can't be assigned to a variable of type 'String' because 'String?' is nullable and 'String' isn't. String debugName = Isolate.current.debugName; // error - ^" in iso::Isolate::current.{iso::Isolate::debugName}{core::String?} as{TypeError,Unchecked} core::String; + ^" in let core::String? #t2 = iso::Isolate::current.{iso::Isolate::debugName}{core::String?} in #t2 == null ?{core::String} #t2 as{TypeError} core::String : #t2{core::String}; } diff --git a/pkg/front_end/testcases/general/issue52726.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue52726.dart.weak.transformed.expect index c10f4931d99..5b8cb5c34c5 100644 --- a/pkg/front_end/testcases/general/issue52726.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/general/issue52726.dart.weak.transformed.expect @@ -19,6 +19,6 @@ class WeakMap extends core::Object o = invalid-expression "pkg/front_end/testcases/general/issue52726.dart:10:22: Error: A value of type 'Object?' can't be assigned to a variable of type 'Object' because 'Object?' is nullable and 'Object' isn't. - 'Object' is from 'dart:core'. Object o = first.first; // Error. - ^" in first.{core::Iterable::first}{core::Object?} as{TypeError,Unchecked} core::Object; + ^" in let core::Object? #t1 = first.{core::Iterable::first}{core::Object?} in #t1 == null ?{core::Object} #t1 as{TypeError} core::Object : #t1{core::Object}; } } diff --git a/pkg/front_end/testcases/general/issue52973_2.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue52973_2.dart.weak.transformed.expect index a9498a7e1f7..3bfdd95f7e9 100644 --- a/pkg/front_end/testcases/general/issue52973_2.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/general/issue52973_2.dart.weak.transformed.expect @@ -17,7 +17,7 @@ static method f(self::f::X? arg) → void { self::CheckType|expect, (core::List) → core::List>(ys); core::List ys2 = xs; self::CheckType|expect, (core::List) → core::List>(ys2); - core::List ys3 = xs as{Unchecked} core::List; + core::List ys3 = xs as core::List; self::CheckType|expect, (core::List) → core::List>(ys3); } } diff --git a/pkg/front_end/testcases/general/nested_variance2.dart.weak.transformed.expect b/pkg/front_end/testcases/general/nested_variance2.dart.weak.transformed.expect index 9cc9f536865..d472d47271b 100644 --- a/pkg/front_end/testcases/general/nested_variance2.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/general/nested_variance2.dart.weak.transformed.expect @@ -128,7 +128,7 @@ static method testTypeAliasAsTypeArgument(self::Acov<() → dynamic, dynamic> so = dynamic>() → void target2 = invalid-expression "pkg/front_end/testcases/general/nested_variance2.dart:84:42: Error: A value of type 'void Function>()' can't be assigned to a variable of type 'void Function>()' because 'Null' is nullable and 'Never' isn't. - 'Acon' is from 'pkg/front_end/testcases/general/nested_variance2.dart'. F, dynamic>> target2 = fsource2; - ^" in fsource2 as{TypeError,Unchecked} = dynamic>() → void; + ^" in fsource2 as{TypeError} = dynamic>() → void; = dynamic>() → void fsource3 = self::toF>(source3); = dynamic>() → void target3 = fsource3; = dynamic>() → void fsource4 = self::toF>(source4); diff --git a/pkg/front_end/testcases/general/type_variable_in_static_context.dart.weak.transformed.expect b/pkg/front_end/testcases/general/type_variable_in_static_context.dart.weak.transformed.expect index 7ce3d60bf1b..d57309b9062 100644 --- a/pkg/front_end/testcases/general/type_variable_in_static_context.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/general/type_variable_in_static_context.dart.weak.transformed.expect @@ -553,7 +553,7 @@ abstract class Mixin extends core::Object /*i return invalid-expression "pkg/front_end/testcases/general/type_variable_in_static_context.dart:132:30: Error: The value 'null' can't be returned from a function with return type 'Mixin' because 'Mixin' is not nullable. - 'Mixin' is from 'pkg/front_end/testcases/general/type_variable_in_static_context.dart'. factory Mixin.fact(T t) => null; - ^" in null as{TypeError,Unchecked} Never; + ^" in let Null #t1 = null in #t1 == null ?{Never} #t1 as{TypeError} Never : #t1{Never}; @invalid-expression "pkg/front_end/testcases/general/type_variable_in_static_context.dart:137:4: Error: Couldn't find constructor 'T'. @T() ^" diff --git a/pkg/front_end/testcases/incremental/no_outline_change_22.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_22.yaml.world.1.expect index 17442aef9c4..8b4cdc14aeb 100644 --- a/pkg/front_end/testcases/incremental/no_outline_change_22.yaml.world.1.expect +++ b/pkg/front_end/testcases/incremental/no_outline_change_22.yaml.world.1.expect @@ -318,7 +318,7 @@ library from "org-dartlang-test:///main.dart" as main { } } method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ fillRange(dart.core::int start, dart.core::int end, [covariant-by-class dart.core::int? fill = #C2]) → void { - dart.core::int value = let dart.core::int? #t6 = fill in #t6 == null ?{dart.core::int} #t6 as{Unchecked} dart.core::int : #t6{dart.core::int}; + dart.core::int value = let dart.core::int? #t6 = fill in #t6 == null ?{dart.core::int} let dart.core::int? #t7 = #t6 in #t7 == null ?{dart.core::int} #t7 as dart.core::int : #t7{dart.core::int} : #t6{dart.core::int}; dart.core::RangeError::checkValidRange(start, end, this.{dart.core::List::length}{dart.core::int}); for (dart.core::int i = start; i.{dart.core::num::<}(end){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) { this.{dart.core::List::[]=}(i, value){(dart.core::int, dart.core::int) → void}; @@ -492,7 +492,7 @@ library from "org-dartlang-test:///main.dart" as main { for (; :sync-for-iterator.{dart.core::Iterator::moveNext}(){() → dart.core::bool}; ) { dart.core::int element = :sync-for-iterator.{dart.core::Iterator::current}{dart.core::int}; { - this.{dart.core::List::[]=}(let final dart.core::int #t7 = index in let final dart.core::int #t8 = index = #t7.{dart.core::num::+}(1){(dart.core::num) → dart.core::int} in #t7, element){(dart.core::int, dart.core::int) → void}; + this.{dart.core::List::[]=}(let final dart.core::int #t8 = index in let final dart.core::int #t9 = index = #t8.{dart.core::num::+}(1){(dart.core::num) → dart.core::int} in #t8, element){(dart.core::int, dart.core::int) → void}; } } } diff --git a/pkg/front_end/testcases/incremental/no_outline_change_22.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_22.yaml.world.2.expect index 17442aef9c4..8b4cdc14aeb 100644 --- a/pkg/front_end/testcases/incremental/no_outline_change_22.yaml.world.2.expect +++ b/pkg/front_end/testcases/incremental/no_outline_change_22.yaml.world.2.expect @@ -318,7 +318,7 @@ library from "org-dartlang-test:///main.dart" as main { } } method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ fillRange(dart.core::int start, dart.core::int end, [covariant-by-class dart.core::int? fill = #C2]) → void { - dart.core::int value = let dart.core::int? #t6 = fill in #t6 == null ?{dart.core::int} #t6 as{Unchecked} dart.core::int : #t6{dart.core::int}; + dart.core::int value = let dart.core::int? #t6 = fill in #t6 == null ?{dart.core::int} let dart.core::int? #t7 = #t6 in #t7 == null ?{dart.core::int} #t7 as dart.core::int : #t7{dart.core::int} : #t6{dart.core::int}; dart.core::RangeError::checkValidRange(start, end, this.{dart.core::List::length}{dart.core::int}); for (dart.core::int i = start; i.{dart.core::num::<}(end){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) { this.{dart.core::List::[]=}(i, value){(dart.core::int, dart.core::int) → void}; @@ -492,7 +492,7 @@ library from "org-dartlang-test:///main.dart" as main { for (; :sync-for-iterator.{dart.core::Iterator::moveNext}(){() → dart.core::bool}; ) { dart.core::int element = :sync-for-iterator.{dart.core::Iterator::current}{dart.core::int}; { - this.{dart.core::List::[]=}(let final dart.core::int #t7 = index in let final dart.core::int #t8 = index = #t7.{dart.core::num::+}(1){(dart.core::num) → dart.core::int} in #t7, element){(dart.core::int, dart.core::int) → void}; + this.{dart.core::List::[]=}(let final dart.core::int #t8 = index in let final dart.core::int #t9 = index = #t8.{dart.core::num::+}(1){(dart.core::num) → dart.core::int} in #t8, element){(dart.core::int, dart.core::int) → void}; } } } diff --git a/pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart.weak.transformed.expect index 2024d28be43..568021626d4 100644 --- a/pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart.weak.transformed.expect @@ -48,7 +48,7 @@ static method foo() → dynamic { ^" in new self::B::•().{self::B::y}{core::int} as{TypeError} core::String; s = invalid-expression "pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart:24:32: Error: A value of type 'String?' can't be assigned to a variable of type 'String' because 'String?' is nullable and 'String' isn't. s = new B(). /*@target=B.z*/ z; - ^" in new self::B::•().{self::B::z}{core::String?} as{TypeError,Unchecked} core::String; + ^" in let core::String? #t1 = new self::B::•().{self::B::z}{core::String?} in #t1 == null ?{core::String} #t1 as{TypeError} core::String : #t1{core::String}; s = invalid-expression "pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart:25:61: Error: A value of type 'int' can't be assigned to a variable of type 'String'. s = /*error:INVALID_ASSIGNMENT*/ new B(). /*@target=B.w*/ w; ^" in new self::B::•().{self::B::w}{core::int} as{TypeError} core::String; diff --git a/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.weak.transformed.expect index 7629195966a..cc7676fcde8 100644 --- a/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.weak.transformed.expect @@ -110,7 +110,7 @@ static field dynamic i = invalid-expression "pkg/front_end/testcases/inference/i Try correcting the operator to an existing operator, or defining a 'unary-' operator. var i = /*error:UNDEFINED_OPERATOR,info:DYNAMIC_INVOKE*/ -new A(); ^" in new self::A::•(){}.unary-(); -static field self::B j = null as{Unchecked} self::B; +static field self::B j = let Null #t2 = null in #t2 == null ?{self::B} #t2 as self::B : #t2{self::B}; static method test1() → dynamic { self::a = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:36:36: Error: A value of type 'String' can't be assigned to a variable of type 'A'. - 'A' is from 'pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart'. @@ -128,16 +128,16 @@ static method test1() → dynamic { - 'List' is from 'dart:core'. c1 = /*error:INVALID_ASSIGNMENT*/ /*@typeArgs=dynamic*/ {}; ^" in ( block { - final core::Set #t2 = new col::_Set::•(); - } =>#t2) as{TypeError} core::List; + final core::Set #t3 = new col::_Set::•(); + } =>#t3) as{TypeError} core::List; self::c2 = core::_GrowableList::•(0); self::c2 = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:43:59: Error: A value of type 'Set' can't be assigned to a variable of type 'List'. - 'Set' is from 'dart:core'. - 'List' is from 'dart:core'. c2 = /*error:INVALID_ASSIGNMENT*/ /*@typeArgs=dynamic*/ {}; ^" in ( block { - final core::Set #t3 = new col::_Set::•(); - } =>#t3) as{TypeError} core::List; + final core::Set #t4 = new col::_Set::•(); + } =>#t4) as{TypeError} core::List; self::d = {}; self::d = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:45:36: Error: A value of type 'int' can't be assigned to a variable of type 'Map'. - 'Map' is from 'dart:core'. @@ -183,5 +183,5 @@ constants { Extra constant evaluation status: Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_from_complex_expressions_if_outer_most_value_is_precise.dart:27:25 -> IntConstant(5) Evaluated: InstanceInvocation @ org-dartlang-testcase:///infer_from_complex_expressions_if_outer_most_value_is_precise.dart:30:32 -> IntConstant(-3) -Evaluated: AsExpression @ org-dartlang-testcase:///infer_from_complex_expressions_if_outer_most_value_is_precise.dart:33:40 -> NullConstant(null) +Evaluated: Let @ org-dartlang-testcase:///infer_from_complex_expressions_if_outer_most_value_is_precise.dart:33:5 -> NullConstant(null) Extra constant evaluation: evaluated: 46, effectively constant: 3 diff --git a/pkg/front_end/testcases/inference/infer_throw_downwards.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_throw_downwards.dart.weak.transformed.expect index 89437731db9..aae0fb2ac68 100644 --- a/pkg/front_end/testcases/inference/infer_throw_downwards.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference/infer_throw_downwards.dart.weak.transformed.expect @@ -2,10 +2,10 @@ library test; import self as self; import "dart:core" as core; -static field Never x = throw self::f() as{TypeError,Unchecked} core::Object; +static field Never x = throw let dynamic #t1 = self::f() in #t1 == null ?{core::Object} #t1 as{TypeError} core::Object : #t1{core::Object}; static method f() → self::f::T% return throw ""; static method g() → void { - Never x = throw self::f() as{TypeError,Unchecked} core::Object; + Never x = throw let dynamic #t2 = self::f() in #t2 == null ?{core::Object} #t2 as{TypeError} core::Object : #t2{core::Object}; } static method main() → dynamic {} diff --git a/pkg/front_end/testcases/inference_new/strongly_connected_component.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/strongly_connected_component.dart.weak.transformed.expect index 459f1b7defe..86bd6fe54dd 100644 --- a/pkg/front_end/testcases/inference_new/strongly_connected_component.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference_new/strongly_connected_component.dart.weak.transformed.expect @@ -20,5 +20,5 @@ static field () → invalid-type z = () → invalid-type => self::x; static method f() → core::bool return invalid-expression "pkg/front_end/testcases/inference_new/strongly_connected_component.dart:8:13: Error: The value 'null' can't be returned from a function with return type 'bool' because 'bool' is not nullable. bool f() => null; - ^" in null as{TypeError,Unchecked} core::bool; + ^" in let Null #t1 = null in #t1 == null ?{core::bool} #t1 as{TypeError} core::bool : #t1{core::bool}; static method main() → dynamic {} diff --git a/pkg/front_end/testcases/inference_update_2/abstract_field.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_update_2/abstract_field.dart.weak.transformed.expect index a491f0cf792..9ca1d8bd42c 100644 --- a/pkg/front_end/testcases/inference_update_2/abstract_field.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference_update_2/abstract_field.dart.weak.transformed.expect @@ -20,7 +20,7 @@ class D extends core::Object { static method acceptsInt(core::int x) → void {} static method testAbstractFinalFieldIsPromotable(self::C c) → void { if(!(c.{self::C::_f1}{core::int?} == null)) { - core::int x = c.{self::C::_f1}{core::int?} as{Unchecked} core::int; + core::int x = let core::int? #t1 = c.{self::C::_f1}{core::int?} in #t1 == null ?{core::int} #t1 as{Unchecked} core::int : #t1{core::int}; self::acceptsInt(x); } } @@ -32,7 +32,7 @@ static method testAbstractNonFinalFieldIsNotPromotable(self::C c) → void { } static method testAbstractFinalFieldDoesNotBlockPromotionElsewhere(self::D d) → void { if(!(d.{self::D::_f1}{core::int?} == null)) { - core::int x = d.{self::D::_f1}{core::int?} as{Unchecked} core::int; + core::int x = let core::int? #t2 = d.{self::D::_f1}{core::int?} in #t2 == null ?{core::int} #t2 as{Unchecked} core::int : #t2{core::int}; self::acceptsInt(x); } } diff --git a/pkg/front_end/testcases/inference_update_2/basic_field_promotion.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_update_2/basic_field_promotion.dart.weak.transformed.expect index 269423e6493..7460ce1b1b7 100644 --- a/pkg/front_end/testcases/inference_update_2/basic_field_promotion.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference_update_2/basic_field_promotion.dart.weak.transformed.expect @@ -20,7 +20,7 @@ abstract class C extends core::Object { static method acceptsInt(core::int x) → void {} static method testPrivateFinalField(self::C c) → void { if(!(c.{self::C::_privateFinalField}{core::int?} == null)) { - core::int x = c.{self::C::_privateFinalField}{core::int?} as{Unchecked} core::int; + core::int x = let core::int? #t1 = c.{self::C::_privateFinalField}{core::int?} in #t1 == null ?{core::int} #t1 as{Unchecked} core::int : #t1{core::int}; self::acceptsInt(x); } } @@ -44,7 +44,7 @@ static method testPublicField(self::C c) → void { } static method testPrivateAbstractGetter(self::C c) → void { if(!(c.{self::C::_privateAbstractGetter}{core::int?} == null)) { - core::int x = c.{self::C::_privateAbstractGetter}{core::int?} as{Unchecked} core::int; + core::int x = let core::int? #t2 = c.{self::C::_privateAbstractGetter}{core::int?} in #t2 == null ?{core::int} #t2 as{Unchecked} core::int : #t2{core::int}; self::acceptsInt(x); } } diff --git a/pkg/front_end/testcases/inference_update_2/cascaded_field_promotion.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_update_2/cascaded_field_promotion.dart.weak.transformed.expect index f5409ee91fb..01db43bbb6d 100644 --- a/pkg/front_end/testcases/inference_update_2/cascaded_field_promotion.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference_update_2/cascaded_field_promotion.dart.weak.transformed.expect @@ -17,14 +17,14 @@ static method cascadedPropertyAccess(self::C c) → void { static method cascadedNullAwarePropertyAccess(self::C? c) → void { let final self::C? #t2 = c in #t2 == null ?{self::C?} null : block { #t2{self::C}.{self::C::_field}{core::Object?}!.{core::Object::toString}(){() → core::String}; - (#t2{self::C}.{self::C::_field}{core::Object?} as{Unchecked} core::Object).{core::Object::toString}(){() → core::String}; + (let core::Object? #t3 = #t2{self::C}.{self::C::_field}{core::Object?} in #t3 == null ?{core::Object} #t3 as{Unchecked} core::Object : #t3{core::Object}).{core::Object::toString}(){() → core::String}; } =>#t2; - let final self::C? #t3 = c in #t3 == null ?{core::Object?} null : #t3{self::C}.{self::C::_field}{core::Object?}; + let final self::C? #t4 = c in #t4 == null ?{core::Object?} null : #t4{self::C}.{self::C::_field}{core::Object?}; } static method cascadedInvocation(self::C c) → void { c.{self::C::_field}{core::Object?} as () → core::int; - let final self::C #t4 = c in block { - (#t4.{self::C::_field}{core::Object?} as{Unchecked} () → core::int)(){() → core::int}.{core::int::toString}(){() → core::String}; - } =>#t4; + let final self::C #t5 = c in block { + (#t5.{self::C::_field}{core::Object?} as{Unchecked} () → core::int)(){() → core::int}.{core::int::toString}(){() → core::String}; + } =>#t5; } static method main() → dynamic {} diff --git a/pkg/front_end/testcases/inference_update_2/field_promotion_and_no_such_method.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_update_2/field_promotion_and_no_such_method.dart.weak.transformed.expect index e2acc56f3e7..55635ce7942 100644 --- a/pkg/front_end/testcases/inference_update_2/field_promotion_and_no_such_method.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference_update_2/field_promotion_and_no_such_method.dart.weak.transformed.expect @@ -47,7 +47,7 @@ static method testConflictsWithNoSuchMethodForwarder(self::C c) → void { } static method testNoConflictWithNoSuchMethodForwarderForDifferentLib(self::C c) → void { if(!(c.{self::C::_f2}{core::int?} == null)) { - core::int x = c.{self::C::_f2}{core::int?} as{Unchecked} core::int; + core::int x = let core::int? #t1 = c.{self::C::_f2}{core::int?} in #t1 == null ?{core::int} #t1 as{Unchecked} core::int : #t1{core::int}; self::acceptsInt(x); } } diff --git a/pkg/front_end/testcases/inference_update_2/field_promotion_name_conflicts.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_update_2/field_promotion_name_conflicts.dart.weak.transformed.expect index 256e8ce9c85..d622a79af94 100644 --- a/pkg/front_end/testcases/inference_update_2/field_promotion_name_conflicts.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference_update_2/field_promotion_name_conflicts.dart.weak.transformed.expect @@ -58,7 +58,7 @@ static extension-member method _extension#0|get#_f10(lowered final core::String static method acceptsInt(core::int x) → void {} static method testFinalField(self::C c) → void { if(!(c.{self::C::_f1}{core::int?} == null)) { - core::int x = c.{self::C::_f1}{core::int?} as{Unchecked} core::int; + core::int x = let core::int? #t1 = c.{self::C::_f1}{core::int?} in #t1 == null ?{core::int} #t1 as{Unchecked} core::int : #t1{core::int}; self::acceptsInt(x); } } @@ -70,7 +70,7 @@ static method testNonFinalField(self::C c) → void { } static method testAbstractGetter(self::C c) → void { if(!(c.{self::C::_f3}{core::int?} == null)) { - core::int x = c.{self::C::_f3}{core::int?} as{Unchecked} core::int; + core::int x = let core::int? #t2 = c.{self::C::_f3}{core::int?} in #t2 == null ?{core::int} #t2 as{Unchecked} core::int : #t2{core::int}; self::acceptsInt(x); } } @@ -82,37 +82,37 @@ static method testConcreteGetter(self::C c) → void { } static method testSetter(self::C c) → void { if(!(c.{self::C::_f5}{core::int?} == null)) { - core::int x = c.{self::C::_f5}{core::int?} as{Unchecked} core::int; + core::int x = let core::int? #t3 = c.{self::C::_f5}{core::int?} in #t3 == null ?{core::int} #t3 as{Unchecked} core::int : #t3{core::int}; self::acceptsInt(x); } } static method testStaticField(self::C c) → void { if(!(c.{self::C::_f6}{core::int?} == null)) { - core::int x = c.{self::C::_f6}{core::int?} as{Unchecked} core::int; + core::int x = let core::int? #t4 = c.{self::C::_f6}{core::int?} in #t4 == null ?{core::int} #t4 as{Unchecked} core::int : #t4{core::int}; self::acceptsInt(x); } } static method testStaticGetter(self::C c) → void { if(!(c.{self::C::_f7}{core::int?} == null)) { - core::int x = c.{self::C::_f7}{core::int?} as{Unchecked} core::int; + core::int x = let core::int? #t5 = c.{self::C::_f7}{core::int?} in #t5 == null ?{core::int} #t5 as{Unchecked} core::int : #t5{core::int}; self::acceptsInt(x); } } static method testTopLevelField(self::C c) → void { if(!(c.{self::C::_f8}{core::int?} == null)) { - core::int x = c.{self::C::_f8}{core::int?} as{Unchecked} core::int; + core::int x = let core::int? #t6 = c.{self::C::_f8}{core::int?} in #t6 == null ?{core::int} #t6 as{Unchecked} core::int : #t6{core::int}; self::acceptsInt(x); } } static method testTopLevelGetter(self::C c) → void { if(!(c.{self::C::_f9}{core::int?} == null)) { - core::int x = c.{self::C::_f9}{core::int?} as{Unchecked} core::int; + core::int x = let core::int? #t7 = c.{self::C::_f9}{core::int?} in #t7 == null ?{core::int} #t7 as{Unchecked} core::int : #t7{core::int}; self::acceptsInt(x); } } static method testExtensionGetter(self::C c) → void { if(!(c.{self::C::_f10}{core::int?} == null)) { - core::int x = c.{self::C::_f10}{core::int?} as{Unchecked} core::int; + core::int x = let core::int? #t8 = c.{self::C::_f10}{core::int?} in #t8 == null ?{core::int} #t8 as{Unchecked} core::int : #t8{core::int}; self::acceptsInt(x); } } diff --git a/pkg/front_end/testcases/inference_update_2/issue52452.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_update_2/issue52452.dart.weak.transformed.expect index f49be602142..abb6ad521dc 100644 --- a/pkg/front_end/testcases/inference_update_2/issue52452.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference_update_2/issue52452.dart.weak.transformed.expect @@ -63,13 +63,13 @@ static method testConflictWithNoSuchMethodForwarderIfImplementedInMixin(self::C } static method testNoConflictWithNoSuchMethodForwarderIfImplementedInMixin1(self::C c) → void { if(!(c.{self::C::_f3}{core::int?} == null)) { - core::int x = c.{self::C::_f3}{core::int?} as{Unchecked} core::int; + core::int x = let core::int? #t1 = c.{self::C::_f3}{core::int?} in #t1 == null ?{core::int} #t1 as{Unchecked} core::int : #t1{core::int}; self::acceptsInt(x); } } static method testNoConflictWithNoSuchMethodForwarderIfImplementedInMixin2(self::C c) → void { if(!(c.{self::C::_f4}{core::int?} == null)) { - core::int x = c.{self::C::_f4}{core::int?} as{Unchecked} core::int; + core::int x = let core::int? #t2 = c.{self::C::_f4}{core::int?} in #t2 == null ?{core::int} #t2 as{Unchecked} core::int : #t2{core::int}; self::acceptsInt(x); } } diff --git a/pkg/front_end/testcases/late_lowering/caching.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/caching.dart.weak.transformed.expect index 6eda0848edf..d3389ccc727 100644 --- a/pkg/front_end/testcases/late_lowering/caching.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/late_lowering/caching.dart.weak.transformed.expect @@ -138,7 +138,7 @@ static method ifCase(dynamic o) → core::int { } { final synthesized dynamic #17#0 = o; - if(#17#0 is core::Map && #17#0{core::Map}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool} && (#17#0{core::Map}.{core::Map::[]}(#C3){(core::Object?) → core::int?} as{Unchecked} core::int).{core::num::>=}(#C11){(core::num) → core::bool}) { + if(#17#0 is core::Map && #17#0{core::Map}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool} && (let core::int? #t42 = #17#0{core::Map}.{core::Map::[]}(#C3){(core::Object?) → core::int?} in #t42 == null ?{core::int} #t42 as{Unchecked} core::int : #t42{core::int}).{core::num::>=}(#C11){(core::num) → core::bool}) { return 18; } } @@ -190,8 +190,8 @@ static method ifCase(dynamic o) → core::int { synthesized core::bool #24#4#isSet = false; { hoisted core::int b; - if(#24#0 is core::Map && #24#0{core::Map}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool #t42 = #24#4#isSet = true in #24#4 = #24#0{core::Map}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int) { - b = (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool #t43 = #24#4#isSet = true in #24#4 = #24#0{core::Map}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int; + if(#24#0 is core::Map && #24#0{core::Map}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool #t43 = #24#4#isSet = true in #24#4 = #24#0{core::Map}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int) { + b = (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool #t44 = #24#4#isSet = true in #24#4 = #24#0{core::Map}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int; { return 25; } @@ -220,7 +220,7 @@ static method ifCase(dynamic o) → core::int { final synthesized dynamic #27#0 = o; { hoisted dynamic d; - if(#27#0 is ({c: core::Object?, d: core::Object?}) && #C12 =={core::num::==}{(core::Object) → core::bool} #27#0{({c: core::Object?, d: core::Object?})}.c{core::Object?} && (let final core::Object? #t44 = d = #27#0{({c: core::Object?, d: core::Object?})}.d{core::Object?} in true) && d is core::int) { + if(#27#0 is ({c: core::Object?, d: core::Object?}) && #C12 =={core::num::==}{(core::Object) → core::bool} #27#0{({c: core::Object?, d: core::Object?})}.c{core::Object?} && (let final core::Object? #t45 = d = #27#0{({c: core::Object?, d: core::Object?})}.d{core::Object?} in true) && d is core::int) { return 28; } } @@ -238,7 +238,7 @@ static method ifCaseElse(dynamic o) → core::int { final synthesized dynamic #1#0 = o; synthesized core::Object? #1#2; synthesized core::bool #1#2#isSet = false; - if(#1#0 is ({f: core::Object?}) && ((let final core::int #t45 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t46 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t47 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t48 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t49 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t50 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) { + if(#1#0 is ({f: core::Object?}) && ((let final core::int #t46 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t47 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t48 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t49 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t50 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t51 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) { return 2; } else { @@ -250,12 +250,12 @@ static method ifCaseElse(dynamic o) → core::int { final synthesized dynamic #3#0 = o; synthesized core::Object? #3#2; synthesized core::bool #3#2#isSet = false; - if(#3#0 is ({g: core::Object?}) && (let final core::int #t51 = (#3#2#isSet ?{core::Object?} #3#2{core::Object?} : let final core::bool #t52 = #3#2#isSet = true in #3#2 = #3#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#3#2#isSet ?{core::Object?} #3#2{core::Object?} : let final core::bool #t53 = #3#2#isSet = true in #3#2 = #3#0{({g: core::Object?})}.g{core::Object?}) as core::int)) { + if(#3#0 is ({g: core::Object?}) && (let final core::int #t52 = (#3#2#isSet ?{core::Object?} #3#2{core::Object?} : let final core::bool #t53 = #3#2#isSet = true in #3#2 = #3#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#3#2#isSet ?{core::Object?} #3#2{core::Object?} : let final core::bool #t54 = #3#2#isSet = true in #3#2 = #3#0{({g: core::Object?})}.g{core::Object?}) as core::int)) { return 4; } else { final synthesized dynamic #4#0 = o; - if(#4#0 is ({a: core::Object?}) && (let final core::Object? #t54 = #4#0{({a: core::Object?})}.a{core::Object?}! in true)) { + if(#4#0 is ({a: core::Object?}) && (let final core::Object? #t55 = #4#0{({a: core::Object?})}.a{core::Object?}! in true)) { return 5; } else { @@ -277,7 +277,7 @@ static method ifCaseElse(dynamic o) → core::int { final synthesized dynamic #8#0 = o; synthesized core::int #8#2; synthesized core::bool #8#2#isSet = false; - if(#8#0 is core::List && (#8#2#isSet ?{core::int} #8#2{core::int} : let final core::bool #t55 = #8#2#isSet = true in #8#2 = #8#0{core::List}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List}.{core::List::[]}(0){(core::int) → dynamic} && #C8 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List}.{core::List::[]}(1){(core::int) → dynamic} && #C3 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List}.{core::List::[]}((#8#2#isSet ?{core::int} #8#2{core::int} : let final core::bool #t56 = #8#2#isSet = true in #8#2 = #8#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) { + if(#8#0 is core::List && (#8#2#isSet ?{core::int} #8#2{core::int} : let final core::bool #t56 = #8#2#isSet = true in #8#2 = #8#0{core::List}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List}.{core::List::[]}(0){(core::int) → dynamic} && #C8 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List}.{core::List::[]}(1){(core::int) → dynamic} && #C3 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List}.{core::List::[]}((#8#2#isSet ?{core::int} #8#2{core::int} : let final core::bool #t57 = #8#2#isSet = true in #8#2 = #8#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) { return 9; } else { @@ -288,7 +288,7 @@ static method ifCaseElse(dynamic o) → core::int { synthesized core::bool #9#15#isSet = false; synthesized dynamic #9#19; synthesized core::bool #9#19#isSet = false; - if(#9#0 is core::List && #9#0{core::List}.{core::List::length}{core::int}.{core::num::>=}(#C7){(core::num) → core::bool} && #C8 =={core::num::==}{(core::Object) → core::bool} #9#0{core::List}.{core::List::[]}(0){(core::int) → dynamic} && #C3 =={core::num::==}{(core::Object) → core::bool} #9#0{core::List}.{core::List::[]}(1){(core::int) → dynamic} && ((#9#12#isSet ?{core::List} #9#12{core::List} : let final core::bool #t57 = #9#12#isSet = true in #9#12 = #9#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t58 = (#9#15#isSet ?{dynamic} #9#15{dynamic} : let final core::bool #t59 = #9#15#isSet = true in #9#15 = (#9#12#isSet ?{core::List} #9#12{core::List} : let final core::bool #t60 = #9#12#isSet = true in #9#12 = #9#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#9#15#isSet ?{dynamic} #9#15{dynamic} : let final core::bool #t61 = #9#15#isSet = true in #9#15 = (#9#12#isSet ?{core::List} #9#12{core::List} : let final core::bool #t62 = #9#12#isSet = true in #9#12 = #9#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t63 = (#9#19#isSet ?{dynamic} #9#19{dynamic} : let final core::bool #t64 = #9#19#isSet = true in #9#19 = (#9#12#isSet ?{core::List} #9#12{core::List} : let final core::bool #t65 = #9#12#isSet = true in #9#12 = #9#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#9#19#isSet ?{dynamic} #9#19{dynamic} : let final core::bool #t66 = #9#19#isSet = true in #9#19 = (#9#12#isSet ?{core::List} #9#12{core::List} : let final core::bool #t67 = #9#12#isSet = true in #9#12 = #9#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) { + if(#9#0 is core::List && #9#0{core::List}.{core::List::length}{core::int}.{core::num::>=}(#C7){(core::num) → core::bool} && #C8 =={core::num::==}{(core::Object) → core::bool} #9#0{core::List}.{core::List::[]}(0){(core::int) → dynamic} && #C3 =={core::num::==}{(core::Object) → core::bool} #9#0{core::List}.{core::List::[]}(1){(core::int) → dynamic} && ((#9#12#isSet ?{core::List} #9#12{core::List} : let final core::bool #t58 = #9#12#isSet = true in #9#12 = #9#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t59 = (#9#15#isSet ?{dynamic} #9#15{dynamic} : let final core::bool #t60 = #9#15#isSet = true in #9#15 = (#9#12#isSet ?{core::List} #9#12{core::List} : let final core::bool #t61 = #9#12#isSet = true in #9#12 = #9#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#9#15#isSet ?{dynamic} #9#15{dynamic} : let final core::bool #t62 = #9#15#isSet = true in #9#15 = (#9#12#isSet ?{core::List} #9#12{core::List} : let final core::bool #t63 = #9#12#isSet = true in #9#12 = #9#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t64 = (#9#19#isSet ?{dynamic} #9#19{dynamic} : let final core::bool #t65 = #9#19#isSet = true in #9#19 = (#9#12#isSet ?{core::List} #9#12{core::List} : let final core::bool #t66 = #9#12#isSet = true in #9#12 = #9#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#9#19#isSet ?{dynamic} #9#19{dynamic} : let final core::bool #t67 = #9#19#isSet = true in #9#19 = (#9#12#isSet ?{core::List} #9#12{core::List} : let final core::bool #t68 = #9#12#isSet = true in #9#12 = #9#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) { return 10; } else { @@ -301,7 +301,7 @@ static method ifCaseElse(dynamic o) → core::int { synthesized core::bool #10#16#isSet = false; synthesized dynamic #10#20; synthesized core::bool #10#20#isSet = false; - if(#10#0 is core::List && (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t68 = #10#2#isSet = true in #10#2 = #10#0{core::List}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C3 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List}.{core::List::[]}(0){(core::int) → dynamic} && #C4 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List}.{core::List::[]}(1){(core::int) → dynamic} && ((#10#12#isSet ?{core::List} #10#12{core::List} : let final core::bool #t69 = #10#12#isSet = true in #10#12 = #10#0{core::List}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t70 = #10#2#isSet = true in #10#2 = #10#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t71 = (#10#16#isSet ?{dynamic} #10#16{dynamic} : let final core::bool #t72 = #10#16#isSet = true in #10#16 = (#10#12#isSet ?{core::List} #10#12{core::List} : let final core::bool #t73 = #10#12#isSet = true in #10#12 = #10#0{core::List}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t74 = #10#2#isSet = true in #10#2 = #10#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#10#16#isSet ?{dynamic} #10#16{dynamic} : let final core::bool #t75 = #10#16#isSet = true in #10#16 = (#10#12#isSet ?{core::List} #10#12{core::List} : let final core::bool #t76 = #10#12#isSet = true in #10#12 = #10#0{core::List}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t77 = #10#2#isSet = true in #10#2 = #10#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t78 = (#10#20#isSet ?{dynamic} #10#20{dynamic} : let final core::bool #t79 = #10#20#isSet = true in #10#20 = (#10#12#isSet ?{core::List} #10#12{core::List} : let final core::bool #t80 = #10#12#isSet = true in #10#12 = #10#0{core::List}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t81 = #10#2#isSet = true in #10#2 = #10#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#10#20#isSet ?{dynamic} #10#20{dynamic} : let final core::bool #t82 = #10#20#isSet = true in #10#20 = (#10#12#isSet ?{core::List} #10#12{core::List} : let final core::bool #t83 = #10#12#isSet = true in #10#12 = #10#0{core::List}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t84 = #10#2#isSet = true in #10#2 = #10#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List}.{core::List::[]}((#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t85 = #10#2#isSet = true in #10#2 = #10#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) { + if(#10#0 is core::List && (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t69 = #10#2#isSet = true in #10#2 = #10#0{core::List}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C3 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List}.{core::List::[]}(0){(core::int) → dynamic} && #C4 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List}.{core::List::[]}(1){(core::int) → dynamic} && ((#10#12#isSet ?{core::List} #10#12{core::List} : let final core::bool #t70 = #10#12#isSet = true in #10#12 = #10#0{core::List}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t71 = #10#2#isSet = true in #10#2 = #10#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t72 = (#10#16#isSet ?{dynamic} #10#16{dynamic} : let final core::bool #t73 = #10#16#isSet = true in #10#16 = (#10#12#isSet ?{core::List} #10#12{core::List} : let final core::bool #t74 = #10#12#isSet = true in #10#12 = #10#0{core::List}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t75 = #10#2#isSet = true in #10#2 = #10#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#10#16#isSet ?{dynamic} #10#16{dynamic} : let final core::bool #t76 = #10#16#isSet = true in #10#16 = (#10#12#isSet ?{core::List} #10#12{core::List} : let final core::bool #t77 = #10#12#isSet = true in #10#12 = #10#0{core::List}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t78 = #10#2#isSet = true in #10#2 = #10#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t79 = (#10#20#isSet ?{dynamic} #10#20{dynamic} : let final core::bool #t80 = #10#20#isSet = true in #10#20 = (#10#12#isSet ?{core::List} #10#12{core::List} : let final core::bool #t81 = #10#12#isSet = true in #10#12 = #10#0{core::List}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t82 = #10#2#isSet = true in #10#2 = #10#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#10#20#isSet ?{dynamic} #10#20{dynamic} : let final core::bool #t83 = #10#20#isSet = true in #10#20 = (#10#12#isSet ?{core::List} #10#12{core::List} : let final core::bool #t84 = #10#12#isSet = true in #10#12 = #10#0{core::List}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t85 = #10#2#isSet = true in #10#2 = #10#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List}.{core::List::[]}((#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t86 = #10#2#isSet = true in #10#2 = #10#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) { return 11; } else { @@ -336,7 +336,7 @@ static method ifCaseElse(dynamic o) → core::int { } else { final synthesized dynamic #17#0 = o; - if(#17#0 is core::Map && #17#0{core::Map}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool} && (#17#0{core::Map}.{core::Map::[]}(#C3){(core::Object?) → core::int?} as{Unchecked} core::int).{core::num::>=}(#C11){(core::num) → core::bool}) { + if(#17#0 is core::Map && #17#0{core::Map}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool} && (let core::int? #t87 = #17#0{core::Map}.{core::Map::[]}(#C3){(core::Object?) → core::int?} in #t87 == null ?{core::int} #t87 as{Unchecked} core::int : #t87{core::int}).{core::num::>=}(#C11){(core::num) → core::bool}) { return 18; } else { @@ -380,8 +380,8 @@ static method ifCaseElse(dynamic o) → core::int { synthesized core::bool #24#4#isSet = false; { hoisted core::int b; - if(#24#0 is core::Map && #24#0{core::Map}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool #t86 = #24#4#isSet = true in #24#4 = #24#0{core::Map}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int) { - b = (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool #t87 = #24#4#isSet = true in #24#4 = #24#0{core::Map}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int; + if(#24#0 is core::Map && #24#0{core::Map}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool #t88 = #24#4#isSet = true in #24#4 = #24#0{core::Map}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int) { + b = (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool #t89 = #24#4#isSet = true in #24#4 = #24#0{core::Map}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int; { return 25; } @@ -405,7 +405,7 @@ static method ifCaseElse(dynamic o) → core::int { final synthesized dynamic #27#0 = o; { hoisted dynamic d; - if(#27#0 is ({c: core::Object?, d: core::Object?}) && #C12 =={core::num::==}{(core::Object) → core::bool} #27#0{({c: core::Object?, d: core::Object?})}.c{core::Object?} && (let final core::Object? #t88 = d = #27#0{({c: core::Object?, d: core::Object?})}.d{core::Object?} in true) && d is core::int) { + if(#27#0 is ({c: core::Object?, d: core::Object?}) && #C12 =={core::num::==}{(core::Object) → core::bool} #27#0{({c: core::Object?, d: core::Object?})}.c{core::Object?} && (let final core::Object? #t90 = d = #27#0{({c: core::Object?, d: core::Object?})}.d{core::Object?} in true) && d is core::int) { return 28; } else { @@ -493,7 +493,7 @@ static method switchStatement(dynamic o) → core::int { } } { - if(#0#0 is ({f: core::Object?}) && ((let final core::int #t89 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t90 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t91 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t92 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t93 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t94 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) { + if(#0#0 is ({f: core::Object?}) && ((let final core::int #t91 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t92 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t93 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t94 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t95 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t96 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) { { return 2; } @@ -507,63 +507,63 @@ static method switchStatement(dynamic o) → core::int { } } { - if(#0#0 is ({g: core::Object?}) && (let final core::int #t95 = (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool #t96 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool #t97 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int)) { + if(#0#0 is ({g: core::Object?}) && (let final core::int #t97 = (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool #t98 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool #t99 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int)) { { return 4; } } } { - if(#0#0 is ({a: core::Object?}) && (let final core::Object? #t98 = (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool #t99 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?})}.a{core::Object?})! in true)) { + if(#0#0 is ({a: core::Object?}) && (let final core::Object? #t100 = (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool #t101 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?})}.a{core::Object?})! in true)) { { return 5; } } } { - if(#0#0 is ({b: core::Object?}) && (!((#0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool #t100 = #0#23#isSet = true in #0#23 = #0#0{({b: core::Object?})}.b{core::Object?}) == null) && true)) { + if(#0#0 is ({b: core::Object?}) && (!((#0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool #t102 = #0#23#isSet = true in #0#23 = #0#0{({b: core::Object?})}.b{core::Object?}) == null) && true)) { { return 6; } } } { - if(#0#0 is core::List && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t101 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t102 = #0#30#isSet = true in #0#30 = #0#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t103 = #0#32#isSet = true in #0#32 = #0#0{core::List}.{core::List::[]}(1){(core::int) → dynamic})) { + if(#0#0 is core::List && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t103 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t104 = #0#30#isSet = true in #0#30 = #0#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t105 = #0#32#isSet = true in #0#32 = #0#0{core::List}.{core::List::[]}(1){(core::int) → dynamic})) { { return 7; } } } { - if(#0#0 is core::List && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool #t104 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t105 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t106 = #0#30#isSet = true in #0#30 = #0#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t107 = #0#32#isSet = true in #0#32 = #0#0{core::List}.{core::List::[]}(1){(core::int) → dynamic})) { + if(#0#0 is core::List && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool #t106 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t107 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t108 = #0#30#isSet = true in #0#30 = #0#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t109 = #0#32#isSet = true in #0#32 = #0#0{core::List}.{core::List::[]}(1){(core::int) → dynamic})) { { return 8; } } } { - if(#0#0 is core::List && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool #t108 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t109 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t110 = #0#30#isSet = true in #0#30 = #0#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t111 = #0#32#isSet = true in #0#32 = #0#0{core::List}.{core::List::[]}(1){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool #t112 = #0#43#isSet = true in #0#43 = #0#0{core::List}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t113 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) { + if(#0#0 is core::List && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool #t110 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t111 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t112 = #0#30#isSet = true in #0#30 = #0#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t113 = #0#32#isSet = true in #0#32 = #0#0{core::List}.{core::List::[]}(1){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool #t114 = #0#43#isSet = true in #0#43 = #0#0{core::List}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t115 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) { { return 9; } } } { - if(#0#0 is core::List && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool #t114 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t115 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t116 = #0#30#isSet = true in #0#30 = #0#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t117 = #0#32#isSet = true in #0#32 = #0#0{core::List}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#47#isSet ?{core::List} #0#47{core::List} : let final core::bool #t118 = #0#47#isSet = true in #0#47 = #0#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t119 = (#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool #t120 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List} #0#47{core::List} : let final core::bool #t121 = #0#47#isSet = true in #0#47 = #0#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool #t122 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List} #0#47{core::List} : let final core::bool #t123 = #0#47#isSet = true in #0#47 = #0#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t124 = (#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool #t125 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List} #0#47{core::List} : let final core::bool #t126 = #0#47#isSet = true in #0#47 = #0#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool #t127 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List} #0#47{core::List} : let final core::bool #t128 = #0#47#isSet = true in #0#47 = #0#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) { + if(#0#0 is core::List && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool #t116 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t117 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t118 = #0#30#isSet = true in #0#30 = #0#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t119 = #0#32#isSet = true in #0#32 = #0#0{core::List}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#47#isSet ?{core::List} #0#47{core::List} : let final core::bool #t120 = #0#47#isSet = true in #0#47 = #0#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t121 = (#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool #t122 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List} #0#47{core::List} : let final core::bool #t123 = #0#47#isSet = true in #0#47 = #0#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool #t124 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List} #0#47{core::List} : let final core::bool #t125 = #0#47#isSet = true in #0#47 = #0#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t126 = (#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool #t127 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List} #0#47{core::List} : let final core::bool #t128 = #0#47#isSet = true in #0#47 = #0#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool #t129 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List} #0#47{core::List} : let final core::bool #t130 = #0#47#isSet = true in #0#47 = #0#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) { { return 10; } } } { - if(#0#0 is core::List && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool #t129 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t130 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t131 = #0#30#isSet = true in #0#30 = #0#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t132 = #0#32#isSet = true in #0#32 = #0#0{core::List}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#58#isSet ?{core::List} #0#58{core::List} : let final core::bool #t133 = #0#58#isSet = true in #0#58 = #0#0{core::List}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t134 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t135 = (#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool #t136 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List} #0#58{core::List} : let final core::bool #t137 = #0#58#isSet = true in #0#58 = #0#0{core::List}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t138 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool #t139 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List} #0#58{core::List} : let final core::bool #t140 = #0#58#isSet = true in #0#58 = #0#0{core::List}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t141 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t142 = (#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool #t143 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List} #0#58{core::List} : let final core::bool #t144 = #0#58#isSet = true in #0#58 = #0#0{core::List}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t145 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool #t146 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List} #0#58{core::List} : let final core::bool #t147 = #0#58#isSet = true in #0#58 = #0#0{core::List}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t148 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool #t149 = #0#43#isSet = true in #0#43 = #0#0{core::List}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t150 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) { + if(#0#0 is core::List && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool #t131 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t132 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t133 = #0#30#isSet = true in #0#30 = #0#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t134 = #0#32#isSet = true in #0#32 = #0#0{core::List}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#58#isSet ?{core::List} #0#58{core::List} : let final core::bool #t135 = #0#58#isSet = true in #0#58 = #0#0{core::List}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t136 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t137 = (#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool #t138 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List} #0#58{core::List} : let final core::bool #t139 = #0#58#isSet = true in #0#58 = #0#0{core::List}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t140 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool #t141 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List} #0#58{core::List} : let final core::bool #t142 = #0#58#isSet = true in #0#58 = #0#0{core::List}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t143 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t144 = (#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool #t145 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List} #0#58{core::List} : let final core::bool #t146 = #0#58#isSet = true in #0#58 = #0#0{core::List}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t147 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool #t148 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List} #0#58{core::List} : let final core::bool #t149 = #0#58#isSet = true in #0#58 = #0#0{core::List}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t150 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool #t151 = #0#43#isSet = true in #0#43 = #0#0{core::List}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t152 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) { { return 11; } } } { - if(#0#0 is self::Class && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool #t151 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int})) { + if(#0#0 is self::Class && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool #t153 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int})) { { return 12; } @@ -577,7 +577,7 @@ static method switchStatement(dynamic o) → core::int { } } { - if(#0#0 is self::Class && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool #t152 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int}) && #C8 =={core::num::==}{(core::Object) → core::bool} #0#0{self::Class}.{self::Class::getter}{core::int}) { + if(#0#0 is self::Class && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool #t154 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int}) && #C8 =={core::num::==}{(core::Object) → core::bool} #0#0{self::Class}.{self::Class::getter}{core::int}) { { return 14; } @@ -605,14 +605,14 @@ static method switchStatement(dynamic o) → core::int { } } { - if(#0#0 is core::Map && #0#0{core::Map}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool} && (#0#0{core::Map}.{core::Map::[]}(#C3){(core::Object?) → core::int?} as{Unchecked} core::int).{core::num::>=}(#C11){(core::num) → core::bool}) { + if(#0#0 is core::Map && #0#0{core::Map}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool} && (let core::int? #t155 = #0#0{core::Map}.{core::Map::[]}(#C3){(core::Object?) → core::int?} in #t155 == null ?{core::int} #t155 as{Unchecked} core::int : #t155{core::int}).{core::num::>=}(#C11){(core::num) → core::bool}) { { return 18; } } } { - if(#0#0 is core::List && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t153 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1) { + if(#0#0 is core::List && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t156 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1) { { return 19; } @@ -648,7 +648,7 @@ static method switchStatement(dynamic o) → core::int { } { hoisted dynamic a; - if(#0#0 is core::Map && #0#0{core::Map}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool} && (let final dynamic #t154 = a = #0#0{core::Map}.{core::Map::[]}(#C7){(core::Object?) → dynamic} in true)) { + if(#0#0 is core::Map && #0#0{core::Map}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool} && (let final dynamic #t157 = a = #0#0{core::Map}.{core::Map::[]}(#C7){(core::Object?) → dynamic} in true)) { { return 24; } @@ -656,7 +656,7 @@ static method switchStatement(dynamic o) → core::int { } { hoisted core::int b; - if(#0#0 is core::Map && #0#0{core::Map}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && ((#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool #t155 = #0#98#isSet = true in #0#98 = #0#0{core::Map}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int && (let final core::int #t156 = b = (#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool #t157 = #0#98#isSet = true in #0#98 = #0#0{core::Map}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int in true))) { + if(#0#0 is core::Map && #0#0{core::Map}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && ((#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool #t158 = #0#98#isSet = true in #0#98 = #0#0{core::Map}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int && (let final core::int #t159 = b = (#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool #t160 = #0#98#isSet = true in #0#98 = #0#0{core::Map}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int in true))) { { return 25; } @@ -671,7 +671,7 @@ static method switchStatement(dynamic o) → core::int { } { hoisted dynamic c; - if(#0#0 is ({a: core::Object?, b: core::Object?}) && #C12 =={core::num::==}{(core::Object) → core::bool} (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool #t158 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?, b: core::Object?})}.a{core::Object?}) && (let final core::Object? #t159 = c = #0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool #t160 = #0#23#isSet = true in #0#23 = #0#0{({a: core::Object?, b: core::Object?})}.b{core::Object?} in true)) { + if(#0#0 is ({a: core::Object?, b: core::Object?}) && #C12 =={core::num::==}{(core::Object) → core::bool} (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool #t161 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?, b: core::Object?})}.a{core::Object?}) && (let final core::Object? #t162 = c = #0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool #t163 = #0#23#isSet = true in #0#23 = #0#0{({a: core::Object?, b: core::Object?})}.b{core::Object?} in true)) { { return 27; } @@ -679,7 +679,7 @@ static method switchStatement(dynamic o) → core::int { } { hoisted dynamic d; - if(#0#0 is ({c: core::Object?, d: core::Object?}) && #C12 =={core::num::==}{(core::Object) → core::bool} #0#0{({c: core::Object?, d: core::Object?})}.c{core::Object?} && (let final core::Object? #t161 = d = #0#0{({c: core::Object?, d: core::Object?})}.d{core::Object?} in true) && d is core::int) { + if(#0#0 is ({c: core::Object?, d: core::Object?}) && #C12 =={core::num::==}{(core::Object) → core::bool} #0#0{({c: core::Object?, d: core::Object?})}.c{core::Object?} && (let final core::Object? #t164 = d = #0#0{({c: core::Object?, d: core::Object?})}.d{core::Object?} in true) && d is core::int) { { return 28; } @@ -697,7 +697,7 @@ static method switchStatement(dynamic o) → core::int { static method switchExpression(dynamic o) → core::int { core::print("o = ${o}"); return block { - core::int #t162; + core::int #t165; final synthesized dynamic #0#0 = o; synthesized core::Object? #0#4; synthesized core::bool #0#4#isSet = false; @@ -739,139 +739,139 @@ static method switchExpression(dynamic o) → core::int { { { if(#C1 =={core::num::==}{(core::Object) → core::bool} #0#0) { - #t162 = 1; + #t165 = 1; break #L2; } } { - if(#0#0 is ({f: core::Object?}) && ((let final core::int #t163 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t164 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t165 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t166 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t167 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t168 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) { - #t162 = 2; + if(#0#0 is ({f: core::Object?}) && ((let final core::int #t166 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t167 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t168 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t169 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t170 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t171 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) { + #t165 = 2; break #L2; } } { if(#C4 =={core::num::==}{(core::Object) → core::bool} #0#0 || #C5 =={core::num::==}{(core::Object) → core::bool} #0#0) { - #t162 = 3; + #t165 = 3; break #L2; } } { - if(#0#0 is ({g: core::Object?}) && (let final core::int #t169 = (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool #t170 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool #t171 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int)) { - #t162 = 4; + if(#0#0 is ({g: core::Object?}) && (let final core::int #t172 = (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool #t173 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool #t174 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int)) { + #t165 = 4; break #L2; } } { - if(#0#0 is ({a: core::Object?}) && (let final core::Object? #t172 = (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool #t173 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?})}.a{core::Object?})! in true)) { - #t162 = 5; + if(#0#0 is ({a: core::Object?}) && (let final core::Object? #t175 = (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool #t176 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?})}.a{core::Object?})! in true)) { + #t165 = 5; break #L2; } } { - if(#0#0 is ({b: core::Object?}) && (!((#0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool #t174 = #0#23#isSet = true in #0#23 = #0#0{({b: core::Object?})}.b{core::Object?}) == null) && true)) { - #t162 = 6; + if(#0#0 is ({b: core::Object?}) && (!((#0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool #t177 = #0#23#isSet = true in #0#23 = #0#0{({b: core::Object?})}.b{core::Object?}) == null) && true)) { + #t165 = 6; break #L2; } } { - if(#0#0 is core::List && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t175 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t176 = #0#30#isSet = true in #0#30 = #0#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t177 = #0#32#isSet = true in #0#32 = #0#0{core::List}.{core::List::[]}(1){(core::int) → dynamic})) { - #t162 = 7; + if(#0#0 is core::List && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t178 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t179 = #0#30#isSet = true in #0#30 = #0#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t180 = #0#32#isSet = true in #0#32 = #0#0{core::List}.{core::List::[]}(1){(core::int) → dynamic})) { + #t165 = 7; break #L2; } } { - if(#0#0 is core::List && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool #t178 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t179 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t180 = #0#30#isSet = true in #0#30 = #0#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t181 = #0#32#isSet = true in #0#32 = #0#0{core::List}.{core::List::[]}(1){(core::int) → dynamic})) { - #t162 = 8; + if(#0#0 is core::List && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool #t181 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t182 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t183 = #0#30#isSet = true in #0#30 = #0#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t184 = #0#32#isSet = true in #0#32 = #0#0{core::List}.{core::List::[]}(1){(core::int) → dynamic})) { + #t165 = 8; break #L2; } } { - if(#0#0 is core::List && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool #t182 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t183 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t184 = #0#30#isSet = true in #0#30 = #0#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t185 = #0#32#isSet = true in #0#32 = #0#0{core::List}.{core::List::[]}(1){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool #t186 = #0#43#isSet = true in #0#43 = #0#0{core::List}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t187 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) { - #t162 = 9; + if(#0#0 is core::List && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool #t185 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t186 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t187 = #0#30#isSet = true in #0#30 = #0#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t188 = #0#32#isSet = true in #0#32 = #0#0{core::List}.{core::List::[]}(1){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool #t189 = #0#43#isSet = true in #0#43 = #0#0{core::List}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t190 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) { + #t165 = 9; break #L2; } } { - if(#0#0 is core::List && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool #t188 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t189 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t190 = #0#30#isSet = true in #0#30 = #0#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t191 = #0#32#isSet = true in #0#32 = #0#0{core::List}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#47#isSet ?{core::List} #0#47{core::List} : let final core::bool #t192 = #0#47#isSet = true in #0#47 = #0#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t193 = (#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool #t194 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List} #0#47{core::List} : let final core::bool #t195 = #0#47#isSet = true in #0#47 = #0#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool #t196 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List} #0#47{core::List} : let final core::bool #t197 = #0#47#isSet = true in #0#47 = #0#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t198 = (#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool #t199 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List} #0#47{core::List} : let final core::bool #t200 = #0#47#isSet = true in #0#47 = #0#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool #t201 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List} #0#47{core::List} : let final core::bool #t202 = #0#47#isSet = true in #0#47 = #0#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) { - #t162 = 10; + if(#0#0 is core::List && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool #t191 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t192 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t193 = #0#30#isSet = true in #0#30 = #0#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t194 = #0#32#isSet = true in #0#32 = #0#0{core::List}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#47#isSet ?{core::List} #0#47{core::List} : let final core::bool #t195 = #0#47#isSet = true in #0#47 = #0#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t196 = (#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool #t197 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List} #0#47{core::List} : let final core::bool #t198 = #0#47#isSet = true in #0#47 = #0#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool #t199 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List} #0#47{core::List} : let final core::bool #t200 = #0#47#isSet = true in #0#47 = #0#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t201 = (#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool #t202 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List} #0#47{core::List} : let final core::bool #t203 = #0#47#isSet = true in #0#47 = #0#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool #t204 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List} #0#47{core::List} : let final core::bool #t205 = #0#47#isSet = true in #0#47 = #0#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) { + #t165 = 10; break #L2; } } { - if(#0#0 is core::List && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool #t203 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t204 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t205 = #0#30#isSet = true in #0#30 = #0#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t206 = #0#32#isSet = true in #0#32 = #0#0{core::List}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#58#isSet ?{core::List} #0#58{core::List} : let final core::bool #t207 = #0#58#isSet = true in #0#58 = #0#0{core::List}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t208 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t209 = (#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool #t210 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List} #0#58{core::List} : let final core::bool #t211 = #0#58#isSet = true in #0#58 = #0#0{core::List}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t212 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool #t213 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List} #0#58{core::List} : let final core::bool #t214 = #0#58#isSet = true in #0#58 = #0#0{core::List}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t215 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t216 = (#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool #t217 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List} #0#58{core::List} : let final core::bool #t218 = #0#58#isSet = true in #0#58 = #0#0{core::List}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t219 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool #t220 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List} #0#58{core::List} : let final core::bool #t221 = #0#58#isSet = true in #0#58 = #0#0{core::List}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t222 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool #t223 = #0#43#isSet = true in #0#43 = #0#0{core::List}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t224 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) { - #t162 = 11; + if(#0#0 is core::List && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool #t206 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t207 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t208 = #0#30#isSet = true in #0#30 = #0#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t209 = #0#32#isSet = true in #0#32 = #0#0{core::List}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#58#isSet ?{core::List} #0#58{core::List} : let final core::bool #t210 = #0#58#isSet = true in #0#58 = #0#0{core::List}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t211 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t212 = (#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool #t213 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List} #0#58{core::List} : let final core::bool #t214 = #0#58#isSet = true in #0#58 = #0#0{core::List}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t215 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool #t216 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List} #0#58{core::List} : let final core::bool #t217 = #0#58#isSet = true in #0#58 = #0#0{core::List}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t218 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t219 = (#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool #t220 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List} #0#58{core::List} : let final core::bool #t221 = #0#58#isSet = true in #0#58 = #0#0{core::List}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t222 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool #t223 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List} #0#58{core::List} : let final core::bool #t224 = #0#58#isSet = true in #0#58 = #0#0{core::List}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t225 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool #t226 = #0#43#isSet = true in #0#43 = #0#0{core::List}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t227 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) { + #t165 = 11; break #L2; } } { - if(#0#0 is self::Class && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool #t225 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int})) { - #t162 = 12; + if(#0#0 is self::Class && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool #t228 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int})) { + #t165 = 12; break #L2; } } { if(#0#0 is self::Class && #C7 =={core::num::==}{(core::Object) → core::bool} #0#0{self::Class}.{self::Class::finalField}{core::int}) { - #t162 = 13; + #t165 = 13; break #L2; } } { - if(#0#0 is self::Class && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool #t226 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int}) && #C8 =={core::num::==}{(core::Object) → core::bool} #0#0{self::Class}.{self::Class::getter}{core::int}) { - #t162 = 14; + if(#0#0 is self::Class && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool #t229 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int}) && #C8 =={core::num::==}{(core::Object) → core::bool} #0#0{self::Class}.{self::Class::getter}{core::int}) { + #t165 = 14; break #L2; } } { if(#0#0 is self::Class) { - #t162 = 15; + #t165 = 15; break #L2; } } { if(#0#0 =={core::Object::==}{(core::Object) → core::bool} #C9) { - #t162 = 16; + #t165 = 16; break #L2; } } { if(#0#0 is ({e: core::Object?}) && !(#0#0{({e: core::Object?})}.e{core::Object?} =={core::Object::==}{(core::Object) → core::bool} #C10)) { - #t162 = 17; + #t165 = 17; break #L2; } } { - if(#0#0 is core::Map && #0#0{core::Map}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool} && (#0#0{core::Map}.{core::Map::[]}(#C3){(core::Object?) → core::int?} as{Unchecked} core::int).{core::num::>=}(#C11){(core::num) → core::bool}) { - #t162 = 18; + if(#0#0 is core::Map && #0#0{core::Map}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool} && (let core::int? #t230 = #0#0{core::Map}.{core::Map::[]}(#C3){(core::Object?) → core::int?} in #t230 == null ?{core::int} #t230 as{Unchecked} core::int : #t230{core::int}).{core::num::>=}(#C11){(core::num) → core::bool}) { + #t165 = 18; break #L2; } } { - if(#0#0 is core::List && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t227 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1) { - #t162 = 19; + if(#0#0 is core::List && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t231 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1) { + #t165 = 19; break #L2; } } { if(#0#0 is core::bool) { - #t162 = 20; + #t165 = 20; break #L2; } } { if(#0#0 is core::Map && o{core::Map}.{core::Map::isEmpty}{core::bool}) { - #t162 = 21; + #t165 = 21; break #L2; } } { if(#0#0 is core::Map && #0#0{core::Map}.{core::Map::containsKey}(#C12){(core::Object?) → core::bool} && #0#0{core::Map}.{core::Map::[]}(#C12){(core::Object?) → dynamic} is core::int) { - #t162 = 22; + #t165 = 22; break #L2; } } { if(#0#0 is core::Map && #0#0{core::Map}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool} && #0#0{core::Map}.{core::Map::[]}(#C1){(core::Object?) → dynamic} is core::String) { - #t162 = 23; + #t165 = 23; break #L2; } } @@ -879,48 +879,48 @@ static method switchExpression(dynamic o) → core::int { hoisted dynamic a; if(#0#0 is core::Map && #0#0{core::Map}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool}) { a = #0#0{core::Map}.{core::Map::[]}(#C7){(core::Object?) → dynamic}; - #t162 = 24; + #t165 = 24; break #L2; } } { hoisted core::int b; - if(#0#0 is core::Map && #0#0{core::Map}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && (#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool #t228 = #0#98#isSet = true in #0#98 = #0#0{core::Map}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int) { - b = (#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool #t229 = #0#98#isSet = true in #0#98 = #0#0{core::Map}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int; - #t162 = 25; + if(#0#0 is core::Map && #0#0{core::Map}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && (#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool #t232 = #0#98#isSet = true in #0#98 = #0#0{core::Map}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int) { + b = (#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool #t233 = #0#98#isSet = true in #0#98 = #0#0{core::Map}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int; + #t165 = 25; break #L2; } } { if(#0#0 is (core::Object?, core::Object?) && #C12 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, core::Object?)}.$1{core::Object?} && #C1 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, core::Object?)}.$2{core::Object?}) { - #t162 = 26; + #t165 = 26; break #L2; } } { hoisted dynamic c; - if(#0#0 is ({a: core::Object?, b: core::Object?}) && #C12 =={core::num::==}{(core::Object) → core::bool} (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool #t230 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?, b: core::Object?})}.a{core::Object?})) { - c = #0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool #t231 = #0#23#isSet = true in #0#23 = #0#0{({a: core::Object?, b: core::Object?})}.b{core::Object?}; - #t162 = 27; + if(#0#0 is ({a: core::Object?, b: core::Object?}) && #C12 =={core::num::==}{(core::Object) → core::bool} (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool #t234 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?, b: core::Object?})}.a{core::Object?})) { + c = #0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool #t235 = #0#23#isSet = true in #0#23 = #0#0{({a: core::Object?, b: core::Object?})}.b{core::Object?}; + #t165 = 27; break #L2; } } { hoisted dynamic d; - if(#0#0 is ({c: core::Object?, d: core::Object?}) && #C12 =={core::num::==}{(core::Object) → core::bool} #0#0{({c: core::Object?, d: core::Object?})}.c{core::Object?} && (let final core::Object? #t232 = d = #0#0{({c: core::Object?, d: core::Object?})}.d{core::Object?} in true) && d is core::int) { - #t162 = 28; + if(#0#0 is ({c: core::Object?, d: core::Object?}) && #C12 =={core::num::==}{(core::Object) → core::bool} #0#0{({c: core::Object?, d: core::Object?})}.c{core::Object?} && (let final core::Object? #t236 = d = #0#0{({c: core::Object?, d: core::Object?})}.d{core::Object?} in true) && d is core::int) { + #t165 = 28; break #L2; } } { if(true) { - #t162 = 0; + #t165 = 0; break #L2; } } throw{for-error-handling} new _in::ReachabilityError::•("`null` encountered as case in a switch expression with a non-nullable type."); } - } =>#t162; + } =>#t165; } static method test(dynamic expected, dynamic value) → dynamic { self::expect(expected, self::ifCase(value)); @@ -1021,4 +1021,4 @@ Evaluated: RecordLiteral @ org-dartlang-testcase:///caching.dart:331:12 -> Recor Evaluated: RecordLiteral @ org-dartlang-testcase:///caching.dart:332:12 -> RecordConstant(const ({c: 0, d: 1})) Evaluated: RecordLiteral @ org-dartlang-testcase:///caching.dart:333:12 -> RecordConstant(const ({c: 0, d: 2})) Evaluated: RecordLiteral @ org-dartlang-testcase:///caching.dart:334:11 -> RecordConstant(const ({c: 0, d: "foo"})) -Extra constant evaluation: evaluated: 2729, effectively constant: 14 +Extra constant evaluation: evaluated: 2753, effectively constant: 14 diff --git a/pkg/front_end/testcases/nnbd/assignability.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/assignability.dart.weak.transformed.expect index 01cce49b74a..88205180cf4 100644 --- a/pkg/front_end/testcases/nnbd/assignability.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/nnbd/assignability.dart.weak.transformed.expect @@ -994,7 +994,7 @@ static method ok l, core::Map(invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:31:10: Error: Can't assign spread elements of type 'B?' to collection elements of type 'A' because 'B?' is nullable and 'A' isn't. - 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'. - 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'. @@ -236,14 +236,14 @@ static method foo(self::B? x, core::List l, core::Map :sync-for-iterator = l.{core::Iterable::iterator}{core::Iterator}; for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) { - final self::B? #t1 = :sync-for-iterator.{core::Iterator::current}{self::B?}; + final self::B? #t3 = :sync-for-iterator.{core::Iterator::current}{self::B?}; { self::A y = invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:35:10: Error: A value of type 'B?' can't be assigned to a variable of type 'A' because 'B?' is nullable and 'A' isn't. - 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'. - 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'. Try changing the type of the variable. for (A y in l) {} // Error. - ^" in #t1 as{TypeError,Unchecked} self::A; + ^" in let self::B? #t4 = #t3 in #t4 == null ?{self::A} #t4 as{TypeError} self::A : #t4{self::A}; } } } @@ -253,7 +253,7 @@ Try changing the type of the variable. - 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'. - 'Iterable' is from 'dart:core'. for (A y in l2) {} // Error. - ^" in l2 as{TypeError,Unchecked} core::Iterable.{core::Iterable::iterator}{core::Iterator}; + ^" in let core::List? #t5 = l2 in #t5 == null ?{core::Iterable} #t5 as{TypeError} core::Iterable : #t5{core::Iterable}.{core::Iterable::iterator}{core::Iterator}; for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) { self::A y = :sync-for-iterator.{core::Iterator::current}{Never}; {} @@ -278,7 +278,7 @@ Try changing the type of the variable. - 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'. - 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'. return x; // Error. - ^" in x as{TypeError,Unchecked} self::A; + ^" in let self::B? #t6 = x in #t6 == null ?{self::A} #t6 as{TypeError} self::A : #t6{self::A}; } else { return invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:47:18: Error: A value of type 'Future' can't be returned from an async function with return type 'FutureOr'. @@ -293,7 +293,7 @@ Try changing the type of the variable. - 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'. - 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'. return x; // Error. - ^" in x as{TypeError,Unchecked} self::A; + ^" in let self::B? #t7 = x in #t7 == null ?{self::A} #t7 as{TypeError} self::A : #t7{self::A}; } static method bar(core::List x, core::List> l, core::Map, core::List> m) → core::List { self::barContext(invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:55:14: Error: The argument type 'List' can't be assigned to the parameter type 'List' because 'B?' is nullable and 'A' isn't. @@ -301,13 +301,13 @@ static method bar(core::List x, core::List> l, co - 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'. - 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'. barContext(x); // Error. - ^" in x as{TypeError,Unchecked} core::List); + ^" in x as{TypeError} core::List); core::List y = invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:56:15: Error: A value of type 'List' can't be assigned to a variable of type 'List' because 'B?' is nullable and 'A' isn't. - 'List' is from 'dart:core'. - 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'. - 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'. List y = x; // Error. - ^" in x as{TypeError,Unchecked} core::List; + ^" in x as{TypeError} core::List; core::_GrowableList::_literal1>(invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:57:16: Error: Can't assign spread elements of type 'List' to collection elements of type 'List' because 'B?' is nullable and 'A' isn't. - 'List' is from 'dart:core'. - 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'. @@ -328,7 +328,7 @@ static method bar(core::List x, core::List> l, co { synthesized core::Iterator> :sync-for-iterator = l.{core::Iterable::iterator}{core::Iterator>}; for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) { - final core::List #t2 = :sync-for-iterator.{core::Iterator::current}{core::List}; + final core::List #t8 = :sync-for-iterator.{core::Iterator::current}{core::List}; { core::List y = invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:59:16: Error: A value of type 'List' can't be assigned to a variable of type 'List' because 'B?' is nullable and 'A' isn't. - 'List' is from 'dart:core'. @@ -336,7 +336,7 @@ static method bar(core::List x, core::List> l, co - 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'. Try changing the type of the variable. for (List y in l) {} // Error. - ^" in #t2 as{TypeError,Unchecked} core::List; + ^" in #t8 as{TypeError} core::List; } } } @@ -345,48 +345,48 @@ Try changing the type of the variable. - 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'. - 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'. return x; // Error. - ^" in x as{TypeError,Unchecked} core::List; + ^" in x as{TypeError} core::List; } static method baz(self::C c) → void { self::bazContext(invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:64:14: Error: The argument type 'num? Function()' can't be assigned to the parameter type 'num Function()' because 'num?' is nullable and 'num' isn't. bazContext(c); - ^" in (let final self::C #t3 = c in #t3 == null ?{() → core::num?} null : #t3.{self::C::call}{() → core::num?}) as{TypeError,Unchecked} () → core::num); + ^" in (let final self::C #t9 = c in #t9 == null ?{() → core::num?} null : #t9.{self::C::call}{() → core::num?}) as{TypeError} () → core::num); } static method boz(Null x) → self::A { self::fooContext(invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:68:14: Error: The argument type 'Null' can't be assigned to the parameter type 'A' because 'A' is not nullable. - 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'. fooContext(x); // Error. - ^" in x as{TypeError,Unchecked} self::A); + ^" in let Null #t10 = x in #t10 == null ?{self::A} #t10 as{TypeError} self::A : #t10{self::A}); self::fooContext(invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:69:14: Error: The value 'null' can't be assigned to the parameter type 'A' because 'A' is not nullable. - 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'. fooContext(null); // Error. - ^" in null as{TypeError,Unchecked} self::A); + ^" in let Null #t11 = null in #t11 == null ?{self::A} #t11 as{TypeError} self::A : #t11{self::A}); self::A a1 = invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:70:10: Error: A value of type 'Null' can't be assigned to a variable of type 'A' because 'A' is not nullable. - 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'. A a1 = x; // Error. - ^" in x as{TypeError,Unchecked} self::A; + ^" in let Null #t12 = x in #t12 == null ?{self::A} #t12 as{TypeError} self::A : #t12{self::A}; self::A a2 = invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:71:10: Error: The value 'null' can't be assigned to a variable of type 'A' because 'A' is not nullable. - 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'. A a2 = null; // Error. - ^" in null as{TypeError,Unchecked} self::A; + ^" in let Null #t13 = null in #t13 == null ?{self::A} #t13 as{TypeError} self::A : #t13{self::A}; if(true) { return invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:73:12: Error: A value of type 'Null' can't be returned from a function with return type 'A' because 'A' is not nullable. - 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'. return x; // Error. - ^" in x as{TypeError,Unchecked} self::A; + ^" in let Null #t14 = x in #t14 == null ?{self::A} #t14 as{TypeError} self::A : #t14{self::A}; } else { return invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:75:12: Error: The value 'null' can't be returned from a function with return type 'A' because 'A' is not nullable. - 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'. return null; // Error. - ^" in null as{TypeError,Unchecked} self::A; + ^" in let Null #t15 = null in #t15 == null ?{self::A} #t15 as{TypeError} self::A : #t15{self::A}; } function local() → FutureOr async /* emittedValueType= self::A */ { if(true) { return invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:79:14: Error: The value 'null' can't be returned from an async function with return type 'FutureOr' because 'FutureOr' is not nullable. - 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'. return null; // Error. - ^" in null as{TypeError,Unchecked} self::A; + ^" in let Null #t16 = null in #t16 == null ?{self::A} #t16 as{TypeError} self::A : #t16{self::A}; } else { return invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:81:18: Error: A value of type 'Future' can't be returned from an async function with return type 'FutureOr'. diff --git a/pkg/front_end/testcases/nnbd/forin.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/forin.dart.weak.transformed.expect index 9833e23eacb..cd6bf1a6b15 100644 --- a/pkg/front_end/testcases/nnbd/forin.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/nnbd/forin.dart.weak.transformed.expect @@ -56,31 +56,7 @@ static method error(core::Iterable? i2, core::List? l2, co synthesized core::Iterator :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/forin.dart:9:17: Error: The type 'Iterable?' used in the 'for' loop must implement 'Iterable' because 'Iterable?' is nullable and 'Iterable' isn't. - 'Iterable' is from 'dart:core'. for (int x in i2) x; - ^" in i2 as{TypeError,Unchecked} core::Iterable.{core::Iterable::iterator}{core::Iterator}; - for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) { - core::int x = :sync-for-iterator.{core::Iterator::current}{Never}; - x; - } - } - { - final core::List #t1 = core::_GrowableList::•(0); - { - synthesized core::Iterator :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/forin.dart:10:18: Error: The type 'Iterable?' used in the 'for' loop must implement 'Iterable' because 'Iterable?' is nullable and 'Iterable' isn't. - - 'Iterable' is from 'dart:core'. - [for (int x in i2) x]; - ^" in i2 as{TypeError,Unchecked} core::Iterable.{core::Iterable::iterator}{core::Iterator}; - for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) { - core::int x = :sync-for-iterator.{core::Iterator::current}{Never}; - #t1.{core::List::add}{Invariant}(x){(core::int) → void}; - } - } - } - { - synthesized core::Iterator :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/forin.dart:12:17: Error: The type 'List?' used in the 'for' loop must implement 'Iterable' because 'List?' is nullable and 'Iterable' isn't. - - 'List' is from 'dart:core'. - - 'Iterable' is from 'dart:core'. - for (int x in l2) x; - ^" in l2 as{TypeError,Unchecked} core::Iterable.{core::Iterable::iterator}{core::Iterator}; + ^" in let core::Iterable? #t1 = i2 in #t1 == null ?{core::Iterable} #t1 as{TypeError} core::Iterable : #t1{core::Iterable}.{core::Iterable::iterator}{core::Iterator}; for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) { core::int x = :sync-for-iterator.{core::Iterator::current}{Never}; x; @@ -88,15 +64,39 @@ static method error(core::Iterable? i2, core::List? l2, co } { final core::List #t2 = core::_GrowableList::•(0); + { + synthesized core::Iterator :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/forin.dart:10:18: Error: The type 'Iterable?' used in the 'for' loop must implement 'Iterable' because 'Iterable?' is nullable and 'Iterable' isn't. + - 'Iterable' is from 'dart:core'. + [for (int x in i2) x]; + ^" in let core::Iterable? #t3 = i2 in #t3 == null ?{core::Iterable} #t3 as{TypeError} core::Iterable : #t3{core::Iterable}.{core::Iterable::iterator}{core::Iterator}; + for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) { + core::int x = :sync-for-iterator.{core::Iterator::current}{Never}; + #t2.{core::List::add}{Invariant}(x){(core::int) → void}; + } + } + } + { + synthesized core::Iterator :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/forin.dart:12:17: Error: The type 'List?' used in the 'for' loop must implement 'Iterable' because 'List?' is nullable and 'Iterable' isn't. + - 'List' is from 'dart:core'. + - 'Iterable' is from 'dart:core'. + for (int x in l2) x; + ^" in let core::List? #t4 = l2 in #t4 == null ?{core::Iterable} #t4 as{TypeError} core::Iterable : #t4{core::Iterable}.{core::Iterable::iterator}{core::Iterator}; + for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) { + core::int x = :sync-for-iterator.{core::Iterator::current}{Never}; + x; + } + } + { + final core::List #t5 = core::_GrowableList::•(0); { synthesized core::Iterator :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/forin.dart:13:18: Error: The type 'List?' used in the 'for' loop must implement 'Iterable' because 'List?' is nullable and 'Iterable' isn't. - 'List' is from 'dart:core'. - 'Iterable' is from 'dart:core'. [for (int x in l2) x]; - ^" in l2 as{TypeError,Unchecked} core::Iterable.{core::Iterable::iterator}{core::Iterator}; + ^" in let core::List? #t6 = l2 in #t6 == null ?{core::Iterable} #t6 as{TypeError} core::Iterable : #t6{core::Iterable}.{core::Iterable::iterator}{core::Iterator}; for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) { core::int x = :sync-for-iterator.{core::Iterator::current}{Never}; - #t2.{core::List::add}{Invariant}(x){(core::int) → void}; + #t5.{core::List::add}{Invariant}(x){(core::int) → void}; } } } @@ -107,15 +107,15 @@ static method error(core::Iterable? i2, core::List? l2, co for (int x in o1) x; ^" in o1 as{TypeError} core::Iterable.{core::Iterable::iterator}{core::Iterator}; for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) { - final dynamic #t3 = :sync-for-iterator.{core::Iterator::current}{Never}; + final dynamic #t7 = :sync-for-iterator.{core::Iterator::current}{Never}; { - core::int x = #t3 as{TypeError,ForDynamic} core::int; + core::int x = #t7 as{TypeError,ForDynamic} core::int; x; } } } { - final core::List #t4 = core::_GrowableList::•(0); + final core::List #t8 = core::_GrowableList::•(0); { synthesized core::Iterator :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/forin.dart:16:18: Error: The type 'Object' used in the 'for' loop must implement 'Iterable'. - 'Object' is from 'dart:core'. @@ -123,10 +123,10 @@ static method error(core::Iterable? i2, core::List? l2, co [for (int x in o1) x]; ^" in o1 as{TypeError} core::Iterable.{core::Iterable::iterator}{core::Iterator}; for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) { - final dynamic #t5 = :sync-for-iterator.{core::Iterator::current}{Never}; + final dynamic #t9 = :sync-for-iterator.{core::Iterator::current}{Never}; { - core::int x = #t5 as{TypeError,ForDynamic} core::int; - #t4.{core::List::add}{Invariant}(x){(core::int) → void}; + core::int x = #t9 as{TypeError,ForDynamic} core::int; + #t8.{core::List::add}{Invariant}(x){(core::int) → void}; } } } @@ -138,15 +138,15 @@ static method error(core::Iterable? i2, core::List? l2, co for (int x in o2) x; ^" in o2 as{TypeError} core::Iterable.{core::Iterable::iterator}{core::Iterator}; for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) { - final dynamic #t6 = :sync-for-iterator.{core::Iterator::current}{Never}; + final dynamic #t10 = :sync-for-iterator.{core::Iterator::current}{Never}; { - core::int x = #t6 as{TypeError,ForDynamic} core::int; + core::int x = #t10 as{TypeError,ForDynamic} core::int; x; } } } { - final core::List #t7 = core::_GrowableList::•(0); + final core::List #t11 = core::_GrowableList::•(0); { synthesized core::Iterator :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/forin.dart:19:18: Error: The type 'Object?' used in the 'for' loop must implement 'Iterable'. - 'Object' is from 'dart:core'. @@ -154,10 +154,10 @@ static method error(core::Iterable? i2, core::List? l2, co [for (int x in o2) x]; ^" in o2 as{TypeError} core::Iterable.{core::Iterable::iterator}{core::Iterator}; for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) { - final dynamic #t8 = :sync-for-iterator.{core::Iterator::current}{Never}; + final dynamic #t12 = :sync-for-iterator.{core::Iterator::current}{Never}; { - core::int x = #t8 as{TypeError,ForDynamic} core::int; - #t7.{core::List::add}{Invariant}(x){(core::int) → void}; + core::int x = #t12 as{TypeError,ForDynamic} core::int; + #t11.{core::List::add}{Invariant}(x){(core::int) → void}; } } } @@ -172,12 +172,12 @@ static method ok(core::Iterable i1, core::List l1, dynamic } } { - final core::List #t9 = core::_GrowableList::•(0); + final core::List #t13 = core::_GrowableList::•(0); { synthesized core::Iterator :sync-for-iterator = i1.{core::Iterable::iterator}{core::Iterator}; for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) { core::int x = :sync-for-iterator.{core::Iterator::current}{core::int}; - #t9.{core::List::add}{Invariant}(x){(core::int) → void}; + #t13.{core::List::add}{Invariant}(x){(core::int) → void}; } } } @@ -189,34 +189,34 @@ static method ok(core::Iterable i1, core::List l1, dynamic } } { - final core::List #t10 = core::_GrowableList::•(0); + final core::List #t14 = core::_GrowableList::•(0); { synthesized core::Iterator :sync-for-iterator = l1.{core::Iterable::iterator}{core::Iterator}; for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) { core::int x = :sync-for-iterator.{core::Iterator::current}{core::int}; - #t10.{core::List::add}{Invariant}(x){(core::int) → void}; + #t14.{core::List::add}{Invariant}(x){(core::int) → void}; } } } { synthesized core::Iterator :sync-for-iterator = (d as{TypeError,ForDynamic} core::Iterable).{core::Iterable::iterator}{core::Iterator}; for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) { - final dynamic #t11 = :sync-for-iterator.{core::Iterator::current}{dynamic}; + final dynamic #t15 = :sync-for-iterator.{core::Iterator::current}{dynamic}; { - core::int x = #t11 as{TypeError,ForDynamic} core::int; + core::int x = #t15 as{TypeError,ForDynamic} core::int; x; } } } { - final core::List #t12 = core::_GrowableList::•(0); + final core::List #t16 = core::_GrowableList::•(0); { synthesized core::Iterator :sync-for-iterator = (d as{TypeError,ForDynamic} core::Iterable).{core::Iterable::iterator}{core::Iterator}; for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) { - final dynamic #t13 = :sync-for-iterator.{core::Iterator::current}{dynamic}; + final dynamic #t17 = :sync-for-iterator.{core::Iterator::current}{dynamic}; { - core::int x = #t13 as{TypeError,ForDynamic} core::int; - #t12.{core::List::add}{Invariant}(x){(core::int) → void}; + core::int x = #t17 as{TypeError,ForDynamic} core::int; + #t16.{core::List::add}{Invariant}(x){(core::int) → void}; } } } diff --git a/pkg/front_end/testcases/nnbd/issue41102.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41102.dart.weak.transformed.expect index a3bee522406..369ef0bd993 100644 --- a/pkg/front_end/testcases/nnbd/issue41102.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/nnbd/issue41102.dart.weak.transformed.expect @@ -67,7 +67,7 @@ static final field core::List s1 = core::_GrowableList::•(0) static final field core::int? s2 = let final core::List #t1 = self::s1 in #t1 == null ?{core::int?} null : #t1.{core::List::length}{core::int}; static final field core::List s3 = core::_List::filled(2, invalid-expression "pkg/front_end/testcases/nnbd/issue41102.dart:19:36: Error: The value 'null' can't be assigned to the parameter type 'int' because 'int' is not nullable. final s3 = new List.filled(2, null); - ^" in null as{TypeError,Unchecked} core::int); + ^" in let Null #t2 = null in #t2 == null ?{core::int} #t2 as{TypeError} core::int : #t2{core::int}); static final field dynamic s4 = (() → Null { core::int e = 0; switch(e) /* core::int */ { @@ -91,10 +91,10 @@ static final field dynamic s8 = invalid-expression "pkg/front_end/testcases/nnbd - 'List' is from 'dart:core'. final s8 = s7[0]; ^" in self::s7.{core::List::[]}{}.(0){(core::int) → dynamic}; -static final field core::int s9 = let final core::List? #t2 = self::s7 in let final core::int #t3 = 0 in let final core::int #t4 = 0 in let final void #t5 = invalid-expression "pkg/front_end/testcases/nnbd/issue41102.dart:39:14: Error: Operator '[]=' cannot be called on 'List?' because it is potentially null. +static final field core::int s9 = let final core::List? #t3 = self::s7 in let final core::int #t4 = 0 in let final core::int #t5 = 0 in let final void #t6 = invalid-expression "pkg/front_end/testcases/nnbd/issue41102.dart:39:14: Error: Operator '[]=' cannot be called on 'List?' because it is potentially null. - 'List' is from 'dart:core'. final s9 = s7[0] = 0; - ^" in #t2.{core::List::[]=}{}.(#t3, #t4){(core::int, dynamic) → void} in #t4; + ^" in #t3.{core::List::[]=}{}.(#t4, #t5){(core::int, dynamic) → void} in #t5; static final field core::int s10 = invalid-expression "pkg/front_end/testcases/nnbd/issue41102.dart:41:16: Error: Property 'length' cannot be accessed on 'List?' because it is potentially null. - 'List' is from 'dart:core'. Try accessing using ?. instead. diff --git a/pkg/front_end/testcases/nnbd/issue41108.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41108.dart.weak.transformed.expect index ba02f1d7053..dfff98d8731 100644 --- a/pkg/front_end/testcases/nnbd/issue41108.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/nnbd/issue41108.dart.weak.transformed.expect @@ -15,7 +15,7 @@ static method test() → dynamic async /* emittedValueType= dynamic */ { core::List y = invalid-expression "pkg/front_end/testcases/nnbd/issue41108.dart:6:12: Error: A value of type 'List?' can't be assigned to a variable of type 'List' because 'List?' is nullable and 'List' isn't. - 'List' is from 'dart:core'. List y = await l(); // should be a List? - ^" in await self::l() /* runtimeCheckType= asy::Future?> */ as{TypeError,Unchecked} core::List; + ^" in let core::List? #t1 = await self::l() /* runtimeCheckType= asy::Future?> */ in #t1 == null ?{core::List} #t1 as{TypeError} core::List : #t1{core::List}; } static method l() → asy::Future>? return null; diff --git a/pkg/front_end/testcases/nnbd/issue41700b.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41700b.dart.weak.transformed.expect index 01b6e3cffa4..1cba2d36123 100644 --- a/pkg/front_end/testcases/nnbd/issue41700b.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/nnbd/issue41700b.dart.weak.transformed.expect @@ -31,7 +31,7 @@ static method test() → dynamic { self::Null x = invalid-expression "pkg/front_end/testcases/nnbd/issue41700b.dart:8:12: Error: The value 'null' can't be assigned to a variable of type 'Null' because 'Null' is not nullable. - 'Null' is from 'pkg/front_end/testcases/nnbd/issue41700b.dart'. Null x = null; - ^" in null as{TypeError,Unchecked} self::Null; + ^" in let Null #t1 = null in #t1 == null ?{self::Null} #t1 as{TypeError} self::Null : #t1{self::Null}; invalid-expression "pkg/front_end/testcases/nnbd/issue41700b.dart:9:5: Error: The method 'foo' isn't defined for the class 'Null'. - 'Null' is from 'pkg/front_end/testcases/nnbd/issue41700b.dart'. Try correcting the name to the name of an existing method, or defining a method named 'foo'. diff --git a/pkg/front_end/testcases/nnbd/issue42089.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue42089.dart.weak.transformed.expect index 92b59a6dd6b..7c03e706c9a 100644 --- a/pkg/front_end/testcases/nnbd/issue42089.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/nnbd/issue42089.dart.weak.transformed.expect @@ -20,11 +20,11 @@ static method test(self::test::X? x) → dyna core::Object o = invalid-expression "pkg/front_end/testcases/nnbd/issue42089.dart:7:16: Error: A value of type 'X?' can't be assigned to a variable of type 'Object' because 'X?' is nullable and 'Object' isn't. - 'Object' is from 'dart:core'. Object o = x; - ^" in x{self::test::X? & core::String? /* '?' & '?' = '?' */} as{TypeError,Unchecked} core::Object; + ^" in let self::test::X? & core::String? /* '?' & '?' = '?' */ #t1 = x{self::test::X? & core::String? /* '?' & '?' = '?' */} in #t1 == null ?{core::Object} #t1 as{TypeError} core::Object : #t1{core::Object}; o = invalid-expression "pkg/front_end/testcases/nnbd/issue42089.dart:8:9: Error: A value of type 'X?' can't be assigned to a variable of type 'Object' because 'X?' is nullable and 'Object' isn't. - 'Object' is from 'dart:core'. o = x; - ^" in x{self::test::X? & core::String? /* '?' & '?' = '?' */} as{TypeError,Unchecked} core::Object; + ^" in let self::test::X? & core::String? /* '?' & '?' = '?' */ #t2 = x{self::test::X? & core::String? /* '?' & '?' = '?' */} in #t2 == null ?{core::Object} #t2 as{TypeError} core::Object : #t2{core::Object}; } } static method main() → dynamic {} diff --git a/pkg/front_end/testcases/nnbd/issue42362.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue42362.dart.weak.transformed.expect index 399885c717e..9cc6771f258 100644 --- a/pkg/front_end/testcases/nnbd/issue42362.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/nnbd/issue42362.dart.weak.transformed.expect @@ -118,12 +118,12 @@ class A extends core::Object { constructor constructor5([core::int? i = #C1]) → self::A : self::A::i = invalid-expression "pkg/front_end/testcases/nnbd/issue42362.dart:19:18: Error: A value of type 'int?' can't be assigned to a variable of type 'int' because 'int?' is nullable and 'int' isn't. : this.i = i; // error - ^" in i as{TypeError,Unchecked} core::int, super core::Object::•() + ^" in let core::int? #t1 = i in #t1 == null ?{core::int} #t1 as{TypeError} core::int : #t1{core::int}, super core::Object::•() ; constructor constructor6({core::int? i = #C1}) → self::A : self::A::i = invalid-expression "pkg/front_end/testcases/nnbd/issue42362.dart:22:18: Error: A value of type 'int?' can't be assigned to a variable of type 'int' because 'int?' is nullable and 'int' isn't. : this.i = i; // error - ^" in i as{TypeError,Unchecked} core::int, super core::Object::•() + ^" in let core::int? #t2 = i in #t2 == null ?{core::int} #t2 as{TypeError} core::int : #t2{core::int}, super core::Object::•() ; constructor constructor7({required core::int i}) → self::A : self::A::i = i, super core::Object::•() @@ -180,12 +180,12 @@ class C extends core::Object implements self::B { constructor constructor5([core::int? i = #C1]) → self::C : self::C::i = invalid-expression "pkg/front_end/testcases/nnbd/issue42362.dart:85:39: Error: A value of type 'int?' can't be assigned to a variable of type 'int' because 'int?' is nullable and 'int' isn't. C.constructor5([int? i]) : this.i = i; // error - ^" in i as{TypeError,Unchecked} core::int, super core::Object::•() + ^" in let core::int? #t3 = i in #t3 == null ?{core::int} #t3 as{TypeError} core::int : #t3{core::int}, super core::Object::•() ; constructor constructor6({core::int? i = #C1}) → self::C : self::C::i = invalid-expression "pkg/front_end/testcases/nnbd/issue42362.dart:87:39: Error: A value of type 'int?' can't be assigned to a variable of type 'int' because 'int?' is nullable and 'int' isn't. C.constructor6({int? i}) : this.i = i; // error - ^" in i as{TypeError,Unchecked} core::int, super core::Object::•() + ^" in let core::int? #t4 = i in #t4 == null ?{core::int} #t4 as{TypeError} core::int : #t4{core::int}, super core::Object::•() ; constructor constructor7({required core::int i}) → self::C : self::C::i = i, super core::Object::•() diff --git a/pkg/front_end/testcases/nnbd/issue42540.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue42540.dart.weak.transformed.expect index d34acd00b63..2ce4f17f6b9 100644 --- a/pkg/front_end/testcases/nnbd/issue42540.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/nnbd/issue42540.dart.weak.transformed.expect @@ -6,7 +6,7 @@ import "dart:core" as core; static method getNull() → dynamic return null; static method fn() → asy::Future async /* emittedValueType= core::Object */ { - core::Object o = await self::getNull() /* runtimeCheckType= asy::Future */ as{TypeError,ForDynamic,Unchecked} core::Object; - return await self::getNull() /* runtimeCheckType= asy::Future */ as{TypeError,ForDynamic,Unchecked} FutureOr; + core::Object o = let dynamic #t1 = await self::getNull() /* runtimeCheckType= asy::Future */ in #t1 == null ?{core::Object} #t1 as{TypeError,ForDynamic} core::Object : #t1{core::Object}; + return let dynamic #t2 = await self::getNull() /* runtimeCheckType= asy::Future */ in #t2 == null ?{FutureOr} #t2 as{TypeError,ForDynamic} FutureOr : #t2{FutureOr}; } static method main() → dynamic {} diff --git a/pkg/front_end/testcases/nnbd/issue43716a.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue43716a.dart.weak.transformed.expect index 1e3611cf927..2824d0a301d 100644 --- a/pkg/front_end/testcases/nnbd/issue43716a.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/nnbd/issue43716a.dart.weak.transformed.expect @@ -22,7 +22,7 @@ class C? = self::C return invalid-expression "pkg/front_end/testcases/nnbd/issue43716a.dart:15:14: Error: A value of type 'Object?' can't be returned from a function with return type 'Object' because 'Object?' is nullable and 'Object' isn't. - 'Object' is from 'dart:core'. return z.x; // Error. - ^" in z{self::C}.{self::C::x}{core::Object?} as{TypeError,Unchecked} core::Object; + ^" in let core::Object? #t1 = z{self::C}.{self::C::x}{core::Object?} in #t1 == null ?{core::Object} #t1 as{TypeError} core::Object : #t1{core::Object}; } } static field core::bool b = true; diff --git a/pkg/front_end/testcases/nnbd/issue43721.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue43721.dart.weak.transformed.expect index a00a6625938..dda096c6617 100644 --- a/pkg/front_end/testcases/nnbd/issue43721.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/nnbd/issue43721.dart.weak.transformed.expect @@ -20,6 +20,6 @@ static method bar(core::bool condition) → dynamic { self::foo(invalid-expression "pkg/front_end/testcases/nnbd/issue43721.dart:13:7: Error: The argument type 'FutureOr' can't be assigned to the parameter type 'Object' because 'num?' is nullable and 'Object' isn't. - 'Object' is from 'dart:core'. foo(z); // Error. - ^" in z as{TypeError,Unchecked} core::Object); + ^" in let FutureOr#t1 = z in #t1 == null ?{core::Object} #t1 as{TypeError} core::Object : #t1{core::Object}); } static method main() → dynamic {} diff --git a/pkg/front_end/testcases/nnbd/issue49198.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue49198.dart.weak.transformed.expect index 02bd41d9f9a..9a57b423566 100644 --- a/pkg/front_end/testcases/nnbd/issue49198.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/nnbd/issue49198.dart.weak.transformed.expect @@ -5,7 +5,7 @@ import "dart:core" as core; static final field core::bool inSoundMode = !(core::_GrowableList::•(0) is core::List); static method main() → dynamic { try { - throw (null as dynamic) as{TypeError,Unchecked} core::Object; + throw let dynamic #t1 = null as dynamic in #t1 == null ?{core::Object} #t1 as{TypeError} core::Object : #t1{core::Object}; } on core::TypeError catch(final core::TypeError e) { core::print("${e.{core::Object::runtimeType}{core::Type}}:${e}"); @@ -14,5 +14,5 @@ static method main() → dynamic { Extra constant evaluation status: -Evaluated: AsExpression @ org-dartlang-testcase:///issue49198.dart:9:16 -> NullConstant(null) +Evaluated: Let @ org-dartlang-testcase:///issue49198.dart:9:5 -> NullConstant(null) Extra constant evaluation: evaluated: 10, effectively constant: 1 diff --git a/pkg/front_end/testcases/nnbd/null_shorting_index.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/null_shorting_index.dart.weak.transformed.expect index 178f0d5291f..12abc2cc281 100644 --- a/pkg/front_end/testcases/nnbd/null_shorting_index.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/nnbd/null_shorting_index.dart.weak.transformed.expect @@ -68,13 +68,13 @@ static method main() → dynamic { let final self::Class1? #t75 = c1 in #t75 == null ?{core::int?} null : let final self::Class2? #t76 = #t75{self::Class1}.{self::Class1::field}{self::Class2?} in #t76 == null ?{core::int?} null : let final core::int #t77 = 0 in self::Extension|[](#t76{self::Class2}, #t77) == null ?{core::int?} self::Extension|[]=(#t76{self::Class2}, #t77, 1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(1){(core::int) → core::int}){(core::num) → core::int}) : null; let final self::Class1? #t78 = c1 in #t78 == null ?{core::int?} null : let final self::Class2? #t79 = #t78{self::Class1}.{self::Class1::field}{self::Class2?} in #t79 == null ?{core::int?} null : self::Extension|[](#t79{self::Class2}, 0); let final self::Class1? #t80 = c1 in #t80 == null ?{void} null : let final self::Class2? #t81 = #t80{self::Class1}.{self::Class1::field}{self::Class2?} in #t81 == null ?{void} null : self::Extension|[]=(#t81{self::Class2}, 0, 1); - let final self::Class1? #t82 = c1 in #t82 == null ?{void} null : let final self::Class2? #t83 = #t82{self::Class1}.{self::Class1::field}{self::Class2?} in #t83 == null ?{void} null : self::Extension|[]=(#t83{self::Class2}, 0, 1.{core::num::+}((let final self::Class2? #t84 = c2 in #t84 == null ?{core::int?} null : self::Extension|[](#t84{self::Class2}, 0)!) as{Unchecked} core::int){(core::num) → core::int}); - let final self::Class1? #t85 = c1 in #t85 == null ?{core::int?} null : let final self::Class2? #t86 = #t85{self::Class1}.{self::Class1::field}{self::Class2?} in #t86 == null ?{core::int?} null : let final core::int #t87 = 0 in self::Extension|[]=(#t86{self::Class2}, #t87, self::Extension|[](#t86{self::Class2}, #t87).{core::num::+}(1){(core::num) → core::int}); - let final self::Class1? #t88 = c1 in #t88 == null ?{core::int?} null : let final self::Class2? #t89 = #t88{self::Class1}.{self::Class1::field}{self::Class2?} in #t89 == null ?{core::int?} null : let final core::int #t90 = 0 in self::Extension|[]=(#t89{self::Class2}, #t90, self::Extension|[](#t89{self::Class2}, #t90).{core::num::+}(1.{core::num::+}((let final self::Class2? #t91 = c2 in #t91 == null ?{core::int?} null : self::Extension|[](#t91{self::Class2}, 0)!) as{Unchecked} core::int){(core::num) → core::int}){(core::num) → core::int}); - let final self::Class1? #t92 = c1 in #t92 == null ?{core::int?} null : let final self::Class2? #t93 = #t92{self::Class1}.{self::Class1::field}{self::Class2?} in #t93 == null ?{core::int?} null : let final core::int #t94 = 0 in let final core::int #t95 = self::Extension|[](#t93{self::Class2}, #t94).{core::num::+}(1){(core::num) → core::int} in let final void #t96 = self::Extension|[]=(#t93{self::Class2}, #t94, #t95) in #t95; - let final self::Class1? #t97 = c1 in #t97 == null ?{core::int?} null : let final self::Class2? #t98 = #t97{self::Class1}.{self::Class1::field}{self::Class2?} in #t98 == null ?{core::int?} null : let final core::int #t99 = 0 in self::Extension|[]=(#t98{self::Class2}, #t99, self::Extension|[](#t98{self::Class2}, #t99).{core::num::+}(1){(core::num) → core::int}); - let final self::Class1? #t100 = c1 in #t100 == null ?{core::int?} null : let final self::Class2? #t101 = #t100{self::Class1}.{self::Class1::field}{self::Class2?} in #t101 == null ?{core::int?} null : let final core::int #t102 = 0 in self::Extension|[](#t101{self::Class2}, #t102) == null ?{core::int?} self::Extension|[]=(#t101{self::Class2}, #t102, 1) : null; - let final self::Class1? #t103 = c1 in #t103 == null ?{core::int?} null : let final self::Class2? #t104 = #t103{self::Class1}.{self::Class1::field}{self::Class2?} in #t104 == null ?{core::int?} null : let final core::int #t105 = 0 in self::Extension|[](#t104{self::Class2}, #t105) == null ?{core::int?} self::Extension|[]=(#t104{self::Class2}, #t105, 1.{core::num::+}((let final self::Class2? #t106 = c2 in #t106 == null ?{core::int?} null : self::Extension|[](#t106{self::Class2}, 1)!) as{Unchecked} core::int){(core::num) → core::int}) : null; + let final self::Class1? #t82 = c1 in #t82 == null ?{void} null : let final self::Class2? #t83 = #t82{self::Class1}.{self::Class1::field}{self::Class2?} in #t83 == null ?{void} null : self::Extension|[]=(#t83{self::Class2}, 0, 1.{core::num::+}(let core::int? #t84 = let final self::Class2? #t85 = c2 in #t85 == null ?{core::int?} null : self::Extension|[](#t85{self::Class2}, 0)! in #t84 == null ?{core::int} #t84 as core::int : #t84{core::int}){(core::num) → core::int}); + let final self::Class1? #t86 = c1 in #t86 == null ?{core::int?} null : let final self::Class2? #t87 = #t86{self::Class1}.{self::Class1::field}{self::Class2?} in #t87 == null ?{core::int?} null : let final core::int #t88 = 0 in self::Extension|[]=(#t87{self::Class2}, #t88, self::Extension|[](#t87{self::Class2}, #t88).{core::num::+}(1){(core::num) → core::int}); + let final self::Class1? #t89 = c1 in #t89 == null ?{core::int?} null : let final self::Class2? #t90 = #t89{self::Class1}.{self::Class1::field}{self::Class2?} in #t90 == null ?{core::int?} null : let final core::int #t91 = 0 in self::Extension|[]=(#t90{self::Class2}, #t91, self::Extension|[](#t90{self::Class2}, #t91).{core::num::+}(1.{core::num::+}(let core::int? #t92 = let final self::Class2? #t93 = c2 in #t93 == null ?{core::int?} null : self::Extension|[](#t93{self::Class2}, 0)! in #t92 == null ?{core::int} #t92 as core::int : #t92{core::int}){(core::num) → core::int}){(core::num) → core::int}); + let final self::Class1? #t94 = c1 in #t94 == null ?{core::int?} null : let final self::Class2? #t95 = #t94{self::Class1}.{self::Class1::field}{self::Class2?} in #t95 == null ?{core::int?} null : let final core::int #t96 = 0 in let final core::int #t97 = self::Extension|[](#t95{self::Class2}, #t96).{core::num::+}(1){(core::num) → core::int} in let final void #t98 = self::Extension|[]=(#t95{self::Class2}, #t96, #t97) in #t97; + let final self::Class1? #t99 = c1 in #t99 == null ?{core::int?} null : let final self::Class2? #t100 = #t99{self::Class1}.{self::Class1::field}{self::Class2?} in #t100 == null ?{core::int?} null : let final core::int #t101 = 0 in self::Extension|[]=(#t100{self::Class2}, #t101, self::Extension|[](#t100{self::Class2}, #t101).{core::num::+}(1){(core::num) → core::int}); + let final self::Class1? #t102 = c1 in #t102 == null ?{core::int?} null : let final self::Class2? #t103 = #t102{self::Class1}.{self::Class1::field}{self::Class2?} in #t103 == null ?{core::int?} null : let final core::int #t104 = 0 in self::Extension|[](#t103{self::Class2}, #t104) == null ?{core::int?} self::Extension|[]=(#t103{self::Class2}, #t104, 1) : null; + let final self::Class1? #t105 = c1 in #t105 == null ?{core::int?} null : let final self::Class2? #t106 = #t105{self::Class1}.{self::Class1::field}{self::Class2?} in #t106 == null ?{core::int?} null : let final core::int #t107 = 0 in self::Extension|[](#t106{self::Class2}, #t107) == null ?{core::int?} self::Extension|[]=(#t106{self::Class2}, #t107, 1.{core::num::+}(let core::int? #t108 = let final self::Class2? #t109 = c2 in #t109 == null ?{core::int?} null : self::Extension|[](#t109{self::Class2}, 1)! in #t108 == null ?{core::int} #t108 as core::int : #t108{core::int}){(core::num) → core::int}) : null; } @@ -139,4 +139,4 @@ Evaluated: VariableGet @ org-dartlang-testcase:///null_shorting_index.dart:72:25 Evaluated: VariableGet @ org-dartlang-testcase:///null_shorting_index.dart:72:25 -> IntConstant(0) Evaluated: VariableGet @ org-dartlang-testcase:///null_shorting_index.dart:73:25 -> IntConstant(0) Evaluated: VariableGet @ org-dartlang-testcase:///null_shorting_index.dart:73:25 -> IntConstant(0) -Extra constant evaluation: evaluated: 705, effectively constant: 60 +Extra constant evaluation: evaluated: 723, effectively constant: 60 diff --git a/pkg/front_end/testcases/nnbd/redundant_type_casts.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/redundant_type_casts.dart.weak.transformed.expect index a6538356aa0..41b48fe6886 100644 --- a/pkg/front_end/testcases/nnbd/redundant_type_casts.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/nnbd/redundant_type_casts.dart.weak.transformed.expect @@ -8,6 +8,6 @@ class A extends core::Object { : super core::Object::•() ; get current() → self::A::T% - return this.{self::A::_current}{self::A::T?} as{Unchecked} self::A::T%; + return let self::A::T? #t1 = this.{self::A::_current}{self::A::T?} in #t1 == null ?{self::A::T%} #t1 as self::A::T% : #t1{self::A::T%}; } static method main() → dynamic {} diff --git a/pkg/front_end/testcases/nnbd/return_null.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/return_null.dart.weak.transformed.expect index 92f91a018a2..977c16b6fdf 100644 --- a/pkg/front_end/testcases/nnbd/return_null.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/nnbd/return_null.dart.weak.transformed.expect @@ -79,14 +79,14 @@ static method returnExplicit() → core::String { core::print("foo"); return invalid-expression "pkg/front_end/testcases/nnbd/return_null.dart:13:10: Error: The value 'null' can't be returned from a function with return type 'String' because 'String' is not nullable. return null; // error - ^" in null as{TypeError,Unchecked} core::String; + ^" in let Null #t1 = null in #t1 == null ?{core::String} #t1 as{TypeError} core::String : #t1{core::String}; } static method returnMixed(core::bool b) → core::String { if(b) { core::print("foo"); return invalid-expression "pkg/front_end/testcases/nnbd/return_null.dart:19:12: Error: The value 'null' can't be returned from a function with return type 'String' because 'String' is not nullable. return null; // error - ^" in null as{TypeError,Unchecked} core::String; + ^" in let Null #t2 = null in #t2 == null ?{core::String} #t2 as{TypeError} core::String : #t2{core::String}; } return invalid-expression "pkg/front_end/testcases/nnbd/return_null.dart:16:8: Error: A non-null value must be returned since the return type 'String' doesn't allow null. String returnMixed(bool b) /*error*/ { @@ -153,14 +153,14 @@ static method localFunctions() → dynamic { core::print("foo"); return invalid-expression "pkg/front_end/testcases/nnbd/return_null.dart:69:12: Error: The value 'null' can't be returned from a function with return type 'String' because 'String' is not nullable. return null; // error - ^" in null as{TypeError,Unchecked} core::String; + ^" in let Null #t3 = null in #t3 == null ?{core::String} #t3 as{TypeError} core::String : #t3{core::String}; } function returnMixed(core::bool b) → core::String { if(b) { core::print("foo"); return invalid-expression "pkg/front_end/testcases/nnbd/return_null.dart:75:14: Error: The value 'null' can't be returned from a function with return type 'String' because 'String' is not nullable. return null; // error - ^" in null as{TypeError,Unchecked} core::String; + ^" in let Null #t4 = null in #t4 == null ?{core::String} #t4 as{TypeError} core::String : #t4{core::String}; } return invalid-expression "pkg/front_end/testcases/nnbd/return_null.dart:72:3: Error: A non-null value must be returned since the return type 'String' doesn't allow null. String returnMixed(bool b) /* error */ { diff --git a/pkg/front_end/testcases/nnbd/type_constraint_solving_closures_in_upper_and_lower_bounds.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/type_constraint_solving_closures_in_upper_and_lower_bounds.dart.weak.transformed.expect index 9a05328ee25..e33ba05b737 100644 --- a/pkg/front_end/testcases/nnbd/type_constraint_solving_closures_in_upper_and_lower_bounds.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/nnbd/type_constraint_solving_closures_in_upper_and_lower_bounds.dart.weak.transformed.expect @@ -15,7 +15,7 @@ class C extends core::Object { ; } static method check(self::C> f) → self::check::T% { - return null as{Unchecked} self::check::T%; + return let Null #t1 = null in #t1 == null ?{self::check::T%} #t1 as self::check::T% : #t1{self::check::T%}; } static method test() → void { core::int x = self::check(new self::C::•>((core::List x) → void {})); @@ -24,3 +24,10 @@ static method test() → void { ^" in x as{TypeError} core::String; } static method main() → dynamic {} + + +Extra constant evaluation status: +Evaluated: EqualsNull @ org-dartlang-testcase:///type_constraint_solving_closures_in_upper_and_lower_bounds.dart:10:3 -> BoolConstant(true) +Evaluated: VariableGet @ org-dartlang-testcase:///type_constraint_solving_closures_in_upper_and_lower_bounds.dart:10:15 -> NullConstant(null) +Evaluated: VariableGet @ org-dartlang-testcase:///type_constraint_solving_closures_in_upper_and_lower_bounds.dart:10:3 -> NullConstant(null) +Extra constant evaluation: evaluated: 9, effectively constant: 3 diff --git a/pkg/front_end/testcases/nnbd_mixed/hierarchy/in_dill_out_in/in_out_in.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/hierarchy/in_dill_out_in/in_out_in.dart.weak.transformed.expect index 7b3dd892c71..6492c5606a7 100644 --- a/pkg/front_end/testcases/nnbd_mixed/hierarchy/in_dill_out_in/in_out_in.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/nnbd_mixed/hierarchy/in_dill_out_in/in_out_in.dart.weak.transformed.expect @@ -150,7 +150,7 @@ Try removing the extra positional arguments. i = super.{in_2::SuperQ::nullabilityGetter}; this.{self::ClassQ::nullabilitySetter} = invalid-expression "pkg/front_end/testcases/nnbd_mixed/hierarchy/in_dill_out_in/in_out_in.dart:52:25: Error: The value 'null' can't be assigned to a variable of type 'int' because 'int' is not nullable. nullabilitySetter = null; // error - ^" in null as{TypeError,Unchecked} core::int; + ^" in let Null #t1 = null in #t1 == null ?{core::int} #t1 as{TypeError} core::int : #t1{core::int}; super.{in_2::SuperQ::nullabilitySetter} = null; } abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic; -> core::Object::noSuchMethod diff --git a/pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_dill_in/in_out_in.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_dill_in/in_out_in.dart.weak.transformed.expect index 5fa6986a975..d73b7e86d6b 100644 --- a/pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_dill_in/in_out_in.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_dill_in/in_out_in.dart.weak.transformed.expect @@ -128,7 +128,7 @@ Try removing the extra positional arguments. i = super.{in_2::SuperQ::nullabilityGetter}; this.{self::ClassQ::nullabilitySetter} = invalid-expression "pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_dill_in/in_out_in.dart:52:25: Error: The value 'null' can't be assigned to a variable of type 'int' because 'int' is not nullable. nullabilitySetter = null; // error - ^" in null as{TypeError,Unchecked} core::int; + ^" in let Null #t1 = null in #t1 == null ?{core::int} #t1 as{TypeError} core::int : #t1{core::int}; super.{in_2::SuperQ::nullabilitySetter} = null; } abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic; -> core::Object::noSuchMethod @@ -193,7 +193,7 @@ Try removing the extra positional arguments. i = super.{in_::_LegacyMixedInQ&Object&SuperQ::nullabilityGetter}; this.{self::ClassMixedInQ::nullabilitySetter} = invalid-expression "pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_dill_in/in_out_in.dart:102:25: Error: The value 'null' can't be assigned to a variable of type 'int' because 'int' is not nullable. nullabilitySetter = null; // error - ^" in null as{TypeError,Unchecked} core::int; + ^" in let Null #t2 = null in #t2 == null ?{core::int} #t2 as{TypeError} core::int : #t2{core::int}; super.{in_::_LegacyMixedInQ&Object&SuperQ::nullabilitySetter} = null; } abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic; -> core::Object::noSuchMethod diff --git a/pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_in.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_in.dart.weak.transformed.expect index c83d872b993..b7917bf3405 100644 --- a/pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_in.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_in.dart.weak.transformed.expect @@ -126,7 +126,7 @@ class ClassQ extends in_::LegacyClassQ implements in_2::Super { core::int i; this.{self::ClassQ::nullabilityMethod}(invalid-expression "pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_in.dart:38:23: Error: The value 'null' can't be assigned to the parameter type 'int' because 'int' is not nullable. nullabilityMethod(null); // error - ^" in null as{TypeError,Unchecked} core::int){(core::int) → core::int}; + ^" in let Null #t1 = null in #t1 == null ?{core::int} #t1 as{TypeError} core::int : #t1{core::int}){(core::int) → core::int}; i = super.{in_2::SuperQ::nullabilityMethod}(null); i = this.{in_::LegacyClassQ::optionalArgumentsMethod}(null, null){(core::int*, [core::int*]) →* core::int*}; i = super.{in_2::SuperQ::optionalArgumentsMethod}(null); @@ -138,7 +138,7 @@ Try removing the extra positional arguments. i = super.{in_2::SuperQ::nullabilityGetter}; this.{self::ClassQ::nullabilitySetter} = invalid-expression "pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_in.dart:52:25: Error: The value 'null' can't be assigned to a variable of type 'int' because 'int' is not nullable. nullabilitySetter = null; // error - ^" in null as{TypeError,Unchecked} core::int; + ^" in let Null #t2 = null in #t2 == null ?{core::int} #t2 as{TypeError} core::int : #t2{core::int}; super.{in_2::SuperQ::nullabilitySetter} = null; } abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic; -> core::Object::noSuchMethod @@ -194,7 +194,7 @@ class ClassMixedInQ extends in_::LegacyMixedInQ implements in_2::Super { core::int i; this.{self::ClassMixedInQ::nullabilityMethod}(invalid-expression "pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_in.dart:88:23: Error: The value 'null' can't be assigned to the parameter type 'int' because 'int' is not nullable. nullabilityMethod(null); // error - ^" in null as{TypeError,Unchecked} core::int){(core::int) → core::int}; + ^" in let Null #t3 = null in #t3 == null ?{core::int} #t3 as{TypeError} core::int : #t3{core::int}){(core::int) → core::int}; i = super.{in_::_LegacyMixedInQ&Object&SuperQ::nullabilityMethod}(null); i = this.{in_::LegacyMixedInQ::optionalArgumentsMethod}(null, null){(core::int*, [core::int*]) →* core::int*}; i = super.{in_::_LegacyMixedInQ&Object&SuperQ::optionalArgumentsMethod}(null); @@ -206,7 +206,7 @@ Try removing the extra positional arguments. i = super.{in_::_LegacyMixedInQ&Object&SuperQ::nullabilityGetter}; this.{self::ClassMixedInQ::nullabilitySetter} = invalid-expression "pkg/front_end/testcases/nnbd_mixed/hierarchy/in_out_in.dart:102:25: Error: The value 'null' can't be assigned to a variable of type 'int' because 'int' is not nullable. nullabilitySetter = null; // error - ^" in null as{TypeError,Unchecked} core::int; + ^" in let Null #t4 = null in #t4 == null ?{core::int} #t4 as{TypeError} core::int : #t4{core::int}; super.{in_::_LegacyMixedInQ&Object&SuperQ::nullabilitySetter} = null; } abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic; -> core::Object::noSuchMethod diff --git a/pkg/front_end/testcases/nnbd_mixed/issue41657.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/issue41657.dart.weak.transformed.expect index e662d939b58..270fd055505 100644 --- a/pkg/front_end/testcases/nnbd_mixed/issue41657.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/nnbd_mixed/issue41657.dart.weak.transformed.expect @@ -6,9 +6,9 @@ static final field core::bool isLegacySubtyping1a = #C1 is core::List static const field core::bool isLegacySubtyping1b = #C2; static final field core::bool isLegacySubtyping2a = #C3 is core::List; static const field core::bool isLegacySubtyping2b = #C2; -static final field core::List assertLegacySubtyping1a = #C1 as{Unchecked} core::List; +static final field core::List assertLegacySubtyping1a = #C1 as core::List; static const field core::List assertLegacySubtyping1b = #C1; -static final field core::List assertLegacySubtyping2a = #C3 as{Unchecked} core::List; +static final field core::List assertLegacySubtyping2a = #C3 as core::List; static const field core::List assertLegacySubtyping2b = #C3; static method main() → void { self::expect(self::isLegacySubtyping1a, #C2); diff --git a/pkg/front_end/testcases/nnbd_mixed/issue42181.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/issue42181.dart.weak.transformed.expect index db2b011e44d..70618b49503 100644 --- a/pkg/front_end/testcases/nnbd_mixed/issue42181.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/nnbd_mixed/issue42181.dart.weak.transformed.expect @@ -16,7 +16,7 @@ static method f1(core::int x) → core::int? static method test() → void { (core::int*) → core::int* f = invalid-expression "pkg/front_end/testcases/nnbd_mixed/issue42181.dart:10:9: Error: The value 'null' can't be assigned to a variable of type 'int Function(int)' because 'int Function(int)' is not nullable. F f = null; // Static error - ^" in null as{TypeError,Unchecked} (core::int*) → core::int*; + ^" in let Null #t1 = null in #t1 == null ?{(core::int*) → core::int*} #t1 as{TypeError} (core::int*) → core::int* : #t1{(core::int*) → core::int*}; f = #C1; } static method main() → dynamic {} diff --git a/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in/main.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in/main.dart.weak.transformed.expect index 12703a06a9e..65180f92e9c 100644 --- a/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in/main.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in/main.dart.weak.transformed.expect @@ -35,13 +35,13 @@ static method test() → dynamic { core::int i = sub.{opt::_SubClass&Class&Mixin::classMethod}(null){(core::int*) →* core::int*}; core::int j = invalid-expression "pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in/test_lib.dart:10:15: Error: A value of type 'int?' can't be assigned to a variable of type 'int' because 'int?' is nullable and 'int' isn't. int j = sub.mixinMethod(null); - ^" in sub.{opt::_SubClass&Class&Mixin::mixinMethod}(invalid-expression "pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in/test_lib.dart:10:27: Error: The value 'null' can't be assigned to the parameter type 'int' because 'int' is not nullable. + ^" in let core::int? #t1 = sub.{opt::_SubClass&Class&Mixin::mixinMethod}(invalid-expression "pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in/test_lib.dart:10:27: Error: The value 'null' can't be assigned to the parameter type 'int' because 'int' is not nullable. int j = sub.mixinMethod(null); - ^" in null as{TypeError,Unchecked} core::int){(core::int) →* core::int?} as{TypeError,Unchecked} core::int; + ^" in let Null #t2 = null in #t2 == null ?{core::int} #t2 as{TypeError} core::int : #t2{core::int}){(core::int) →* core::int?} in #t1 == null ?{core::int} #t1 as{TypeError} core::int : #t1{core::int}; sub.{opt::_SubClass&Class&Mixin::classField2} = sub.{opt::_SubClass&Class&Mixin::classField1}{core::int*}; sub.{opt::_SubClass&Class&Mixin::mixinField2} = invalid-expression "pkg/front_end/testcases/nnbd_mixed/mixin_from_opt_in/test_lib.dart:12:25: Error: A value of type 'int?' can't be assigned to a variable of type 'int' because 'int?' is nullable and 'int' isn't. sub.mixinField2 = sub.mixinField1; - ^" in sub.{opt::_SubClass&Class&Mixin::mixinField1}{core::int?} as{TypeError,Unchecked} core::int; + ^" in let core::int? #t3 = sub.{opt::_SubClass&Class&Mixin::mixinField1}{core::int?} in #t3 == null ?{core::int} #t3 as{TypeError} core::int : #t3{core::int}; } library; diff --git a/pkg/front_end/testcases/nonfunction_type_aliases/issue41501.dart.weak.transformed.expect b/pkg/front_end/testcases/nonfunction_type_aliases/issue41501.dart.weak.transformed.expect index 65212b37987..1c442cb5e75 100644 --- a/pkg/front_end/testcases/nonfunction_type_aliases/issue41501.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/nonfunction_type_aliases/issue41501.dart.weak.transformed.expect @@ -24,12 +24,12 @@ static method test() → dynamic { FutureOr<() → opt::A*>foLegacyNonNullable = invalid-expression "pkg/front_end/testcases/nonfunction_type_aliases/issue41501.dart:13:42: Error: The value 'null' can't be assigned to a variable of type 'FutureOr' because 'FutureOr' is not nullable. - 'A' is from 'pkg/front_end/testcases/nonfunction_type_aliases/issue41501_lib.dart'. FutureOr foLegacyNonNullable = null; // error - ^" in null as{TypeError,Unchecked} FutureOr<() → opt::A*>; + ^" in let Null #t1 = null in #t1 == null ?{FutureOr<() → opt::A*>} #t1 as{TypeError} FutureOr<() → opt::A*> : #t1{FutureOr<() → opt::A*>}; has-declared-initializer FutureOr<() →? opt::A*>foLegacyNullable = null; FutureOrfoNonNullable = invalid-expression "pkg/front_end/testcases/nonfunction_type_aliases/issue41501.dart:15:47: Error: The value 'null' can't be assigned to a variable of type 'FutureOr' because 'FutureOr' is not nullable. - 'A' is from 'pkg/front_end/testcases/nonfunction_type_aliases/issue41501_lib.dart'. FutureOr foNonNullable = null; // error - ^" in null as{TypeError,Unchecked} FutureOr; + ^" in let Null #t2 = null in #t2 == null ?{FutureOr} #t2 as{TypeError} FutureOr : #t2{FutureOr}; has-declared-initializer FutureOrfoNullable = null; has-declared-initializer FutureOrfoNonNullableNullable = null; has-declared-initializer FutureOrfoNullableNullable = null; diff --git a/pkg/front_end/testcases/patterns/access_order.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/access_order.dart.weak.transformed.expect index e9c7f35610f..d1c026ea87f 100644 --- a/pkg/front_end/testcases/patterns/access_order.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/patterns/access_order.dart.weak.transformed.expect @@ -322,7 +322,7 @@ abstract class _MyList&Object&ListMixin exten } } method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ fillRange(core::int start, core::int end, [covariant-by-class self::_MyList&Object&ListMixin::E? fill = #C2]) → void { - self::_MyList&Object&ListMixin::E% value = let self::_MyList&Object&ListMixin::E? #t6 = fill in #t6 == null ?{self::_MyList&Object&ListMixin::E%} #t6 as{Unchecked} self::_MyList&Object&ListMixin::E% : #t6{self::_MyList&Object&ListMixin::E%}; + self::_MyList&Object&ListMixin::E% value = let self::_MyList&Object&ListMixin::E? #t6 = fill in #t6 == null ?{self::_MyList&Object&ListMixin::E%} let self::_MyList&Object&ListMixin::E? #t7 = #t6 in #t7 == null ?{self::_MyList&Object&ListMixin::E%} #t7 as self::_MyList&Object&ListMixin::E% : #t7{self::_MyList&Object&ListMixin::E%} : #t6{self::_MyList&Object&ListMixin::E%}; core::RangeError::checkValidRange(start, end, this.{core::List::length}{core::int}); for (core::int i = start; i.{core::num::<}(end){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) { this.{core::List::[]=}(i, value){(core::int, self::_MyList&Object&ListMixin::E%) → void}; @@ -496,7 +496,7 @@ abstract class _MyList&Object&ListMixin exten for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) { self::_MyList&Object&ListMixin::E% element = :sync-for-iterator.{core::Iterator::current}{self::_MyList&Object&ListMixin::E%}; { - this.{core::List::[]=}(let final core::int #t7 = index in let final core::int #t8 = index = #t7.{core::num::+}(1){(core::num) → core::int} in #t7, element){(core::int, self::_MyList&Object&ListMixin::E%) → void}; + this.{core::List::[]=}(let final core::int #t8 = index in let final core::int #t9 = index = #t8.{core::num::+}(1){(core::num) → core::int} in #t8, element){(core::int, self::_MyList&Object&ListMixin::E%) → void}; } } } @@ -538,31 +538,31 @@ class MyList extends self::_MyList&Object&Lis } static method test1(core::Object o) → core::String return block { - core::String #t9; + core::String #t10; final synthesized core::Object #0#0 = o; #L1: { { hoisted core::Object? x; hoisted core::Object? y; - if(#0#0 is core::List && #0#0{core::List}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C8 && (let final core::Object? #t10 = x = #0#0{core::List}.{core::List::[]}(0){(core::int) → core::Object?} in true) && #C9 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List}.{core::List::[]}(1){(core::int) → core::Object?}) { + if(#0#0 is core::List && #0#0{core::List}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C8 && (let final core::Object? #t11 = x = #0#0{core::List}.{core::List::[]}(0){(core::int) → core::Object?} in true) && #C9 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List}.{core::List::[]}(1){(core::int) → core::Object?}) { y = #0#0{core::List}.{core::List::[]}(2){(core::int) → core::Object?}; - #t9 = "match-1"; + #t10 = "match-1"; break #L1; } } { if(true) { - #t9 = "no match"; + #t10 = "no match"; break #L1; } } throw{for-error-handling} new _in::ReachabilityError::•("`null` encountered as case in a switch expression with a non-nullable type."); } - } =>#t9; + } =>#t10; static method test2(core::Object o) → core::String return block { - core::String #t11; + core::String #t12; final synthesized core::Object #0#0 = o; #L2: { @@ -572,22 +572,22 @@ static method test2(core::Object o) → core::String if(#0#0 is core::List && #0#0{core::List}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C8 && #C10 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List}.{core::List::[]}(0){(core::int) → core::Object?}) { x = #0#0{core::List}.{core::List::[]}(1){(core::int) → core::Object?}; y = #0#0{core::List}.{core::List::[]}(2){(core::int) → core::Object?}; - #t11 = "match-1"; + #t12 = "match-1"; break #L2; } } { if(true) { - #t11 = "no match"; + #t12 = "no match"; break #L2; } } throw{for-error-handling} new _in::ReachabilityError::•("`null` encountered as case in a switch expression with a non-nullable type."); } - } =>#t11; + } =>#t12; static method test3(core::Object o) → core::String return block { - core::String #t12; + core::String #t13; final synthesized core::Object #0#0 = o; synthesized core::bool #0#4; synthesized core::bool #0#4#isSet = false; @@ -599,29 +599,29 @@ static method test3(core::Object o) → core::String { { hoisted core::Object x; - if(#0#0 is core::List && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t13 = #0#4#isSet = true in #0#4 = #0#0{core::List}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C9) && (let final core::Object? #t14 = (#0#6#isSet ?{core::Object?} #0#6{core::Object?} : let final core::bool #t15 = #0#6#isSet = true in #0#6 = #0#0{core::List}.{core::List::[]}(0){(core::int) → core::Object?})! in let final core::Object? #t16 = x = (#0#6#isSet ?{core::Object?} #0#6{core::Object?} : let final core::bool #t17 = #0#6#isSet = true in #0#6 = #0#0{core::List}.{core::List::[]}(0){(core::int) → core::Object?})! in true) && #C10 =={core::num::==}{(core::Object) → core::bool} (#0#8#isSet ?{core::Object?} #0#8{core::Object?} : let final core::bool #t18 = #0#8#isSet = true in #0#8 = #0#0{core::List}.{core::List::[]}(1){(core::int) → core::Object?})) { - #t12 = "match-1"; + if(#0#0 is core::List && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t14 = #0#4#isSet = true in #0#4 = #0#0{core::List}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C9) && (let final core::Object? #t15 = (#0#6#isSet ?{core::Object?} #0#6{core::Object?} : let final core::bool #t16 = #0#6#isSet = true in #0#6 = #0#0{core::List}.{core::List::[]}(0){(core::int) → core::Object?})! in let final core::Object? #t17 = x = (#0#6#isSet ?{core::Object?} #0#6{core::Object?} : let final core::bool #t18 = #0#6#isSet = true in #0#6 = #0#0{core::List}.{core::List::[]}(0){(core::int) → core::Object?})! in true) && #C10 =={core::num::==}{(core::Object) → core::bool} (#0#8#isSet ?{core::Object?} #0#8{core::Object?} : let final core::bool #t19 = #0#8#isSet = true in #0#8 = #0#0{core::List}.{core::List::[]}(1){(core::int) → core::Object?})) { + #t13 = "match-1"; break #L3; } } { hoisted core::Object x; - if(#0#0 is core::List && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t19 = #0#4#isSet = true in #0#4 = #0#0{core::List}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C9) && #C10 =={core::num::==}{(core::Object) → core::bool} (#0#6#isSet ?{core::Object?} #0#6{core::Object?} : let final core::bool #t20 = #0#6#isSet = true in #0#6 = #0#0{core::List}.{core::List::[]}(0){(core::int) → core::Object?})) { - (#0#8#isSet ?{core::Object?} #0#8{core::Object?} : let final core::bool #t21 = #0#8#isSet = true in #0#8 = #0#0{core::List}.{core::List::[]}(1){(core::int) → core::Object?})!; - x = (#0#8#isSet ?{core::Object?} #0#8{core::Object?} : let final core::bool #t22 = #0#8#isSet = true in #0#8 = #0#0{core::List}.{core::List::[]}(1){(core::int) → core::Object?})!; - #t12 = "match-2"; + if(#0#0 is core::List && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t20 = #0#4#isSet = true in #0#4 = #0#0{core::List}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C9) && #C10 =={core::num::==}{(core::Object) → core::bool} (#0#6#isSet ?{core::Object?} #0#6{core::Object?} : let final core::bool #t21 = #0#6#isSet = true in #0#6 = #0#0{core::List}.{core::List::[]}(0){(core::int) → core::Object?})) { + (#0#8#isSet ?{core::Object?} #0#8{core::Object?} : let final core::bool #t22 = #0#8#isSet = true in #0#8 = #0#0{core::List}.{core::List::[]}(1){(core::int) → core::Object?})!; + x = (#0#8#isSet ?{core::Object?} #0#8{core::Object?} : let final core::bool #t23 = #0#8#isSet = true in #0#8 = #0#0{core::List}.{core::List::[]}(1){(core::int) → core::Object?})!; + #t13 = "match-2"; break #L3; } } { if(true) { - #t12 = "no match"; + #t13 = "no match"; break #L3; } } throw{for-error-handling} new _in::ReachabilityError::•("`null` encountered as case in a switch expression with a non-nullable type."); } - } =>#t12; + } =>#t13; static method main() → dynamic { final self::MyList ml1 = new self::MyList::•(core::_GrowableList::_literal3(1, 2, 3)); self::expect("match-1", self::test1(ml1)); @@ -656,4 +656,4 @@ Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:462:12 -> IntConstant(-1) Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:471:12 -> IntConstant(-1) Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:480:12 -> IntConstant(-1) -Extra constant evaluation: evaluated: 1239, effectively constant: 4 +Extra constant evaluation: evaluated: 1245, effectively constant: 4 diff --git a/pkg/front_end/testcases/patterns/boolean_literal_inside_cast.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/boolean_literal_inside_cast.dart.weak.transformed.expect index 9fe0b400d7f..65b14008bc9 100644 --- a/pkg/front_end/testcases/patterns/boolean_literal_inside_cast.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/patterns/boolean_literal_inside_cast.dart.weak.transformed.expect @@ -7,7 +7,7 @@ static method test(dynamic x) → dynamic { { final synthesized dynamic #0#0 = x; { - if(let final core::Object #t1 = #0#0 as{Unchecked} core::Object in #C1 =={core::Object::==}{(core::Object) → core::bool} #0#0 as{Unchecked} core::Object) { + if(let final core::Object #t1 = let dynamic #t2 = #0#0 in #t2 == null ?{core::Object} #t2 as core::Object : #t2{core::Object} in #C1 =={core::Object::==}{(core::Object) → core::bool} (let dynamic #t3 = #0#0 in #t3 == null ?{core::Object} #t3 as core::Object : #t3{core::Object})) { { break #L1; } diff --git a/pkg/front_end/testcases/patterns/cache_lookups.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/cache_lookups.dart.weak.transformed.expect index 8011b97b396..7a76db64d05 100644 --- a/pkg/front_end/testcases/patterns/cache_lookups.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/patterns/cache_lookups.dart.weak.transformed.expect @@ -389,7 +389,7 @@ abstract class _CustomList&Object&ListMixin e } } method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ fillRange(core::int start, core::int end, [covariant-by-class cac::_CustomList&Object&ListMixin::E? fill = #C5]) → void { - cac::_CustomList&Object&ListMixin::E% value = let cac::_CustomList&Object&ListMixin::E? #t18 = fill in #t18 == null ?{cac::_CustomList&Object&ListMixin::E%} #t18 as{Unchecked} cac::_CustomList&Object&ListMixin::E% : #t18{cac::_CustomList&Object&ListMixin::E%}; + cac::_CustomList&Object&ListMixin::E% value = let cac::_CustomList&Object&ListMixin::E? #t18 = fill in #t18 == null ?{cac::_CustomList&Object&ListMixin::E%} let cac::_CustomList&Object&ListMixin::E? #t19 = #t18 in #t19 == null ?{cac::_CustomList&Object&ListMixin::E%} #t19 as cac::_CustomList&Object&ListMixin::E% : #t19{cac::_CustomList&Object&ListMixin::E%} : #t18{cac::_CustomList&Object&ListMixin::E%}; core::RangeError::checkValidRange(start, end, this.{core::List::length}{core::int}); for (core::int i = start; i.{core::num::<}(end){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) { this.{core::List::[]=}(i, value){(core::int, cac::_CustomList&Object&ListMixin::E%) → void}; @@ -563,7 +563,7 @@ abstract class _CustomList&Object&ListMixin e for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) { cac::_CustomList&Object&ListMixin::E% element = :sync-for-iterator.{core::Iterator::current}{cac::_CustomList&Object&ListMixin::E%}; { - this.{core::List::[]=}(let final core::int #t19 = index in let final core::int #t20 = index = #t19.{core::num::+}(1){(core::num) → core::int} in #t19, element){(core::int, cac::_CustomList&Object&ListMixin::E%) → void}; + this.{core::List::[]=}(let final core::int #t20 = index in let final core::int #t21 = index = #t20.{core::num::+}(1){(core::num) → core::int} in #t20, element){(core::int, cac::_CustomList&Object&ListMixin::E%) → void}; } } } @@ -615,4 +615,4 @@ Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:462:12 -> IntConstant(-1) Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:471:12 -> IntConstant(-1) Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:480:12 -> IntConstant(-1) -Extra constant evaluation: evaluated: 1209, effectively constant: 4 +Extra constant evaluation: evaluated: 1215, effectively constant: 4 diff --git a/pkg/front_end/testcases/patterns/caching.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/caching.dart.weak.transformed.expect index 6eda0848edf..d3389ccc727 100644 --- a/pkg/front_end/testcases/patterns/caching.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/patterns/caching.dart.weak.transformed.expect @@ -138,7 +138,7 @@ static method ifCase(dynamic o) → core::int { } { final synthesized dynamic #17#0 = o; - if(#17#0 is core::Map && #17#0{core::Map}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool} && (#17#0{core::Map}.{core::Map::[]}(#C3){(core::Object?) → core::int?} as{Unchecked} core::int).{core::num::>=}(#C11){(core::num) → core::bool}) { + if(#17#0 is core::Map && #17#0{core::Map}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool} && (let core::int? #t42 = #17#0{core::Map}.{core::Map::[]}(#C3){(core::Object?) → core::int?} in #t42 == null ?{core::int} #t42 as{Unchecked} core::int : #t42{core::int}).{core::num::>=}(#C11){(core::num) → core::bool}) { return 18; } } @@ -190,8 +190,8 @@ static method ifCase(dynamic o) → core::int { synthesized core::bool #24#4#isSet = false; { hoisted core::int b; - if(#24#0 is core::Map && #24#0{core::Map}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool #t42 = #24#4#isSet = true in #24#4 = #24#0{core::Map}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int) { - b = (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool #t43 = #24#4#isSet = true in #24#4 = #24#0{core::Map}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int; + if(#24#0 is core::Map && #24#0{core::Map}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool #t43 = #24#4#isSet = true in #24#4 = #24#0{core::Map}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int) { + b = (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool #t44 = #24#4#isSet = true in #24#4 = #24#0{core::Map}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int; { return 25; } @@ -220,7 +220,7 @@ static method ifCase(dynamic o) → core::int { final synthesized dynamic #27#0 = o; { hoisted dynamic d; - if(#27#0 is ({c: core::Object?, d: core::Object?}) && #C12 =={core::num::==}{(core::Object) → core::bool} #27#0{({c: core::Object?, d: core::Object?})}.c{core::Object?} && (let final core::Object? #t44 = d = #27#0{({c: core::Object?, d: core::Object?})}.d{core::Object?} in true) && d is core::int) { + if(#27#0 is ({c: core::Object?, d: core::Object?}) && #C12 =={core::num::==}{(core::Object) → core::bool} #27#0{({c: core::Object?, d: core::Object?})}.c{core::Object?} && (let final core::Object? #t45 = d = #27#0{({c: core::Object?, d: core::Object?})}.d{core::Object?} in true) && d is core::int) { return 28; } } @@ -238,7 +238,7 @@ static method ifCaseElse(dynamic o) → core::int { final synthesized dynamic #1#0 = o; synthesized core::Object? #1#2; synthesized core::bool #1#2#isSet = false; - if(#1#0 is ({f: core::Object?}) && ((let final core::int #t45 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t46 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t47 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t48 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t49 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t50 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) { + if(#1#0 is ({f: core::Object?}) && ((let final core::int #t46 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t47 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t48 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t49 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t50 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t51 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) { return 2; } else { @@ -250,12 +250,12 @@ static method ifCaseElse(dynamic o) → core::int { final synthesized dynamic #3#0 = o; synthesized core::Object? #3#2; synthesized core::bool #3#2#isSet = false; - if(#3#0 is ({g: core::Object?}) && (let final core::int #t51 = (#3#2#isSet ?{core::Object?} #3#2{core::Object?} : let final core::bool #t52 = #3#2#isSet = true in #3#2 = #3#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#3#2#isSet ?{core::Object?} #3#2{core::Object?} : let final core::bool #t53 = #3#2#isSet = true in #3#2 = #3#0{({g: core::Object?})}.g{core::Object?}) as core::int)) { + if(#3#0 is ({g: core::Object?}) && (let final core::int #t52 = (#3#2#isSet ?{core::Object?} #3#2{core::Object?} : let final core::bool #t53 = #3#2#isSet = true in #3#2 = #3#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#3#2#isSet ?{core::Object?} #3#2{core::Object?} : let final core::bool #t54 = #3#2#isSet = true in #3#2 = #3#0{({g: core::Object?})}.g{core::Object?}) as core::int)) { return 4; } else { final synthesized dynamic #4#0 = o; - if(#4#0 is ({a: core::Object?}) && (let final core::Object? #t54 = #4#0{({a: core::Object?})}.a{core::Object?}! in true)) { + if(#4#0 is ({a: core::Object?}) && (let final core::Object? #t55 = #4#0{({a: core::Object?})}.a{core::Object?}! in true)) { return 5; } else { @@ -277,7 +277,7 @@ static method ifCaseElse(dynamic o) → core::int { final synthesized dynamic #8#0 = o; synthesized core::int #8#2; synthesized core::bool #8#2#isSet = false; - if(#8#0 is core::List && (#8#2#isSet ?{core::int} #8#2{core::int} : let final core::bool #t55 = #8#2#isSet = true in #8#2 = #8#0{core::List}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List}.{core::List::[]}(0){(core::int) → dynamic} && #C8 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List}.{core::List::[]}(1){(core::int) → dynamic} && #C3 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List}.{core::List::[]}((#8#2#isSet ?{core::int} #8#2{core::int} : let final core::bool #t56 = #8#2#isSet = true in #8#2 = #8#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) { + if(#8#0 is core::List && (#8#2#isSet ?{core::int} #8#2{core::int} : let final core::bool #t56 = #8#2#isSet = true in #8#2 = #8#0{core::List}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List}.{core::List::[]}(0){(core::int) → dynamic} && #C8 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List}.{core::List::[]}(1){(core::int) → dynamic} && #C3 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List}.{core::List::[]}((#8#2#isSet ?{core::int} #8#2{core::int} : let final core::bool #t57 = #8#2#isSet = true in #8#2 = #8#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) { return 9; } else { @@ -288,7 +288,7 @@ static method ifCaseElse(dynamic o) → core::int { synthesized core::bool #9#15#isSet = false; synthesized dynamic #9#19; synthesized core::bool #9#19#isSet = false; - if(#9#0 is core::List && #9#0{core::List}.{core::List::length}{core::int}.{core::num::>=}(#C7){(core::num) → core::bool} && #C8 =={core::num::==}{(core::Object) → core::bool} #9#0{core::List}.{core::List::[]}(0){(core::int) → dynamic} && #C3 =={core::num::==}{(core::Object) → core::bool} #9#0{core::List}.{core::List::[]}(1){(core::int) → dynamic} && ((#9#12#isSet ?{core::List} #9#12{core::List} : let final core::bool #t57 = #9#12#isSet = true in #9#12 = #9#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t58 = (#9#15#isSet ?{dynamic} #9#15{dynamic} : let final core::bool #t59 = #9#15#isSet = true in #9#15 = (#9#12#isSet ?{core::List} #9#12{core::List} : let final core::bool #t60 = #9#12#isSet = true in #9#12 = #9#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#9#15#isSet ?{dynamic} #9#15{dynamic} : let final core::bool #t61 = #9#15#isSet = true in #9#15 = (#9#12#isSet ?{core::List} #9#12{core::List} : let final core::bool #t62 = #9#12#isSet = true in #9#12 = #9#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t63 = (#9#19#isSet ?{dynamic} #9#19{dynamic} : let final core::bool #t64 = #9#19#isSet = true in #9#19 = (#9#12#isSet ?{core::List} #9#12{core::List} : let final core::bool #t65 = #9#12#isSet = true in #9#12 = #9#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#9#19#isSet ?{dynamic} #9#19{dynamic} : let final core::bool #t66 = #9#19#isSet = true in #9#19 = (#9#12#isSet ?{core::List} #9#12{core::List} : let final core::bool #t67 = #9#12#isSet = true in #9#12 = #9#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) { + if(#9#0 is core::List && #9#0{core::List}.{core::List::length}{core::int}.{core::num::>=}(#C7){(core::num) → core::bool} && #C8 =={core::num::==}{(core::Object) → core::bool} #9#0{core::List}.{core::List::[]}(0){(core::int) → dynamic} && #C3 =={core::num::==}{(core::Object) → core::bool} #9#0{core::List}.{core::List::[]}(1){(core::int) → dynamic} && ((#9#12#isSet ?{core::List} #9#12{core::List} : let final core::bool #t58 = #9#12#isSet = true in #9#12 = #9#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t59 = (#9#15#isSet ?{dynamic} #9#15{dynamic} : let final core::bool #t60 = #9#15#isSet = true in #9#15 = (#9#12#isSet ?{core::List} #9#12{core::List} : let final core::bool #t61 = #9#12#isSet = true in #9#12 = #9#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#9#15#isSet ?{dynamic} #9#15{dynamic} : let final core::bool #t62 = #9#15#isSet = true in #9#15 = (#9#12#isSet ?{core::List} #9#12{core::List} : let final core::bool #t63 = #9#12#isSet = true in #9#12 = #9#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t64 = (#9#19#isSet ?{dynamic} #9#19{dynamic} : let final core::bool #t65 = #9#19#isSet = true in #9#19 = (#9#12#isSet ?{core::List} #9#12{core::List} : let final core::bool #t66 = #9#12#isSet = true in #9#12 = #9#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#9#19#isSet ?{dynamic} #9#19{dynamic} : let final core::bool #t67 = #9#19#isSet = true in #9#19 = (#9#12#isSet ?{core::List} #9#12{core::List} : let final core::bool #t68 = #9#12#isSet = true in #9#12 = #9#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) { return 10; } else { @@ -301,7 +301,7 @@ static method ifCaseElse(dynamic o) → core::int { synthesized core::bool #10#16#isSet = false; synthesized dynamic #10#20; synthesized core::bool #10#20#isSet = false; - if(#10#0 is core::List && (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t68 = #10#2#isSet = true in #10#2 = #10#0{core::List}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C3 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List}.{core::List::[]}(0){(core::int) → dynamic} && #C4 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List}.{core::List::[]}(1){(core::int) → dynamic} && ((#10#12#isSet ?{core::List} #10#12{core::List} : let final core::bool #t69 = #10#12#isSet = true in #10#12 = #10#0{core::List}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t70 = #10#2#isSet = true in #10#2 = #10#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t71 = (#10#16#isSet ?{dynamic} #10#16{dynamic} : let final core::bool #t72 = #10#16#isSet = true in #10#16 = (#10#12#isSet ?{core::List} #10#12{core::List} : let final core::bool #t73 = #10#12#isSet = true in #10#12 = #10#0{core::List}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t74 = #10#2#isSet = true in #10#2 = #10#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#10#16#isSet ?{dynamic} #10#16{dynamic} : let final core::bool #t75 = #10#16#isSet = true in #10#16 = (#10#12#isSet ?{core::List} #10#12{core::List} : let final core::bool #t76 = #10#12#isSet = true in #10#12 = #10#0{core::List}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t77 = #10#2#isSet = true in #10#2 = #10#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t78 = (#10#20#isSet ?{dynamic} #10#20{dynamic} : let final core::bool #t79 = #10#20#isSet = true in #10#20 = (#10#12#isSet ?{core::List} #10#12{core::List} : let final core::bool #t80 = #10#12#isSet = true in #10#12 = #10#0{core::List}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t81 = #10#2#isSet = true in #10#2 = #10#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#10#20#isSet ?{dynamic} #10#20{dynamic} : let final core::bool #t82 = #10#20#isSet = true in #10#20 = (#10#12#isSet ?{core::List} #10#12{core::List} : let final core::bool #t83 = #10#12#isSet = true in #10#12 = #10#0{core::List}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t84 = #10#2#isSet = true in #10#2 = #10#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List}.{core::List::[]}((#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t85 = #10#2#isSet = true in #10#2 = #10#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) { + if(#10#0 is core::List && (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t69 = #10#2#isSet = true in #10#2 = #10#0{core::List}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C3 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List}.{core::List::[]}(0){(core::int) → dynamic} && #C4 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List}.{core::List::[]}(1){(core::int) → dynamic} && ((#10#12#isSet ?{core::List} #10#12{core::List} : let final core::bool #t70 = #10#12#isSet = true in #10#12 = #10#0{core::List}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t71 = #10#2#isSet = true in #10#2 = #10#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t72 = (#10#16#isSet ?{dynamic} #10#16{dynamic} : let final core::bool #t73 = #10#16#isSet = true in #10#16 = (#10#12#isSet ?{core::List} #10#12{core::List} : let final core::bool #t74 = #10#12#isSet = true in #10#12 = #10#0{core::List}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t75 = #10#2#isSet = true in #10#2 = #10#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#10#16#isSet ?{dynamic} #10#16{dynamic} : let final core::bool #t76 = #10#16#isSet = true in #10#16 = (#10#12#isSet ?{core::List} #10#12{core::List} : let final core::bool #t77 = #10#12#isSet = true in #10#12 = #10#0{core::List}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t78 = #10#2#isSet = true in #10#2 = #10#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t79 = (#10#20#isSet ?{dynamic} #10#20{dynamic} : let final core::bool #t80 = #10#20#isSet = true in #10#20 = (#10#12#isSet ?{core::List} #10#12{core::List} : let final core::bool #t81 = #10#12#isSet = true in #10#12 = #10#0{core::List}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t82 = #10#2#isSet = true in #10#2 = #10#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#10#20#isSet ?{dynamic} #10#20{dynamic} : let final core::bool #t83 = #10#20#isSet = true in #10#20 = (#10#12#isSet ?{core::List} #10#12{core::List} : let final core::bool #t84 = #10#12#isSet = true in #10#12 = #10#0{core::List}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t85 = #10#2#isSet = true in #10#2 = #10#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List}.{core::List::[]}((#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t86 = #10#2#isSet = true in #10#2 = #10#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) { return 11; } else { @@ -336,7 +336,7 @@ static method ifCaseElse(dynamic o) → core::int { } else { final synthesized dynamic #17#0 = o; - if(#17#0 is core::Map && #17#0{core::Map}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool} && (#17#0{core::Map}.{core::Map::[]}(#C3){(core::Object?) → core::int?} as{Unchecked} core::int).{core::num::>=}(#C11){(core::num) → core::bool}) { + if(#17#0 is core::Map && #17#0{core::Map}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool} && (let core::int? #t87 = #17#0{core::Map}.{core::Map::[]}(#C3){(core::Object?) → core::int?} in #t87 == null ?{core::int} #t87 as{Unchecked} core::int : #t87{core::int}).{core::num::>=}(#C11){(core::num) → core::bool}) { return 18; } else { @@ -380,8 +380,8 @@ static method ifCaseElse(dynamic o) → core::int { synthesized core::bool #24#4#isSet = false; { hoisted core::int b; - if(#24#0 is core::Map && #24#0{core::Map}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool #t86 = #24#4#isSet = true in #24#4 = #24#0{core::Map}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int) { - b = (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool #t87 = #24#4#isSet = true in #24#4 = #24#0{core::Map}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int; + if(#24#0 is core::Map && #24#0{core::Map}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool #t88 = #24#4#isSet = true in #24#4 = #24#0{core::Map}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int) { + b = (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool #t89 = #24#4#isSet = true in #24#4 = #24#0{core::Map}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int; { return 25; } @@ -405,7 +405,7 @@ static method ifCaseElse(dynamic o) → core::int { final synthesized dynamic #27#0 = o; { hoisted dynamic d; - if(#27#0 is ({c: core::Object?, d: core::Object?}) && #C12 =={core::num::==}{(core::Object) → core::bool} #27#0{({c: core::Object?, d: core::Object?})}.c{core::Object?} && (let final core::Object? #t88 = d = #27#0{({c: core::Object?, d: core::Object?})}.d{core::Object?} in true) && d is core::int) { + if(#27#0 is ({c: core::Object?, d: core::Object?}) && #C12 =={core::num::==}{(core::Object) → core::bool} #27#0{({c: core::Object?, d: core::Object?})}.c{core::Object?} && (let final core::Object? #t90 = d = #27#0{({c: core::Object?, d: core::Object?})}.d{core::Object?} in true) && d is core::int) { return 28; } else { @@ -493,7 +493,7 @@ static method switchStatement(dynamic o) → core::int { } } { - if(#0#0 is ({f: core::Object?}) && ((let final core::int #t89 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t90 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t91 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t92 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t93 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t94 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) { + if(#0#0 is ({f: core::Object?}) && ((let final core::int #t91 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t92 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t93 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t94 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t95 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t96 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) { { return 2; } @@ -507,63 +507,63 @@ static method switchStatement(dynamic o) → core::int { } } { - if(#0#0 is ({g: core::Object?}) && (let final core::int #t95 = (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool #t96 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool #t97 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int)) { + if(#0#0 is ({g: core::Object?}) && (let final core::int #t97 = (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool #t98 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool #t99 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int)) { { return 4; } } } { - if(#0#0 is ({a: core::Object?}) && (let final core::Object? #t98 = (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool #t99 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?})}.a{core::Object?})! in true)) { + if(#0#0 is ({a: core::Object?}) && (let final core::Object? #t100 = (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool #t101 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?})}.a{core::Object?})! in true)) { { return 5; } } } { - if(#0#0 is ({b: core::Object?}) && (!((#0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool #t100 = #0#23#isSet = true in #0#23 = #0#0{({b: core::Object?})}.b{core::Object?}) == null) && true)) { + if(#0#0 is ({b: core::Object?}) && (!((#0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool #t102 = #0#23#isSet = true in #0#23 = #0#0{({b: core::Object?})}.b{core::Object?}) == null) && true)) { { return 6; } } } { - if(#0#0 is core::List && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t101 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t102 = #0#30#isSet = true in #0#30 = #0#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t103 = #0#32#isSet = true in #0#32 = #0#0{core::List}.{core::List::[]}(1){(core::int) → dynamic})) { + if(#0#0 is core::List && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t103 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t104 = #0#30#isSet = true in #0#30 = #0#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t105 = #0#32#isSet = true in #0#32 = #0#0{core::List}.{core::List::[]}(1){(core::int) → dynamic})) { { return 7; } } } { - if(#0#0 is core::List && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool #t104 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t105 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t106 = #0#30#isSet = true in #0#30 = #0#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t107 = #0#32#isSet = true in #0#32 = #0#0{core::List}.{core::List::[]}(1){(core::int) → dynamic})) { + if(#0#0 is core::List && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool #t106 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t107 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t108 = #0#30#isSet = true in #0#30 = #0#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t109 = #0#32#isSet = true in #0#32 = #0#0{core::List}.{core::List::[]}(1){(core::int) → dynamic})) { { return 8; } } } { - if(#0#0 is core::List && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool #t108 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t109 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t110 = #0#30#isSet = true in #0#30 = #0#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t111 = #0#32#isSet = true in #0#32 = #0#0{core::List}.{core::List::[]}(1){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool #t112 = #0#43#isSet = true in #0#43 = #0#0{core::List}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t113 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) { + if(#0#0 is core::List && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool #t110 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t111 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t112 = #0#30#isSet = true in #0#30 = #0#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t113 = #0#32#isSet = true in #0#32 = #0#0{core::List}.{core::List::[]}(1){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool #t114 = #0#43#isSet = true in #0#43 = #0#0{core::List}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t115 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) { { return 9; } } } { - if(#0#0 is core::List && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool #t114 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t115 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t116 = #0#30#isSet = true in #0#30 = #0#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t117 = #0#32#isSet = true in #0#32 = #0#0{core::List}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#47#isSet ?{core::List} #0#47{core::List} : let final core::bool #t118 = #0#47#isSet = true in #0#47 = #0#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t119 = (#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool #t120 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List} #0#47{core::List} : let final core::bool #t121 = #0#47#isSet = true in #0#47 = #0#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool #t122 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List} #0#47{core::List} : let final core::bool #t123 = #0#47#isSet = true in #0#47 = #0#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t124 = (#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool #t125 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List} #0#47{core::List} : let final core::bool #t126 = #0#47#isSet = true in #0#47 = #0#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool #t127 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List} #0#47{core::List} : let final core::bool #t128 = #0#47#isSet = true in #0#47 = #0#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) { + if(#0#0 is core::List && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool #t116 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t117 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t118 = #0#30#isSet = true in #0#30 = #0#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t119 = #0#32#isSet = true in #0#32 = #0#0{core::List}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#47#isSet ?{core::List} #0#47{core::List} : let final core::bool #t120 = #0#47#isSet = true in #0#47 = #0#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t121 = (#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool #t122 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List} #0#47{core::List} : let final core::bool #t123 = #0#47#isSet = true in #0#47 = #0#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool #t124 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List} #0#47{core::List} : let final core::bool #t125 = #0#47#isSet = true in #0#47 = #0#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t126 = (#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool #t127 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List} #0#47{core::List} : let final core::bool #t128 = #0#47#isSet = true in #0#47 = #0#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool #t129 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List} #0#47{core::List} : let final core::bool #t130 = #0#47#isSet = true in #0#47 = #0#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) { { return 10; } } } { - if(#0#0 is core::List && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool #t129 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t130 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t131 = #0#30#isSet = true in #0#30 = #0#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t132 = #0#32#isSet = true in #0#32 = #0#0{core::List}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#58#isSet ?{core::List} #0#58{core::List} : let final core::bool #t133 = #0#58#isSet = true in #0#58 = #0#0{core::List}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t134 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t135 = (#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool #t136 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List} #0#58{core::List} : let final core::bool #t137 = #0#58#isSet = true in #0#58 = #0#0{core::List}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t138 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool #t139 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List} #0#58{core::List} : let final core::bool #t140 = #0#58#isSet = true in #0#58 = #0#0{core::List}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t141 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t142 = (#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool #t143 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List} #0#58{core::List} : let final core::bool #t144 = #0#58#isSet = true in #0#58 = #0#0{core::List}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t145 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool #t146 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List} #0#58{core::List} : let final core::bool #t147 = #0#58#isSet = true in #0#58 = #0#0{core::List}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t148 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool #t149 = #0#43#isSet = true in #0#43 = #0#0{core::List}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t150 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) { + if(#0#0 is core::List && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool #t131 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t132 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t133 = #0#30#isSet = true in #0#30 = #0#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t134 = #0#32#isSet = true in #0#32 = #0#0{core::List}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#58#isSet ?{core::List} #0#58{core::List} : let final core::bool #t135 = #0#58#isSet = true in #0#58 = #0#0{core::List}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t136 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t137 = (#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool #t138 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List} #0#58{core::List} : let final core::bool #t139 = #0#58#isSet = true in #0#58 = #0#0{core::List}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t140 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool #t141 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List} #0#58{core::List} : let final core::bool #t142 = #0#58#isSet = true in #0#58 = #0#0{core::List}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t143 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t144 = (#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool #t145 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List} #0#58{core::List} : let final core::bool #t146 = #0#58#isSet = true in #0#58 = #0#0{core::List}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t147 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool #t148 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List} #0#58{core::List} : let final core::bool #t149 = #0#58#isSet = true in #0#58 = #0#0{core::List}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t150 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool #t151 = #0#43#isSet = true in #0#43 = #0#0{core::List}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t152 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) { { return 11; } } } { - if(#0#0 is self::Class && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool #t151 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int})) { + if(#0#0 is self::Class && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool #t153 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int})) { { return 12; } @@ -577,7 +577,7 @@ static method switchStatement(dynamic o) → core::int { } } { - if(#0#0 is self::Class && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool #t152 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int}) && #C8 =={core::num::==}{(core::Object) → core::bool} #0#0{self::Class}.{self::Class::getter}{core::int}) { + if(#0#0 is self::Class && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool #t154 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int}) && #C8 =={core::num::==}{(core::Object) → core::bool} #0#0{self::Class}.{self::Class::getter}{core::int}) { { return 14; } @@ -605,14 +605,14 @@ static method switchStatement(dynamic o) → core::int { } } { - if(#0#0 is core::Map && #0#0{core::Map}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool} && (#0#0{core::Map}.{core::Map::[]}(#C3){(core::Object?) → core::int?} as{Unchecked} core::int).{core::num::>=}(#C11){(core::num) → core::bool}) { + if(#0#0 is core::Map && #0#0{core::Map}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool} && (let core::int? #t155 = #0#0{core::Map}.{core::Map::[]}(#C3){(core::Object?) → core::int?} in #t155 == null ?{core::int} #t155 as{Unchecked} core::int : #t155{core::int}).{core::num::>=}(#C11){(core::num) → core::bool}) { { return 18; } } } { - if(#0#0 is core::List && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t153 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1) { + if(#0#0 is core::List && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t156 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1) { { return 19; } @@ -648,7 +648,7 @@ static method switchStatement(dynamic o) → core::int { } { hoisted dynamic a; - if(#0#0 is core::Map && #0#0{core::Map}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool} && (let final dynamic #t154 = a = #0#0{core::Map}.{core::Map::[]}(#C7){(core::Object?) → dynamic} in true)) { + if(#0#0 is core::Map && #0#0{core::Map}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool} && (let final dynamic #t157 = a = #0#0{core::Map}.{core::Map::[]}(#C7){(core::Object?) → dynamic} in true)) { { return 24; } @@ -656,7 +656,7 @@ static method switchStatement(dynamic o) → core::int { } { hoisted core::int b; - if(#0#0 is core::Map && #0#0{core::Map}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && ((#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool #t155 = #0#98#isSet = true in #0#98 = #0#0{core::Map}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int && (let final core::int #t156 = b = (#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool #t157 = #0#98#isSet = true in #0#98 = #0#0{core::Map}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int in true))) { + if(#0#0 is core::Map && #0#0{core::Map}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && ((#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool #t158 = #0#98#isSet = true in #0#98 = #0#0{core::Map}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int && (let final core::int #t159 = b = (#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool #t160 = #0#98#isSet = true in #0#98 = #0#0{core::Map}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int in true))) { { return 25; } @@ -671,7 +671,7 @@ static method switchStatement(dynamic o) → core::int { } { hoisted dynamic c; - if(#0#0 is ({a: core::Object?, b: core::Object?}) && #C12 =={core::num::==}{(core::Object) → core::bool} (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool #t158 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?, b: core::Object?})}.a{core::Object?}) && (let final core::Object? #t159 = c = #0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool #t160 = #0#23#isSet = true in #0#23 = #0#0{({a: core::Object?, b: core::Object?})}.b{core::Object?} in true)) { + if(#0#0 is ({a: core::Object?, b: core::Object?}) && #C12 =={core::num::==}{(core::Object) → core::bool} (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool #t161 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?, b: core::Object?})}.a{core::Object?}) && (let final core::Object? #t162 = c = #0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool #t163 = #0#23#isSet = true in #0#23 = #0#0{({a: core::Object?, b: core::Object?})}.b{core::Object?} in true)) { { return 27; } @@ -679,7 +679,7 @@ static method switchStatement(dynamic o) → core::int { } { hoisted dynamic d; - if(#0#0 is ({c: core::Object?, d: core::Object?}) && #C12 =={core::num::==}{(core::Object) → core::bool} #0#0{({c: core::Object?, d: core::Object?})}.c{core::Object?} && (let final core::Object? #t161 = d = #0#0{({c: core::Object?, d: core::Object?})}.d{core::Object?} in true) && d is core::int) { + if(#0#0 is ({c: core::Object?, d: core::Object?}) && #C12 =={core::num::==}{(core::Object) → core::bool} #0#0{({c: core::Object?, d: core::Object?})}.c{core::Object?} && (let final core::Object? #t164 = d = #0#0{({c: core::Object?, d: core::Object?})}.d{core::Object?} in true) && d is core::int) { { return 28; } @@ -697,7 +697,7 @@ static method switchStatement(dynamic o) → core::int { static method switchExpression(dynamic o) → core::int { core::print("o = ${o}"); return block { - core::int #t162; + core::int #t165; final synthesized dynamic #0#0 = o; synthesized core::Object? #0#4; synthesized core::bool #0#4#isSet = false; @@ -739,139 +739,139 @@ static method switchExpression(dynamic o) → core::int { { { if(#C1 =={core::num::==}{(core::Object) → core::bool} #0#0) { - #t162 = 1; + #t165 = 1; break #L2; } } { - if(#0#0 is ({f: core::Object?}) && ((let final core::int #t163 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t164 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t165 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t166 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t167 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t168 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) { - #t162 = 2; + if(#0#0 is ({f: core::Object?}) && ((let final core::int #t166 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t167 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t168 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t169 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t170 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t171 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) { + #t165 = 2; break #L2; } } { if(#C4 =={core::num::==}{(core::Object) → core::bool} #0#0 || #C5 =={core::num::==}{(core::Object) → core::bool} #0#0) { - #t162 = 3; + #t165 = 3; break #L2; } } { - if(#0#0 is ({g: core::Object?}) && (let final core::int #t169 = (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool #t170 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool #t171 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int)) { - #t162 = 4; + if(#0#0 is ({g: core::Object?}) && (let final core::int #t172 = (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool #t173 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool #t174 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int)) { + #t165 = 4; break #L2; } } { - if(#0#0 is ({a: core::Object?}) && (let final core::Object? #t172 = (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool #t173 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?})}.a{core::Object?})! in true)) { - #t162 = 5; + if(#0#0 is ({a: core::Object?}) && (let final core::Object? #t175 = (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool #t176 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?})}.a{core::Object?})! in true)) { + #t165 = 5; break #L2; } } { - if(#0#0 is ({b: core::Object?}) && (!((#0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool #t174 = #0#23#isSet = true in #0#23 = #0#0{({b: core::Object?})}.b{core::Object?}) == null) && true)) { - #t162 = 6; + if(#0#0 is ({b: core::Object?}) && (!((#0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool #t177 = #0#23#isSet = true in #0#23 = #0#0{({b: core::Object?})}.b{core::Object?}) == null) && true)) { + #t165 = 6; break #L2; } } { - if(#0#0 is core::List && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t175 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t176 = #0#30#isSet = true in #0#30 = #0#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t177 = #0#32#isSet = true in #0#32 = #0#0{core::List}.{core::List::[]}(1){(core::int) → dynamic})) { - #t162 = 7; + if(#0#0 is core::List && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t178 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t179 = #0#30#isSet = true in #0#30 = #0#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t180 = #0#32#isSet = true in #0#32 = #0#0{core::List}.{core::List::[]}(1){(core::int) → dynamic})) { + #t165 = 7; break #L2; } } { - if(#0#0 is core::List && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool #t178 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t179 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t180 = #0#30#isSet = true in #0#30 = #0#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t181 = #0#32#isSet = true in #0#32 = #0#0{core::List}.{core::List::[]}(1){(core::int) → dynamic})) { - #t162 = 8; + if(#0#0 is core::List && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool #t181 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t182 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t183 = #0#30#isSet = true in #0#30 = #0#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t184 = #0#32#isSet = true in #0#32 = #0#0{core::List}.{core::List::[]}(1){(core::int) → dynamic})) { + #t165 = 8; break #L2; } } { - if(#0#0 is core::List && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool #t182 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t183 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t184 = #0#30#isSet = true in #0#30 = #0#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t185 = #0#32#isSet = true in #0#32 = #0#0{core::List}.{core::List::[]}(1){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool #t186 = #0#43#isSet = true in #0#43 = #0#0{core::List}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t187 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) { - #t162 = 9; + if(#0#0 is core::List && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool #t185 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t186 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t187 = #0#30#isSet = true in #0#30 = #0#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t188 = #0#32#isSet = true in #0#32 = #0#0{core::List}.{core::List::[]}(1){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool #t189 = #0#43#isSet = true in #0#43 = #0#0{core::List}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t190 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) { + #t165 = 9; break #L2; } } { - if(#0#0 is core::List && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool #t188 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t189 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t190 = #0#30#isSet = true in #0#30 = #0#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t191 = #0#32#isSet = true in #0#32 = #0#0{core::List}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#47#isSet ?{core::List} #0#47{core::List} : let final core::bool #t192 = #0#47#isSet = true in #0#47 = #0#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t193 = (#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool #t194 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List} #0#47{core::List} : let final core::bool #t195 = #0#47#isSet = true in #0#47 = #0#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool #t196 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List} #0#47{core::List} : let final core::bool #t197 = #0#47#isSet = true in #0#47 = #0#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t198 = (#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool #t199 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List} #0#47{core::List} : let final core::bool #t200 = #0#47#isSet = true in #0#47 = #0#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool #t201 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List} #0#47{core::List} : let final core::bool #t202 = #0#47#isSet = true in #0#47 = #0#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) { - #t162 = 10; + if(#0#0 is core::List && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool #t191 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t192 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t193 = #0#30#isSet = true in #0#30 = #0#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t194 = #0#32#isSet = true in #0#32 = #0#0{core::List}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#47#isSet ?{core::List} #0#47{core::List} : let final core::bool #t195 = #0#47#isSet = true in #0#47 = #0#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t196 = (#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool #t197 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List} #0#47{core::List} : let final core::bool #t198 = #0#47#isSet = true in #0#47 = #0#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool #t199 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List} #0#47{core::List} : let final core::bool #t200 = #0#47#isSet = true in #0#47 = #0#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t201 = (#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool #t202 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List} #0#47{core::List} : let final core::bool #t203 = #0#47#isSet = true in #0#47 = #0#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool #t204 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List} #0#47{core::List} : let final core::bool #t205 = #0#47#isSet = true in #0#47 = #0#0{core::List}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) { + #t165 = 10; break #L2; } } { - if(#0#0 is core::List && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool #t203 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t204 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t205 = #0#30#isSet = true in #0#30 = #0#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t206 = #0#32#isSet = true in #0#32 = #0#0{core::List}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#58#isSet ?{core::List} #0#58{core::List} : let final core::bool #t207 = #0#58#isSet = true in #0#58 = #0#0{core::List}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t208 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t209 = (#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool #t210 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List} #0#58{core::List} : let final core::bool #t211 = #0#58#isSet = true in #0#58 = #0#0{core::List}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t212 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool #t213 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List} #0#58{core::List} : let final core::bool #t214 = #0#58#isSet = true in #0#58 = #0#0{core::List}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t215 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t216 = (#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool #t217 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List} #0#58{core::List} : let final core::bool #t218 = #0#58#isSet = true in #0#58 = #0#0{core::List}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t219 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool #t220 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List} #0#58{core::List} : let final core::bool #t221 = #0#58#isSet = true in #0#58 = #0#0{core::List}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t222 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool #t223 = #0#43#isSet = true in #0#43 = #0#0{core::List}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t224 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) { - #t162 = 11; + if(#0#0 is core::List && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool #t206 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t207 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t208 = #0#30#isSet = true in #0#30 = #0#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t209 = #0#32#isSet = true in #0#32 = #0#0{core::List}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#58#isSet ?{core::List} #0#58{core::List} : let final core::bool #t210 = #0#58#isSet = true in #0#58 = #0#0{core::List}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t211 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t212 = (#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool #t213 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List} #0#58{core::List} : let final core::bool #t214 = #0#58#isSet = true in #0#58 = #0#0{core::List}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t215 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool #t216 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List} #0#58{core::List} : let final core::bool #t217 = #0#58#isSet = true in #0#58 = #0#0{core::List}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t218 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t219 = (#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool #t220 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List} #0#58{core::List} : let final core::bool #t221 = #0#58#isSet = true in #0#58 = #0#0{core::List}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t222 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool #t223 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List} #0#58{core::List} : let final core::bool #t224 = #0#58#isSet = true in #0#58 = #0#0{core::List}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t225 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool #t226 = #0#43#isSet = true in #0#43 = #0#0{core::List}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t227 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) { + #t165 = 11; break #L2; } } { - if(#0#0 is self::Class && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool #t225 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int})) { - #t162 = 12; + if(#0#0 is self::Class && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool #t228 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int})) { + #t165 = 12; break #L2; } } { if(#0#0 is self::Class && #C7 =={core::num::==}{(core::Object) → core::bool} #0#0{self::Class}.{self::Class::finalField}{core::int}) { - #t162 = 13; + #t165 = 13; break #L2; } } { - if(#0#0 is self::Class && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool #t226 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int}) && #C8 =={core::num::==}{(core::Object) → core::bool} #0#0{self::Class}.{self::Class::getter}{core::int}) { - #t162 = 14; + if(#0#0 is self::Class && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool #t229 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int}) && #C8 =={core::num::==}{(core::Object) → core::bool} #0#0{self::Class}.{self::Class::getter}{core::int}) { + #t165 = 14; break #L2; } } { if(#0#0 is self::Class) { - #t162 = 15; + #t165 = 15; break #L2; } } { if(#0#0 =={core::Object::==}{(core::Object) → core::bool} #C9) { - #t162 = 16; + #t165 = 16; break #L2; } } { if(#0#0 is ({e: core::Object?}) && !(#0#0{({e: core::Object?})}.e{core::Object?} =={core::Object::==}{(core::Object) → core::bool} #C10)) { - #t162 = 17; + #t165 = 17; break #L2; } } { - if(#0#0 is core::Map && #0#0{core::Map}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool} && (#0#0{core::Map}.{core::Map::[]}(#C3){(core::Object?) → core::int?} as{Unchecked} core::int).{core::num::>=}(#C11){(core::num) → core::bool}) { - #t162 = 18; + if(#0#0 is core::Map && #0#0{core::Map}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool} && (let core::int? #t230 = #0#0{core::Map}.{core::Map::[]}(#C3){(core::Object?) → core::int?} in #t230 == null ?{core::int} #t230 as{Unchecked} core::int : #t230{core::int}).{core::num::>=}(#C11){(core::num) → core::bool}) { + #t165 = 18; break #L2; } } { - if(#0#0 is core::List && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t227 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1) { - #t162 = 19; + if(#0#0 is core::List && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t231 = #0#26#isSet = true in #0#26 = #0#0{core::List}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1) { + #t165 = 19; break #L2; } } { if(#0#0 is core::bool) { - #t162 = 20; + #t165 = 20; break #L2; } } { if(#0#0 is core::Map && o{core::Map}.{core::Map::isEmpty}{core::bool}) { - #t162 = 21; + #t165 = 21; break #L2; } } { if(#0#0 is core::Map && #0#0{core::Map}.{core::Map::containsKey}(#C12){(core::Object?) → core::bool} && #0#0{core::Map}.{core::Map::[]}(#C12){(core::Object?) → dynamic} is core::int) { - #t162 = 22; + #t165 = 22; break #L2; } } { if(#0#0 is core::Map && #0#0{core::Map}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool} && #0#0{core::Map}.{core::Map::[]}(#C1){(core::Object?) → dynamic} is core::String) { - #t162 = 23; + #t165 = 23; break #L2; } } @@ -879,48 +879,48 @@ static method switchExpression(dynamic o) → core::int { hoisted dynamic a; if(#0#0 is core::Map && #0#0{core::Map}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool}) { a = #0#0{core::Map}.{core::Map::[]}(#C7){(core::Object?) → dynamic}; - #t162 = 24; + #t165 = 24; break #L2; } } { hoisted core::int b; - if(#0#0 is core::Map && #0#0{core::Map}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && (#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool #t228 = #0#98#isSet = true in #0#98 = #0#0{core::Map}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int) { - b = (#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool #t229 = #0#98#isSet = true in #0#98 = #0#0{core::Map}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int; - #t162 = 25; + if(#0#0 is core::Map && #0#0{core::Map}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && (#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool #t232 = #0#98#isSet = true in #0#98 = #0#0{core::Map}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int) { + b = (#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool #t233 = #0#98#isSet = true in #0#98 = #0#0{core::Map}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int; + #t165 = 25; break #L2; } } { if(#0#0 is (core::Object?, core::Object?) && #C12 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, core::Object?)}.$1{core::Object?} && #C1 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, core::Object?)}.$2{core::Object?}) { - #t162 = 26; + #t165 = 26; break #L2; } } { hoisted dynamic c; - if(#0#0 is ({a: core::Object?, b: core::Object?}) && #C12 =={core::num::==}{(core::Object) → core::bool} (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool #t230 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?, b: core::Object?})}.a{core::Object?})) { - c = #0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool #t231 = #0#23#isSet = true in #0#23 = #0#0{({a: core::Object?, b: core::Object?})}.b{core::Object?}; - #t162 = 27; + if(#0#0 is ({a: core::Object?, b: core::Object?}) && #C12 =={core::num::==}{(core::Object) → core::bool} (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool #t234 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?, b: core::Object?})}.a{core::Object?})) { + c = #0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool #t235 = #0#23#isSet = true in #0#23 = #0#0{({a: core::Object?, b: core::Object?})}.b{core::Object?}; + #t165 = 27; break #L2; } } { hoisted dynamic d; - if(#0#0 is ({c: core::Object?, d: core::Object?}) && #C12 =={core::num::==}{(core::Object) → core::bool} #0#0{({c: core::Object?, d: core::Object?})}.c{core::Object?} && (let final core::Object? #t232 = d = #0#0{({c: core::Object?, d: core::Object?})}.d{core::Object?} in true) && d is core::int) { - #t162 = 28; + if(#0#0 is ({c: core::Object?, d: core::Object?}) && #C12 =={core::num::==}{(core::Object) → core::bool} #0#0{({c: core::Object?, d: core::Object?})}.c{core::Object?} && (let final core::Object? #t236 = d = #0#0{({c: core::Object?, d: core::Object?})}.d{core::Object?} in true) && d is core::int) { + #t165 = 28; break #L2; } } { if(true) { - #t162 = 0; + #t165 = 0; break #L2; } } throw{for-error-handling} new _in::ReachabilityError::•("`null` encountered as case in a switch expression with a non-nullable type."); } - } =>#t162; + } =>#t165; } static method test(dynamic expected, dynamic value) → dynamic { self::expect(expected, self::ifCase(value)); @@ -1021,4 +1021,4 @@ Evaluated: RecordLiteral @ org-dartlang-testcase:///caching.dart:331:12 -> Recor Evaluated: RecordLiteral @ org-dartlang-testcase:///caching.dart:332:12 -> RecordConstant(const ({c: 0, d: 1})) Evaluated: RecordLiteral @ org-dartlang-testcase:///caching.dart:333:12 -> RecordConstant(const ({c: 0, d: 2})) Evaluated: RecordLiteral @ org-dartlang-testcase:///caching.dart:334:11 -> RecordConstant(const ({c: 0, d: "foo"})) -Extra constant evaluation: evaluated: 2729, effectively constant: 14 +Extra constant evaluation: evaluated: 2753, effectively constant: 14 diff --git a/pkg/front_end/testcases/patterns/caching_constants.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/caching_constants.dart.weak.transformed.expect index e5be0012172..6248dc94faf 100644 --- a/pkg/front_end/testcases/patterns/caching_constants.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/patterns/caching_constants.dart.weak.transformed.expect @@ -25,7 +25,7 @@ abstract class _MyMap&Object&MapMixin> { - return this.{col::MapBase::keys}{core::Iterable}.{core::Iterable::map}>((self::_MyMap&Object&MapMixin::K% key) → core::MapEntry => new core::MapEntry::_(key, let self::_MyMap&Object&MapMixin::V? #t14 = this.{col::MapBase::[]}(key){(core::Object?) → self::_MyMap&Object&MapMixin::V?} in #t14 == null ?{self::_MyMap&Object&MapMixin::V%} #t14 as{Unchecked} self::_MyMap&Object&MapMixin::V% : #t14{self::_MyMap&Object&MapMixin::V%})){((self::_MyMap&Object&MapMixin::K%) → core::MapEntry) → core::Iterable>}; + return this.{col::MapBase::keys}{core::Iterable}.{core::Iterable::map}>((self::_MyMap&Object&MapMixin::K% key) → core::MapEntry => new core::MapEntry::_(key, let self::_MyMap&Object&MapMixin::V? #t18 = this.{col::MapBase::[]}(key){(core::Object?) → self::_MyMap&Object&MapMixin::V?} in #t18 == null ?{self::_MyMap&Object&MapMixin::V%} let self::_MyMap&Object&MapMixin::V? #t19 = #t18 in #t19 == null ?{self::_MyMap&Object&MapMixin::V%} #t19 as self::_MyMap&Object&MapMixin::V% : #t19{self::_MyMap&Object&MapMixin::V%} : #t18{self::_MyMap&Object&MapMixin::V%})){((self::_MyMap&Object&MapMixin::K%) → core::MapEntry) → core::Iterable>}; } method /* from org-dartlang-sdk:///sdk/lib/collection/maps.dart */ map((self::_MyMap&Object&MapMixin::K%, self::_MyMap&Object&MapMixin::V%) → core::MapEntry transform) → core::Map { core::Map result = {}; @@ -84,7 +84,7 @@ abstract class _MyMap&Object&MapMixin entry = transform(key, let self::_MyMap&Object&MapMixin::V? #t15 = this.{col::MapBase::[]}(key){(core::Object?) → self::_MyMap&Object&MapMixin::V?} in #t15 == null ?{self::_MyMap&Object&MapMixin::V%} #t15 as{Unchecked} self::_MyMap&Object&MapMixin::V% : #t15{self::_MyMap&Object&MapMixin::V%}){(self::_MyMap&Object&MapMixin::K%, self::_MyMap&Object&MapMixin::V%) → core::MapEntry}; + core::MapEntry entry = transform(key, let self::_MyMap&Object&MapMixin::V? #t20 = this.{col::MapBase::[]}(key){(core::Object?) → self::_MyMap&Object&MapMixin::V?} in #t20 == null ?{self::_MyMap&Object&MapMixin::V%} let self::_MyMap&Object&MapMixin::V? #t21 = #t20 in #t21 == null ?{self::_MyMap&Object&MapMixin::V%} #t21 as self::_MyMap&Object&MapMixin::V% : #t21{self::_MyMap&Object&MapMixin::V%} : #t20{self::_MyMap&Object&MapMixin::V%}){(self::_MyMap&Object&MapMixin::K%, self::_MyMap&Object&MapMixin::V%) → core::MapEntry}; result.{core::Map::[]=}(entry.{core::MapEntry::key}{self::_MyMap&Object&MapMixin::map::K2%}, entry.{core::MapEntry::value}{self::_MyMap&Object&MapMixin::map::V2%}){(self::_MyMap&Object&MapMixin::map::K2%, self::_MyMap&Object&MapMixin::map::V2%) → void}; } } @@ -109,7 +109,7 @@ abstract class _MyMap&Object&MapMixin}.{core::Map::[]}(key){(core::Object?) → self::MyMap::V?}; } operator []=(covariant-by-class self::MyMap::K% key, covariant-by-class self::MyMap::V% value) → void - return let final core::Map #t17 = this.{self::MyMap::_map}{core::Map} in let final self::MyMap::K% #t18 = key in let final self::MyMap::V% #t19 = value in let final void #t20 = #t17.{core::Map::[]=}(#t18, #t19){(self::MyMap::K%, self::MyMap::V%) → void} in #t19; + return let final core::Map #t24 = this.{self::MyMap::_map}{core::Map} in let final self::MyMap::K% #t25 = key in let final self::MyMap::V% #t26 = value in let final void #t27 = #t24.{core::Map::[]=}(#t25, #t26){(self::MyMap::K%, self::MyMap::V%) → void} in #t26; method clear() → void return this.{self::MyMap::_map}{core::Map}.{core::Map::clear}(){() → void}; get keys() → core::Iterable @@ -225,14 +225,14 @@ static method method(core::Map m) → core::int { synthesized core::String? #0#3; synthesized core::bool #0#3#isSet = false; { - if((#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t21 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}) && #C5 =={core::String::==}{(core::Object) → core::bool} (#0#3#isSet ?{core::String?} #0#3{core::String?} : let final core::bool #t22 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C4){(core::Object?) → core::String?})) { + if((#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t28 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}) && #C5 =={core::String::==}{(core::Object) → core::bool} (#0#3#isSet ?{core::String?} #0#3{core::String?} : let final core::bool #t29 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C4){(core::Object?) → core::String?})) { { return 0; } } } { - if((#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t23 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}) && #C6 =={core::String::==}{(core::Object) → core::bool} (#0#3#isSet ?{core::String?} #0#3{core::String?} : let final core::bool #t24 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C4){(core::Object?) → core::String?})) { + if((#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t30 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}) && #C6 =={core::String::==}{(core::Object) → core::bool} (#0#3#isSet ?{core::String?} #0#3{core::String?} : let final core::bool #t31 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C4){(core::Object?) → core::String?})) { { return 1; } @@ -269,4 +269,4 @@ constants { Extra constant evaluation status: Evaluated: IsExpression @ org-dartlang-testcase:///caching_constants.dart:7:49 -> BoolConstant(true) -Extra constant evaluation: evaluated: 445, effectively constant: 1 +Extra constant evaluation: evaluated: 487, effectively constant: 1 diff --git a/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern.dart.weak.transformed.expect index e33f622ac7f..54fc1be3700 100644 --- a/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern.dart.weak.transformed.expect @@ -15,7 +15,7 @@ static method test(dynamic x) → dynamic { synthesized core::int? #0#2; synthesized core::bool #0#2#isSet = false; { - if(#0#0 is self::C && (let final core::int #t1 = (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?}) as{Unchecked} core::int in #C1 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t3 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?}) as{Unchecked} core::int)) { + if(#0#0 is self::C && (let final core::int #t1 = let core::int? #t2 = #0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t3 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?} in #t2 == null ?{core::int} #t2 as core::int : #t2{core::int} in #C1 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t4 = #0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t5 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?} in #t4 == null ?{core::int} #t4 as core::int : #t4{core::int}))) { { break #L1; } diff --git a/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern_implicitly_named.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern_implicitly_named.dart.weak.transformed.expect index aced95f5706..fc50a3d4b0e 100644 --- a/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern_implicitly_named.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern_implicitly_named.dart.weak.transformed.expect @@ -16,7 +16,7 @@ static method test(dynamic x) → dynamic { synthesized core::bool #0#2#isSet = false; { hoisted core::int f; - if(#0#0 is self::C && (let final core::int #t1 = (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?}) as{Unchecked} core::int in let final core::int #t3 = f = (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t4 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?}) as{Unchecked} core::int in true)) { + if(#0#0 is self::C && (let final core::int #t1 = let core::int? #t2 = #0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t3 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?} in #t2 == null ?{core::int} #t2 as core::int : #t2{core::int} in let final core::int #t4 = f = let core::int? #t5 = #0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t6 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?} in #t5 == null ?{core::int} #t5 as core::int : #t5{core::int} in true)) { { break #L1; } diff --git a/pkg/front_end/testcases/patterns/constant_identifier_inside_cast.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/constant_identifier_inside_cast.dart.weak.transformed.expect index 2bc5772600b..e18431c736b 100644 --- a/pkg/front_end/testcases/patterns/constant_identifier_inside_cast.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/patterns/constant_identifier_inside_cast.dart.weak.transformed.expect @@ -7,7 +7,7 @@ static method test(dynamic x) → dynamic { { final synthesized dynamic #0#0 = x; { - if(let final core::Object #t1 = #0#0 as{Unchecked} core::Object in #C1 =={core::num::==}{(core::Object) → core::bool} #0#0 as{Unchecked} core::Object) { + if(let final core::Object #t1 = let dynamic #t2 = #0#0 in #t2 == null ?{core::Object} #t2 as core::Object : #t2{core::Object} in #C1 =={core::num::==}{(core::Object) → core::bool} (let dynamic #t3 = #0#0 in #t3 == null ?{core::Object} #t3 as core::Object : #t3{core::Object})) { { break #L1; } diff --git a/pkg/front_end/testcases/patterns/double_literal_inside_cast.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/double_literal_inside_cast.dart.weak.transformed.expect index bdb4ea685f5..21f05a673fc 100644 --- a/pkg/front_end/testcases/patterns/double_literal_inside_cast.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/patterns/double_literal_inside_cast.dart.weak.transformed.expect @@ -7,7 +7,7 @@ static method test(dynamic x) → dynamic { { final synthesized dynamic #0#0 = x; { - if(let final core::Object #t1 = #0#0 as{Unchecked} core::Object in #C1 =={core::num::==}{(core::Object) → core::bool} #0#0 as{Unchecked} core::Object) { + if(let final core::Object #t1 = let dynamic #t2 = #0#0 in #t2 == null ?{core::Object} #t2 as core::Object : #t2{core::Object} in #C1 =={core::num::==}{(core::Object) → core::bool} (let dynamic #t3 = #0#0 in #t3 == null ?{core::Object} #t3 as core::Object : #t3{core::Object})) { { break #L1; } diff --git a/pkg/front_end/testcases/patterns/exhaustiveness/nullable_cast.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/exhaustiveness/nullable_cast.dart.weak.transformed.expect index 1ed3a7b301d..160a974673b 100644 --- a/pkg/front_end/testcases/patterns/exhaustiveness/nullable_cast.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/patterns/exhaustiveness/nullable_cast.dart.weak.transformed.expect @@ -29,7 +29,7 @@ static method exhaustiveNonNullableType(core::int? o) → dynamic #L2: { { - if(let final core::int #t4 = #0#0 as{Unchecked} core::int in true) { + if(let final core::int #t4 = let core::int? #t5 = #0#0 in #t5 == null ?{core::int} #t5 as core::int : #t5{core::int} in true) { #t3 = 0; break #L2; } @@ -39,79 +39,79 @@ static method exhaustiveNonNullableType(core::int? o) → dynamic } =>#t3; static method exhaustiveNonNullableSuperType(core::int? o) → dynamic return block { - core::int #t5; + core::int #t6; final synthesized core::int? #0#0 = o; #L3: { { - if(let final core::num #t6 = #0#0 as{Unchecked} core::num in (#0#0 as{Unchecked} core::num) is core::int) { - #t5 = 0; + if(let final core::num #t7 = let core::int? #t8 = #0#0 in #t8 == null ?{core::num} #t8 as core::num : #t8{core::num} in (let core::int? #t9 = #0#0 in #t9 == null ?{core::num} #t9 as core::num : #t9{core::num}) is core::int) { + #t6 = 0; break #L3; } } throw{for-error-handling} new _in::ReachabilityError::•("`null` encountered as case in a switch expression with a non-nullable type."); } - } =>#t5; + } =>#t6; static method exhaustiveNonNullableFutureOr1(FutureOr? o) → dynamic return block { - core::int #t7; + core::int #t10; final synthesized FutureOr? #0#0 = o; #L4: { { - if(let final FutureOr#t8 = #0#0 as{Unchecked} FutureOr in true) { - #t7 = 0; + if(let final FutureOr#t11 = let FutureOr? #t12 = #0#0 in #t12 == null ?{FutureOr} #t12 as FutureOr : #t12{FutureOr} in true) { + #t10 = 0; break #L4; } } throw{for-error-handling} new _in::ReachabilityError::•("`null` encountered as case in a switch expression with a non-nullable type."); } - } =>#t7; + } =>#t10; static method exhaustiveNonNullableFutureOr2(FutureOro) → dynamic return block { - core::int #t9; + core::int #t13; final synthesized FutureOr#0#0 = o; #L5: { { - if(let final FutureOr#t10 = #0#0 as{Unchecked} FutureOr in true) { - #t9 = 0; + if(let final FutureOr#t14 = #0#0 as FutureOr in true) { + #t13 = 0; break #L5; } } throw{for-error-handling} new _in::ReachabilityError::•("`null` encountered as case in a switch expression with a non-nullable type."); } - } =>#t9; + } =>#t13; static method exhaustiveNonNullableFutureOrTypeVariable1(FutureOr? o) → dynamic return block { - core::int #t11; + core::int #t15; final synthesized FutureOr? #0#0 = o; #L6: { { - if(let final FutureOr#t12 = #0#0 as{Unchecked} FutureOr in true) { - #t11 = 0; + if(let final FutureOr#t16 = let FutureOr? #t17 = #0#0 in #t17 == null ?{FutureOr} #t17 as FutureOr : #t17{FutureOr} in true) { + #t15 = 0; break #L6; } } throw{for-error-handling} new _in::ReachabilityError::•("`null` encountered as case in a switch expression with a non-nullable type."); } - } =>#t11; + } =>#t15; static method exhaustiveNonNullableFutureOrTypeVariable2(FutureOro) → dynamic return block { - core::int #t13; + core::int #t18; final synthesized FutureOr#0#0 = o; #L7: { { - if(let final FutureOr#t14 = #0#0 as{Unchecked} FutureOr in true) { - #t13 = 0; + if(let final FutureOr#t19 = #0#0 as FutureOr in true) { + #t18 = 0; break #L7; } } throw{for-error-handling} new _in::ReachabilityError::•("`null` encountered as case in a switch expression with a non-nullable type."); } - } =>#t13; + } =>#t18; static method main() → dynamic { self::expect(0, self::exhaustiveNonNullableTypeVariable(42)); self::expect(0, self::exhaustiveNonNullableTypeVariable(42)); @@ -165,4 +165,4 @@ constants { Extra constant evaluation status: Evaluated: IsExpression @ org-dartlang-testcase:///nullable_cast.dart:78:40 -> BoolConstant(true) -Extra constant evaluation: evaluated: 147, effectively constant: 1 +Extra constant evaluation: evaluated: 177, effectively constant: 1 diff --git a/pkg/front_end/testcases/patterns/extractor_pattern_inside_cast.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/extractor_pattern_inside_cast.dart.weak.transformed.expect index edda7195f91..77033f98e91 100644 --- a/pkg/front_end/testcases/patterns/extractor_pattern_inside_cast.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/patterns/extractor_pattern_inside_cast.dart.weak.transformed.expect @@ -13,7 +13,7 @@ static method test(dynamic x) → dynamic { { final synthesized dynamic #0#0 = x; { - if(let final core::Object #t1 = #0#0 as{Unchecked} core::Object in (#0#0 as{Unchecked} core::Object) is self::C && #C1 =={core::num::==}{(core::Object) → core::bool} ((#0#0 as{Unchecked} core::Object) as{Unchecked} self::C).{self::C::f}{core::int?}) { + if(let final core::Object #t1 = let dynamic #t2 = #0#0 in #t2 == null ?{core::Object} #t2 as core::Object : #t2{core::Object} in (let dynamic #t3 = #0#0 in #t3 == null ?{core::Object} #t3 as core::Object : #t3{core::Object}) is self::C && #C1 =={core::num::==}{(core::Object) → core::bool} ((let dynamic #t4 = #0#0 in #t4 == null ?{core::Object} #t4 as core::Object : #t4{core::Object}) as{Unchecked} self::C).{self::C::f}{core::int?}) { { break #L1; } diff --git a/pkg/front_end/testcases/patterns/final_variable_inside_cast.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/final_variable_inside_cast.dart.weak.transformed.expect index cbc635dee7b..f5ee41a8f02 100644 --- a/pkg/front_end/testcases/patterns/final_variable_inside_cast.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/patterns/final_variable_inside_cast.dart.weak.transformed.expect @@ -8,7 +8,7 @@ static method test(dynamic x) → dynamic { final synthesized dynamic #0#0 = x; { final hoisted core::Object y; - if(let final core::Object #t1 = #0#0 as{Unchecked} core::Object in let final core::Object #t2 = y = #0#0 as{Unchecked} core::Object in true) { + if(let final core::Object #t1 = let dynamic #t2 = #0#0 in #t2 == null ?{core::Object} #t2 as core::Object : #t2{core::Object} in let final core::Object #t3 = y = let dynamic #t4 = #0#0 in #t4 == null ?{core::Object} #t4 as core::Object : #t4{core::Object} in true) { { break #L1; } diff --git a/pkg/front_end/testcases/patterns/identical_map_keys.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/identical_map_keys.dart.weak.transformed.expect index 081c71eaa1a..222644199c2 100644 --- a/pkg/front_end/testcases/patterns/identical_map_keys.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/patterns/identical_map_keys.dart.weak.transformed.expect @@ -404,7 +404,7 @@ static method test() → dynamic { synthesized core::bool #0#2#isSet = false; synthesized core::int? #0#3; synthesized core::bool #0#3#isSet = false; - if(!((#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t74 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (let final core::int #t75 = a = (#0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool #t76 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::int?}) as{Unchecked} core::int in true) && (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t77 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (let final core::int #t78 = b = (#0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool #t79 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::int?}) as{Unchecked} core::int in true))) + if(!((#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t74 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (let final core::int #t75 = a = let core::int? #t76 = #0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool #t77 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::int?} in #t76 == null ?{core::int} #t76 as{Unchecked} core::int : #t76{core::int} in true) && (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t78 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (let final core::int #t79 = b = let core::int? #t80 = #0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool #t81 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::int?} in #t80 == null ?{core::int} #t80 as{Unchecked} core::int : #t80{core::int} in true))) throw{for-error-handling} new core::StateError::•("Pattern matching error"); } hoisted has-declared-initializer core::int c; @@ -415,7 +415,7 @@ static method test() → dynamic { synthesized core::bool #1#2#isSet = false; synthesized core::int? #1#3; synthesized core::bool #1#3#isSet = false; - if(!((#1#2#isSet ?{core::bool} #1#2{core::bool} : let final core::bool #t80 = #1#2#isSet = true in #1#2 = #1#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && (let final core::int #t81 = c = (#1#3#isSet ?{core::int?} #1#3{core::int?} : let final core::bool #t82 = #1#3#isSet = true in #1#3 = #1#0.{core::Map::[]}(#C2){(core::Object?) → core::int?}) as{Unchecked} core::int in true) && (#1#2#isSet ?{core::bool} #1#2{core::bool} : let final core::bool #t83 = #1#2#isSet = true in #1#2 = #1#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && (let final core::int #t84 = d = (#1#3#isSet ?{core::int?} #1#3{core::int?} : let final core::bool #t85 = #1#3#isSet = true in #1#3 = #1#0.{core::Map::[]}(#C2){(core::Object?) → core::int?}) as{Unchecked} core::int in true))) + if(!((#1#2#isSet ?{core::bool} #1#2{core::bool} : let final core::bool #t82 = #1#2#isSet = true in #1#2 = #1#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && (let final core::int #t83 = c = let core::int? #t84 = #1#3#isSet ?{core::int?} #1#3{core::int?} : let final core::bool #t85 = #1#3#isSet = true in #1#3 = #1#0.{core::Map::[]}(#C2){(core::Object?) → core::int?} in #t84 == null ?{core::int} #t84 as{Unchecked} core::int : #t84{core::int} in true) && (#1#2#isSet ?{core::bool} #1#2{core::bool} : let final core::bool #t86 = #1#2#isSet = true in #1#2 = #1#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && (let final core::int #t87 = d = let core::int? #t88 = #1#3#isSet ?{core::int?} #1#3{core::int?} : let final core::bool #t89 = #1#3#isSet = true in #1#3 = #1#0.{core::Map::[]}(#C2){(core::Object?) → core::int?} in #t88 == null ?{core::int} #t88 as{Unchecked} core::int : #t88{core::int} in true))) throw{for-error-handling} new core::StateError::•("Pattern matching error"); } final hoisted has-declared-initializer core::int a1; @@ -426,7 +426,7 @@ static method test() → dynamic { synthesized core::bool #2#2#isSet = false; synthesized core::int? #2#3; synthesized core::bool #2#3#isSet = false; - if(!((#2#2#isSet ?{core::bool} #2#2{core::bool} : let final core::bool #t86 = #2#2#isSet = true in #2#2 = #2#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (let final core::int #t87 = a1 = (#2#3#isSet ?{core::int?} #2#3{core::int?} : let final core::bool #t88 = #2#3#isSet = true in #2#3 = #2#0.{core::Map::[]}(#C1){(core::Object?) → core::int?}) as{Unchecked} core::int in true) && (#2#2#isSet ?{core::bool} #2#2{core::bool} : let final core::bool #t89 = #2#2#isSet = true in #2#2 = #2#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (let final core::int #t90 = b1 = (#2#3#isSet ?{core::int?} #2#3{core::int?} : let final core::bool #t91 = #2#3#isSet = true in #2#3 = #2#0.{core::Map::[]}(#C1){(core::Object?) → core::int?}) as{Unchecked} core::int in true))) + if(!((#2#2#isSet ?{core::bool} #2#2{core::bool} : let final core::bool #t90 = #2#2#isSet = true in #2#2 = #2#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (let final core::int #t91 = a1 = let core::int? #t92 = #2#3#isSet ?{core::int?} #2#3{core::int?} : let final core::bool #t93 = #2#3#isSet = true in #2#3 = #2#0.{core::Map::[]}(#C1){(core::Object?) → core::int?} in #t92 == null ?{core::int} #t92 as{Unchecked} core::int : #t92{core::int} in true) && (#2#2#isSet ?{core::bool} #2#2{core::bool} : let final core::bool #t94 = #2#2#isSet = true in #2#2 = #2#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (let final core::int #t95 = b1 = let core::int? #t96 = #2#3#isSet ?{core::int?} #2#3{core::int?} : let final core::bool #t97 = #2#3#isSet = true in #2#3 = #2#0.{core::Map::[]}(#C1){(core::Object?) → core::int?} in #t96 == null ?{core::int} #t96 as{Unchecked} core::int : #t96{core::int} in true))) throw{for-error-handling} new core::StateError::•("Pattern matching error"); } final hoisted has-declared-initializer core::int a2; @@ -437,7 +437,7 @@ static method test() → dynamic { synthesized core::bool #3#2#isSet = false; synthesized core::int? #3#3; synthesized core::bool #3#3#isSet = false; - if(!((#3#2#isSet ?{core::bool} #3#2{core::bool} : let final core::bool #t92 = #3#2#isSet = true in #3#2 = #3#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}) && (let final core::int #t93 = a2 = (#3#3#isSet ?{core::int?} #3#3{core::int?} : let final core::bool #t94 = #3#3#isSet = true in #3#3 = #3#0.{core::Map::[]}(#C4){(core::Object?) → core::int?}) as{Unchecked} core::int in true) && (#3#2#isSet ?{core::bool} #3#2{core::bool} : let final core::bool #t95 = #3#2#isSet = true in #3#2 = #3#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}) && (let final core::int #t96 = b2 = (#3#3#isSet ?{core::int?} #3#3{core::int?} : let final core::bool #t97 = #3#3#isSet = true in #3#3 = #3#0.{core::Map::[]}(#C4){(core::Object?) → core::int?}) as{Unchecked} core::int in true))) + if(!((#3#2#isSet ?{core::bool} #3#2{core::bool} : let final core::bool #t98 = #3#2#isSet = true in #3#2 = #3#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}) && (let final core::int #t99 = a2 = let core::int? #t100 = #3#3#isSet ?{core::int?} #3#3{core::int?} : let final core::bool #t101 = #3#3#isSet = true in #3#3 = #3#0.{core::Map::[]}(#C4){(core::Object?) → core::int?} in #t100 == null ?{core::int} #t100 as{Unchecked} core::int : #t100{core::int} in true) && (#3#2#isSet ?{core::bool} #3#2{core::bool} : let final core::bool #t102 = #3#2#isSet = true in #3#2 = #3#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}) && (let final core::int #t103 = b2 = let core::int? #t104 = #3#3#isSet ?{core::int?} #3#3{core::int?} : let final core::bool #t105 = #3#3#isSet = true in #3#3 = #3#0.{core::Map::[]}(#C4){(core::Object?) → core::int?} in #t104 == null ?{core::int} #t104 as{Unchecked} core::int : #t104{core::int} in true))) throw{for-error-handling} new core::StateError::•("Pattern matching error"); } final hoisted has-declared-initializer core::int a3; @@ -448,7 +448,7 @@ static method test() → dynamic { synthesized core::bool #4#2#isSet = false; synthesized core::int? #4#3; synthesized core::bool #4#3#isSet = false; - if(!((#4#2#isSet ?{core::bool} #4#2{core::bool} : let final core::bool #t98 = #4#2#isSet = true in #4#2 = #4#0.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && (let final core::int #t99 = a3 = (#4#3#isSet ?{core::int?} #4#3{core::int?} : let final core::bool #t100 = #4#3#isSet = true in #4#3 = #4#0.{core::Map::[]}(#C5){(core::Object?) → core::int?}) as{Unchecked} core::int in true) && (#4#2#isSet ?{core::bool} #4#2{core::bool} : let final core::bool #t101 = #4#2#isSet = true in #4#2 = #4#0.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && (let final core::int #t102 = b3 = (#4#3#isSet ?{core::int?} #4#3{core::int?} : let final core::bool #t103 = #4#3#isSet = true in #4#3 = #4#0.{core::Map::[]}(#C5){(core::Object?) → core::int?}) as{Unchecked} core::int in true))) + if(!((#4#2#isSet ?{core::bool} #4#2{core::bool} : let final core::bool #t106 = #4#2#isSet = true in #4#2 = #4#0.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && (let final core::int #t107 = a3 = let core::int? #t108 = #4#3#isSet ?{core::int?} #4#3{core::int?} : let final core::bool #t109 = #4#3#isSet = true in #4#3 = #4#0.{core::Map::[]}(#C5){(core::Object?) → core::int?} in #t108 == null ?{core::int} #t108 as{Unchecked} core::int : #t108{core::int} in true) && (#4#2#isSet ?{core::bool} #4#2{core::bool} : let final core::bool #t110 = #4#2#isSet = true in #4#2 = #4#0.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && (let final core::int #t111 = b3 = let core::int? #t112 = #4#3#isSet ?{core::int?} #4#3{core::int?} : let final core::bool #t113 = #4#3#isSet = true in #4#3 = #4#0.{core::Map::[]}(#C5){(core::Object?) → core::int?} in #t112 == null ?{core::int} #t112 as{Unchecked} core::int : #t112{core::int} in true))) throw{for-error-handling} new core::StateError::•("Pattern matching error"); } } diff --git a/pkg/front_end/testcases/patterns/integer_literal_inside_cast.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/integer_literal_inside_cast.dart.weak.transformed.expect index 2bc5772600b..e18431c736b 100644 --- a/pkg/front_end/testcases/patterns/integer_literal_inside_cast.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/patterns/integer_literal_inside_cast.dart.weak.transformed.expect @@ -7,7 +7,7 @@ static method test(dynamic x) → dynamic { { final synthesized dynamic #0#0 = x; { - if(let final core::Object #t1 = #0#0 as{Unchecked} core::Object in #C1 =={core::num::==}{(core::Object) → core::bool} #0#0 as{Unchecked} core::Object) { + if(let final core::Object #t1 = let dynamic #t2 = #0#0 in #t2 == null ?{core::Object} #t2 as core::Object : #t2{core::Object} in #C1 =={core::num::==}{(core::Object) → core::bool} (let dynamic #t3 = #0#0 in #t3 == null ?{core::Object} #t3 as core::Object : #t3{core::Object})) { { break #L1; } diff --git a/pkg/front_end/testcases/patterns/issue50886.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/issue50886.dart.weak.transformed.expect index ddc26f7047b..aaa702d1ea6 100644 --- a/pkg/front_end/testcases/patterns/issue50886.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/patterns/issue50886.dart.weak.transformed.expect @@ -6,7 +6,7 @@ static method test1() → dynamic { core::Map x = {1: 1}; { final synthesized core::Map #0#0 = x; - if(#0#0 is core::Map && #0#0{core::Map}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool} && #C1 =={core::num::==}{(core::Object) → core::bool} #0#0{core::Map}.{core::Map::[]}(#C1){(core::Object?) → core::int?} as{Unchecked} core::int) { + if(#0#0 is core::Map && #0#0{core::Map}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool} && #C1 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t1 = #0#0{core::Map}.{core::Map::[]}(#C1){(core::Object?) → core::int?} in #t1 == null ?{core::int} #t1 as{Unchecked} core::int : #t1{core::int})) { return 1; } else { @@ -18,7 +18,7 @@ static method test2() → dynamic { core::Map x = {1: 1, 2: 2}; { final synthesized core::Map #0#0 = x; - if(#0#0 is core::Map && #0#0{core::Map}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool} && #C1 =={core::num::==}{(core::Object) → core::bool} #0#0{core::Map}.{core::Map::[]}(#C1){(core::Object?) → core::int?} as{Unchecked} core::int) { + if(#0#0 is core::Map && #0#0{core::Map}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool} && #C1 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t2 = #0#0{core::Map}.{core::Map::[]}(#C1){(core::Object?) → core::int?} in #t2 == null ?{core::int} #t2 as{Unchecked} core::int : #t2{core::int})) { return 0; } else { diff --git a/pkg/front_end/testcases/patterns/issue51480.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/issue51480.dart.weak.transformed.expect index e89eeecd976..684059bf5df 100644 --- a/pkg/front_end/testcases/patterns/issue51480.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/patterns/issue51480.dart.weak.transformed.expect @@ -8,7 +8,7 @@ static method main() → dynamic { hoisted has-declared-initializer core::int v; { final synthesized core::Map #0#0 = {"key": 42}; - if(!(#0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool} && (let final core::int #t1 = v = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::int?} as{Unchecked} core::int in true))) + if(!(#0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool} && (let final core::int #t1 = v = let core::int? #t2 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::int?} in #t2 == null ?{core::int} #t2 as{Unchecked} core::int : #t2{core::int} in true))) throw{for-error-handling} new core::StateError::•("Pattern matching error"); } core::print(self::staticTypeOf(v)); diff --git a/pkg/front_end/testcases/patterns/issue51523.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/issue51523.dart.weak.transformed.expect index 6d4c961a4d7..32a09cab3e0 100644 --- a/pkg/front_end/testcases/patterns/issue51523.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/patterns/issue51523.dart.weak.transformed.expect @@ -11,7 +11,7 @@ static method main() → void { hoisted has-declared-initializer core::int a1; { final synthesized core::Map, core::int> #0#0 = , core::int>{#C1: 1}; - if(!(#0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool} && (let final core::int #t1 = a1 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::int?} as{Unchecked} core::int in true))) + if(!(#0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool} && (let final core::int #t1 = a1 = let core::int? #t2 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::int?} in #t2 == null ?{core::int} #t2 as{Unchecked} core::int : #t2{core::int} in true))) throw{for-error-handling} new core::StateError::•("Pattern matching error"); } } diff --git a/pkg/front_end/testcases/patterns/issue54115.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/issue54115.dart.weak.transformed.expect index 22774b86318..8bae2707fa4 100644 --- a/pkg/front_end/testcases/patterns/issue54115.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/patterns/issue54115.dart.weak.transformed.expect @@ -33,7 +33,7 @@ class C extends core::Object { @#C3 method promote() → void { if(!(this.{self::C::_x}{core::int?} == null)) - core::print(this.{self::C::_x}{core::int?} as{Unchecked} core::int); + core::print(let core::int? #t1 = this.{self::C::_x}{core::int?} in #t1 == null ?{core::int} #t1 as{Unchecked} core::int : #t1{core::int}); else core::print("null"); } diff --git a/pkg/front_end/testcases/patterns/issue55310.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/issue55310.dart.weak.transformed.expect index 9b249ca81f7..1f0c6a877c7 100644 --- a/pkg/front_end/testcases/patterns/issue55310.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/patterns/issue55310.dart.weak.transformed.expect @@ -49,27 +49,27 @@ static method foo(self::Wrapper wrapper) → void { { final hoisted self::Other other; if(#0#0 is self::WrapperA && (#0#3#isSet ?{self::Other?} #0#3{self::Other?} : let final core::bool #t2 = #0#3#isSet = true in #0#3 = #0#0{self::WrapperA}.{self::WrapperA::inner}{self::Inner}.{self::Inner::other}{self::Other?}) is self::Other) { - other = (#0#3#isSet ?{self::Other?} #0#3{self::Other?} : let final core::bool #t3 = #0#3#isSet = true in #0#3 = #0#0{self::WrapperA}.{self::WrapperA::inner}{self::Inner}.{self::Inner::other}{self::Other?}) as{Unchecked} self::Other; + other = let self::Other? #t3 = #0#3#isSet ?{self::Other?} #0#3{self::Other?} : let final core::bool #t4 = #0#3#isSet = true in #0#3 = #0#0{self::WrapperA}.{self::WrapperA::inner}{self::Inner}.{self::Inner::other}{self::Other?} in #t3 == null ?{self::Other} #t3 as{Unchecked} self::Other : #t3{self::Other}; #t1 = other.{self::Other::text}{core::String}; break #L1; } } { - if(#0#0 is self::WrapperA && (#0#5#isSet ?{core::bool} #0#5{core::bool} : let final core::bool #t4 = #0#5#isSet = true in #0#5 = (#0#3#isSet ?{self::Other?} #0#3{self::Other?} : let final core::bool #t5 = #0#3#isSet = true in #0#3 = #0#0{self::WrapperA}.{self::WrapperA::inner}{self::Inner}.{self::Inner::other}{self::Other?}) == null)) { + if(#0#0 is self::WrapperA && (#0#5#isSet ?{core::bool} #0#5{core::bool} : let final core::bool #t5 = #0#5#isSet = true in #0#5 = (#0#3#isSet ?{self::Other?} #0#3{self::Other?} : let final core::bool #t6 = #0#3#isSet = true in #0#3 = #0#0{self::WrapperA}.{self::WrapperA::inner}{self::Inner}.{self::Inner::other}{self::Other?}) == null)) { #t1 = "no other"; break #L1; } } { final hoisted self::Other other; - if(#0#0 is self::WrapperB && (#0#3#isSet ?{self::Other?} #0#3{self::Other?} : let final core::bool #t6 = #0#3#isSet = true in #0#3 = #0#0{self::WrapperB}.{self::WrapperB::inner}{self::Inner}.{self::Inner::other}{self::Other?}) is self::Other) { - other = (#0#3#isSet ?{self::Other?} #0#3{self::Other?} : let final core::bool #t7 = #0#3#isSet = true in #0#3 = #0#0{self::WrapperB}.{self::WrapperB::inner}{self::Inner}.{self::Inner::other}{self::Other?}) as{Unchecked} self::Other; + if(#0#0 is self::WrapperB && (#0#3#isSet ?{self::Other?} #0#3{self::Other?} : let final core::bool #t7 = #0#3#isSet = true in #0#3 = #0#0{self::WrapperB}.{self::WrapperB::inner}{self::Inner}.{self::Inner::other}{self::Other?}) is self::Other) { + other = let self::Other? #t8 = #0#3#isSet ?{self::Other?} #0#3{self::Other?} : let final core::bool #t9 = #0#3#isSet = true in #0#3 = #0#0{self::WrapperB}.{self::WrapperB::inner}{self::Inner}.{self::Inner::other}{self::Other?} in #t8 == null ?{self::Other} #t8 as{Unchecked} self::Other : #t8{self::Other}; #t1 = other.{self::Other::text}{core::String}; break #L1; } } { - if(#0#0 is self::WrapperB && (#0#5#isSet ?{core::bool} #0#5{core::bool} : let final core::bool #t8 = #0#5#isSet = true in #0#5 = (#0#3#isSet ?{self::Other?} #0#3{self::Other?} : let final core::bool #t9 = #0#3#isSet = true in #0#3 = #0#0{self::WrapperB}.{self::WrapperB::inner}{self::Inner}.{self::Inner::other}{self::Other?}) == null)) { + if(#0#0 is self::WrapperB && (#0#5#isSet ?{core::bool} #0#5{core::bool} : let final core::bool #t10 = #0#5#isSet = true in #0#5 = (#0#3#isSet ?{self::Other?} #0#3{self::Other?} : let final core::bool #t11 = #0#3#isSet = true in #0#3 = #0#0{self::WrapperB}.{self::WrapperB::inner}{self::Inner}.{self::Inner::other}{self::Other?}) == null)) { #t1 = "no other"; break #L1; } diff --git a/pkg/front_end/testcases/patterns/list_pattern_inside_cast.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/list_pattern_inside_cast.dart.weak.transformed.expect index a27a12ddc9d..379cd08e296 100644 --- a/pkg/front_end/testcases/patterns/list_pattern_inside_cast.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/patterns/list_pattern_inside_cast.dart.weak.transformed.expect @@ -7,7 +7,7 @@ static method test(dynamic x) → dynamic { { final synthesized dynamic #0#0 = x; { - if(let final core::Object #t1 = #0#0 as{Unchecked} core::Object in (#0#0 as{Unchecked} core::Object) is core::List && ((#0#0 as{Unchecked} core::Object) as{Unchecked} core::List).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && #C1 =={core::num::==}{(core::Object) → core::bool} ((#0#0 as{Unchecked} core::Object) as{Unchecked} core::List).{core::List::[]}(0){(core::int) → core::Object?}) { + if(let final core::Object #t1 = let dynamic #t2 = #0#0 in #t2 == null ?{core::Object} #t2 as core::Object : #t2{core::Object} in (let dynamic #t3 = #0#0 in #t3 == null ?{core::Object} #t3 as core::Object : #t3{core::Object}) is core::List && ((let dynamic #t4 = #0#0 in #t4 == null ?{core::Object} #t4 as core::Object : #t4{core::Object}) as{Unchecked} core::List).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && #C1 =={core::num::==}{(core::Object) → core::bool} ((let dynamic #t5 = #0#0 in #t5 == null ?{core::Object} #t5 as core::Object : #t5{core::Object}) as{Unchecked} core::List).{core::List::[]}(0){(core::int) → core::Object?}) { { break #L1; } diff --git a/pkg/front_end/testcases/patterns/list_pattern_inside_if_case.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/list_pattern_inside_if_case.dart.weak.transformed.expect index d6481257288..baa989a5abd 100644 --- a/pkg/front_end/testcases/patterns/list_pattern_inside_if_case.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/patterns/list_pattern_inside_if_case.dart.weak.transformed.expect @@ -16,7 +16,7 @@ static method test1(dynamic x) → dynamic { { hoisted core::String? a; hoisted core::String b; - if(#1#0 is core::List && #1#0{core::List}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final core::String? #t1 = a = #1#0{core::List}.{core::List::[]}(0){(core::int) → core::String?} in true) && (!((#1#7#isSet ?{core::String?} #1#7{core::String?} : let final core::bool #t2 = #1#7#isSet = true in #1#7 = #1#0{core::List}.{core::List::[]}(1){(core::int) → core::String?}) == null) && (((#1#7#isSet ?{core::String?} #1#7{core::String?} : let final core::bool #t3 = #1#7#isSet = true in #1#7 = #1#0{core::List}.{core::List::[]}(1){(core::int) → core::String?}) as{Unchecked} core::String) is core::String && (let final core::String #t4 = b = (#1#7#isSet ?{core::String?} #1#7{core::String?} : let final core::bool #t5 = #1#7#isSet = true in #1#7 = #1#0{core::List}.{core::List::[]}(1){(core::int) → core::String?}) as{Unchecked} core::String in true))) && #1#0{core::List}.{core::List::[]}(2){(core::int) → core::String?} =={core::String::==}{(core::Object) → core::bool} #C4) { + if(#1#0 is core::List && #1#0{core::List}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final core::String? #t1 = a = #1#0{core::List}.{core::List::[]}(0){(core::int) → core::String?} in true) && (!((#1#7#isSet ?{core::String?} #1#7{core::String?} : let final core::bool #t2 = #1#7#isSet = true in #1#7 = #1#0{core::List}.{core::List::[]}(1){(core::int) → core::String?}) == null) && ((let core::String? #t3 = #1#7#isSet ?{core::String?} #1#7{core::String?} : let final core::bool #t4 = #1#7#isSet = true in #1#7 = #1#0{core::List}.{core::List::[]}(1){(core::int) → core::String?} in #t3 == null ?{core::String} #t3 as{Unchecked} core::String : #t3{core::String}) is core::String && (let final core::String #t5 = b = let core::String? #t6 = #1#7#isSet ?{core::String?} #1#7{core::String?} : let final core::bool #t7 = #1#7#isSet = true in #1#7 = #1#0{core::List}.{core::List::[]}(1){(core::int) → core::String?} in #t6 == null ?{core::String} #t6 as{Unchecked} core::String : #t6{core::String} in true))) && #1#0{core::List}.{core::List::[]}(2){(core::int) → core::String?} =={core::String::==}{(core::Object) → core::bool} #C4) { return 1; } } @@ -30,7 +30,7 @@ static method test1(dynamic x) → dynamic { { hoisted core::String a; hoisted core::String? b; - if(#2#0 is core::List && #2#0{core::List}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3 && ((#2#6#isSet ?{dynamic} #2#6{dynamic} : let final core::bool #t6 = #2#6#isSet = true in #2#6 = #2#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) is core::List && ((#2#6#isSet ?{dynamic} #2#6{dynamic} : let final core::bool #t7 = #2#6#isSet = true in #2#6 = #2#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3 && (!((#2#11#isSet ?{core::String?} #2#11{core::String?} : let final core::bool #t8 = #2#11#isSet = true in #2#11 = ((#2#6#isSet ?{dynamic} #2#6{dynamic} : let final core::bool #t9 = #2#6#isSet = true in #2#6 = #2#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List).{core::List::[]}(0){(core::int) → core::String?}) == null) && (let final core::String #t10 = a = (#2#11#isSet ?{core::String?} #2#11{core::String?} : let final core::bool #t11 = #2#11#isSet = true in #2#11 = ((#2#6#isSet ?{dynamic} #2#6{dynamic} : let final core::bool #t12 = #2#6#isSet = true in #2#6 = #2#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List).{core::List::[]}(0){(core::int) → core::String?}) as{Unchecked} core::String in true)) && (let final core::String? #t13 = b = ((#2#6#isSet ?{dynamic} #2#6{dynamic} : let final core::bool #t14 = #2#6#isSet = true in #2#6 = #2#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List).{core::List::[]}(1){(core::int) → core::String?} in true)) && #C5 =={core::num::==}{(core::Object) → core::bool} #2#0{core::List}.{core::List::[]}(1){(core::int) → dynamic}) { + if(#2#0 is core::List && #2#0{core::List}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3 && ((#2#6#isSet ?{dynamic} #2#6{dynamic} : let final core::bool #t8 = #2#6#isSet = true in #2#6 = #2#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) is core::List && ((#2#6#isSet ?{dynamic} #2#6{dynamic} : let final core::bool #t9 = #2#6#isSet = true in #2#6 = #2#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3 && (!((#2#11#isSet ?{core::String?} #2#11{core::String?} : let final core::bool #t10 = #2#11#isSet = true in #2#11 = ((#2#6#isSet ?{dynamic} #2#6{dynamic} : let final core::bool #t11 = #2#6#isSet = true in #2#6 = #2#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List).{core::List::[]}(0){(core::int) → core::String?}) == null) && (let final core::String #t12 = a = let core::String? #t13 = #2#11#isSet ?{core::String?} #2#11{core::String?} : let final core::bool #t14 = #2#11#isSet = true in #2#11 = ((#2#6#isSet ?{dynamic} #2#6{dynamic} : let final core::bool #t15 = #2#6#isSet = true in #2#6 = #2#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List).{core::List::[]}(0){(core::int) → core::String?} in #t13 == null ?{core::String} #t13 as{Unchecked} core::String : #t13{core::String} in true)) && (let final core::String? #t16 = b = ((#2#6#isSet ?{dynamic} #2#6{dynamic} : let final core::bool #t17 = #2#6#isSet = true in #2#6 = #2#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List).{core::List::[]}(1){(core::int) → core::String?} in true)) && #C5 =={core::num::==}{(core::Object) → core::bool} #2#0{core::List}.{core::List::[]}(1){(core::int) → dynamic}) { return 2; } } @@ -45,8 +45,8 @@ static method test1(dynamic x) → dynamic { synthesized core::bool #3#16#isSet = false; { hoisted dynamic a; - if(#3#0 is core::List && #3#0{core::List}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && ((#3#6#isSet ?{dynamic} #3#6{dynamic} : let final core::bool #t15 = #3#6#isSet = true in #3#6 = #3#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) is core::List && ((#3#6#isSet ?{dynamic} #3#6{dynamic} : let final core::bool #t16 = #3#6#isSet = true in #3#6 = #3#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && ((#3#11#isSet ?{dynamic} #3#11{dynamic} : let final core::bool #t17 = #3#11#isSet = true in #3#11 = ((#3#6#isSet ?{dynamic} #3#6{dynamic} : let final core::bool #t18 = #3#6#isSet = true in #3#6 = #3#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List).{core::List::[]}(0){(core::int) → dynamic}) is core::List && ((#3#11#isSet ?{dynamic} #3#11{dynamic} : let final core::bool #t19 = #3#11#isSet = true in #3#11 = ((#3#6#isSet ?{dynamic} #3#6{dynamic} : let final core::bool #t20 = #3#6#isSet = true in #3#6 = #3#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List).{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && !((#3#16#isSet ?{dynamic} #3#16{dynamic} : let final core::bool #t21 = #3#16#isSet = true in #3#16 = ((#3#11#isSet ?{dynamic} #3#11{dynamic} : let final core::bool #t22 = #3#11#isSet = true in #3#11 = ((#3#6#isSet ?{dynamic} #3#6{dynamic} : let final core::bool #t23 = #3#6#isSet = true in #3#6 = #3#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List).{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List).{core::List::[]}(0){(core::int) → dynamic}) == null)))) { - a = #3#16#isSet ?{dynamic} #3#16{dynamic} : let final core::bool #t24 = #3#16#isSet = true in #3#16 = ((#3#11#isSet ?{dynamic} #3#11{dynamic} : let final core::bool #t25 = #3#11#isSet = true in #3#11 = ((#3#6#isSet ?{dynamic} #3#6{dynamic} : let final core::bool #t26 = #3#6#isSet = true in #3#6 = #3#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List).{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List).{core::List::[]}(0){(core::int) → dynamic}; + if(#3#0 is core::List && #3#0{core::List}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && ((#3#6#isSet ?{dynamic} #3#6{dynamic} : let final core::bool #t18 = #3#6#isSet = true in #3#6 = #3#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) is core::List && ((#3#6#isSet ?{dynamic} #3#6{dynamic} : let final core::bool #t19 = #3#6#isSet = true in #3#6 = #3#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && ((#3#11#isSet ?{dynamic} #3#11{dynamic} : let final core::bool #t20 = #3#11#isSet = true in #3#11 = ((#3#6#isSet ?{dynamic} #3#6{dynamic} : let final core::bool #t21 = #3#6#isSet = true in #3#6 = #3#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List).{core::List::[]}(0){(core::int) → dynamic}) is core::List && ((#3#11#isSet ?{dynamic} #3#11{dynamic} : let final core::bool #t22 = #3#11#isSet = true in #3#11 = ((#3#6#isSet ?{dynamic} #3#6{dynamic} : let final core::bool #t23 = #3#6#isSet = true in #3#6 = #3#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List).{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && !((#3#16#isSet ?{dynamic} #3#16{dynamic} : let final core::bool #t24 = #3#16#isSet = true in #3#16 = ((#3#11#isSet ?{dynamic} #3#11{dynamic} : let final core::bool #t25 = #3#11#isSet = true in #3#11 = ((#3#6#isSet ?{dynamic} #3#6{dynamic} : let final core::bool #t26 = #3#6#isSet = true in #3#6 = #3#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List).{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List).{core::List::[]}(0){(core::int) → dynamic}) == null)))) { + a = #3#16#isSet ?{dynamic} #3#16{dynamic} : let final core::bool #t27 = #3#16#isSet = true in #3#16 = ((#3#11#isSet ?{dynamic} #3#11{dynamic} : let final core::bool #t28 = #3#11#isSet = true in #3#11 = ((#3#6#isSet ?{dynamic} #3#6{dynamic} : let final core::bool #t29 = #3#6#isSet = true in #3#6 = #3#0{core::List}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List).{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List).{core::List::[]}(0){(core::int) → dynamic}; { return 3; } @@ -74,7 +74,7 @@ static method test2(core::List x) → dynamic { { hoisted core::String? a; hoisted core::String b; - if(#1#0 is core::List && #1#0{core::List}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final core::String? #t27 = a = #1#0{core::List}.{core::List::[]}(0){(core::int) → core::String?} in true) && (!((#1#7#isSet ?{core::String?} #1#7{core::String?} : let final core::bool #t28 = #1#7#isSet = true in #1#7 = #1#0{core::List}.{core::List::[]}(1){(core::int) → core::String?}) == null) && (((#1#7#isSet ?{core::String?} #1#7{core::String?} : let final core::bool #t29 = #1#7#isSet = true in #1#7 = #1#0{core::List}.{core::List::[]}(1){(core::int) → core::String?}) as{Unchecked} core::String) is core::String && (let final core::String #t30 = b = (#1#7#isSet ?{core::String?} #1#7{core::String?} : let final core::bool #t31 = #1#7#isSet = true in #1#7 = #1#0{core::List}.{core::List::[]}(1){(core::int) → core::String?}) as{Unchecked} core::String in true))) && #1#0{core::List}.{core::List::[]}(2){(core::int) → core::String?} =={core::String::==}{(core::Object) → core::bool} #C4) { + if(#1#0 is core::List && #1#0{core::List}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final core::String? #t30 = a = #1#0{core::List}.{core::List::[]}(0){(core::int) → core::String?} in true) && (!((#1#7#isSet ?{core::String?} #1#7{core::String?} : let final core::bool #t31 = #1#7#isSet = true in #1#7 = #1#0{core::List}.{core::List::[]}(1){(core::int) → core::String?}) == null) && ((let core::String? #t32 = #1#7#isSet ?{core::String?} #1#7{core::String?} : let final core::bool #t33 = #1#7#isSet = true in #1#7 = #1#0{core::List}.{core::List::[]}(1){(core::int) → core::String?} in #t32 == null ?{core::String} #t32 as{Unchecked} core::String : #t32{core::String}) is core::String && (let final core::String #t34 = b = let core::String? #t35 = #1#7#isSet ?{core::String?} #1#7{core::String?} : let final core::bool #t36 = #1#7#isSet = true in #1#7 = #1#0{core::List}.{core::List::[]}(1){(core::int) → core::String?} in #t35 == null ?{core::String} #t35 as{Unchecked} core::String : #t35{core::String} in true))) && #1#0{core::List}.{core::List::[]}(2){(core::int) → core::String?} =={core::String::==}{(core::Object) → core::bool} #C4) { return 1; } } @@ -88,7 +88,7 @@ static method test2(core::List x) → dynamic { { hoisted core::String a; hoisted core::String? b; - if(#2#0.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3 && ((#2#4#isSet ?{core::Object?} #2#4{core::Object?} : let final core::bool #t32 = #2#4#isSet = true in #2#4 = #2#0.{core::List::[]}(0){(core::int) → core::Object?}) is core::List && ((#2#4#isSet ?{core::Object?} #2#4{core::Object?} : let final core::bool #t33 = #2#4#isSet = true in #2#4 = #2#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3 && (!((#2#9#isSet ?{core::String?} #2#9{core::String?} : let final core::bool #t34 = #2#9#isSet = true in #2#9 = ((#2#4#isSet ?{core::Object?} #2#4{core::Object?} : let final core::bool #t35 = #2#4#isSet = true in #2#4 = #2#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List).{core::List::[]}(0){(core::int) → core::String?}) == null) && (let final core::String #t36 = a = (#2#9#isSet ?{core::String?} #2#9{core::String?} : let final core::bool #t37 = #2#9#isSet = true in #2#9 = ((#2#4#isSet ?{core::Object?} #2#4{core::Object?} : let final core::bool #t38 = #2#4#isSet = true in #2#4 = #2#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List).{core::List::[]}(0){(core::int) → core::String?}) as{Unchecked} core::String in true)) && (let final core::String? #t39 = b = ((#2#4#isSet ?{core::Object?} #2#4{core::Object?} : let final core::bool #t40 = #2#4#isSet = true in #2#4 = #2#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List).{core::List::[]}(1){(core::int) → core::String?} in true)) && #C5 =={core::num::==}{(core::Object) → core::bool} #2#0.{core::List::[]}(1){(core::int) → core::Object?}) { + if(#2#0.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3 && ((#2#4#isSet ?{core::Object?} #2#4{core::Object?} : let final core::bool #t37 = #2#4#isSet = true in #2#4 = #2#0.{core::List::[]}(0){(core::int) → core::Object?}) is core::List && ((#2#4#isSet ?{core::Object?} #2#4{core::Object?} : let final core::bool #t38 = #2#4#isSet = true in #2#4 = #2#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3 && (!((#2#9#isSet ?{core::String?} #2#9{core::String?} : let final core::bool #t39 = #2#9#isSet = true in #2#9 = ((#2#4#isSet ?{core::Object?} #2#4{core::Object?} : let final core::bool #t40 = #2#4#isSet = true in #2#4 = #2#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List).{core::List::[]}(0){(core::int) → core::String?}) == null) && (let final core::String #t41 = a = let core::String? #t42 = #2#9#isSet ?{core::String?} #2#9{core::String?} : let final core::bool #t43 = #2#9#isSet = true in #2#9 = ((#2#4#isSet ?{core::Object?} #2#4{core::Object?} : let final core::bool #t44 = #2#4#isSet = true in #2#4 = #2#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List).{core::List::[]}(0){(core::int) → core::String?} in #t42 == null ?{core::String} #t42 as{Unchecked} core::String : #t42{core::String} in true)) && (let final core::String? #t45 = b = ((#2#4#isSet ?{core::Object?} #2#4{core::Object?} : let final core::bool #t46 = #2#4#isSet = true in #2#4 = #2#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List).{core::List::[]}(1){(core::int) → core::String?} in true)) && #C5 =={core::num::==}{(core::Object) → core::bool} #2#0.{core::List::[]}(1){(core::int) → core::Object?}) { return 2; } } @@ -103,8 +103,8 @@ static method test2(core::List x) → dynamic { synthesized core::bool #3#14#isSet = false; { hoisted core::Object a; - if(#3#0.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && ((#3#4#isSet ?{core::Object?} #3#4{core::Object?} : let final core::bool #t41 = #3#4#isSet = true in #3#4 = #3#0.{core::List::[]}(0){(core::int) → core::Object?}) is core::List && ((#3#4#isSet ?{core::Object?} #3#4{core::Object?} : let final core::bool #t42 = #3#4#isSet = true in #3#4 = #3#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && ((#3#9#isSet ?{core::Object?} #3#9{core::Object?} : let final core::bool #t43 = #3#9#isSet = true in #3#9 = ((#3#4#isSet ?{core::Object?} #3#4{core::Object?} : let final core::bool #t44 = #3#4#isSet = true in #3#4 = #3#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List).{core::List::[]}(0){(core::int) → core::Object?}) is core::List && ((#3#9#isSet ?{core::Object?} #3#9{core::Object?} : let final core::bool #t45 = #3#9#isSet = true in #3#9 = ((#3#4#isSet ?{core::Object?} #3#4{core::Object?} : let final core::bool #t46 = #3#4#isSet = true in #3#4 = #3#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List).{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && !((#3#14#isSet ?{core::Object?} #3#14{core::Object?} : let final core::bool #t47 = #3#14#isSet = true in #3#14 = ((#3#9#isSet ?{core::Object?} #3#9{core::Object?} : let final core::bool #t48 = #3#9#isSet = true in #3#9 = ((#3#4#isSet ?{core::Object?} #3#4{core::Object?} : let final core::bool #t49 = #3#4#isSet = true in #3#4 = #3#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List).{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List).{core::List::[]}(0){(core::int) → core::Object?}) == null)))) { - a = (#3#14#isSet ?{core::Object?} #3#14{core::Object?} : let final core::bool #t50 = #3#14#isSet = true in #3#14 = ((#3#9#isSet ?{core::Object?} #3#9{core::Object?} : let final core::bool #t51 = #3#9#isSet = true in #3#9 = ((#3#4#isSet ?{core::Object?} #3#4{core::Object?} : let final core::bool #t52 = #3#4#isSet = true in #3#4 = #3#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List).{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List).{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::Object; + if(#3#0.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && ((#3#4#isSet ?{core::Object?} #3#4{core::Object?} : let final core::bool #t47 = #3#4#isSet = true in #3#4 = #3#0.{core::List::[]}(0){(core::int) → core::Object?}) is core::List && ((#3#4#isSet ?{core::Object?} #3#4{core::Object?} : let final core::bool #t48 = #3#4#isSet = true in #3#4 = #3#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && ((#3#9#isSet ?{core::Object?} #3#9{core::Object?} : let final core::bool #t49 = #3#9#isSet = true in #3#9 = ((#3#4#isSet ?{core::Object?} #3#4{core::Object?} : let final core::bool #t50 = #3#4#isSet = true in #3#4 = #3#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List).{core::List::[]}(0){(core::int) → core::Object?}) is core::List && ((#3#9#isSet ?{core::Object?} #3#9{core::Object?} : let final core::bool #t51 = #3#9#isSet = true in #3#9 = ((#3#4#isSet ?{core::Object?} #3#4{core::Object?} : let final core::bool #t52 = #3#4#isSet = true in #3#4 = #3#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List).{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && !((#3#14#isSet ?{core::Object?} #3#14{core::Object?} : let final core::bool #t53 = #3#14#isSet = true in #3#14 = ((#3#9#isSet ?{core::Object?} #3#9{core::Object?} : let final core::bool #t54 = #3#9#isSet = true in #3#9 = ((#3#4#isSet ?{core::Object?} #3#4{core::Object?} : let final core::bool #t55 = #3#4#isSet = true in #3#4 = #3#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List).{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List).{core::List::[]}(0){(core::int) → core::Object?}) == null)))) { + a = let core::Object? #t56 = #3#14#isSet ?{core::Object?} #3#14{core::Object?} : let final core::bool #t57 = #3#14#isSet = true in #3#14 = ((#3#9#isSet ?{core::Object?} #3#9{core::Object?} : let final core::bool #t58 = #3#9#isSet = true in #3#9 = ((#3#4#isSet ?{core::Object?} #3#4{core::Object?} : let final core::bool #t59 = #3#4#isSet = true in #3#4 = #3#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List).{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List).{core::List::[]}(0){(core::int) → core::Object?} in #t56 == null ?{core::Object} #t56 as{Unchecked} core::Object : #t56{core::Object}; { return 3; } diff --git a/pkg/front_end/testcases/patterns/map_lookup.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/map_lookup.dart.weak.transformed.expect index ce9d4a7fc42..2e07a05ed66 100644 --- a/pkg/front_end/testcases/patterns/map_lookup.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/patterns/map_lookup.dart.weak.transformed.expect @@ -68,14 +68,14 @@ static method test1(core::Object o) → core::String { synthesized core::int? #0#9; synthesized core::bool #0#9#isSet = false; { - if(#0#0 is core::Map && (#0#3#isSet ?{core::bool} #0#3{core::bool} : let final core::bool #t1 = #0#3#isSet = true in #0#3 = #0#0{core::Map}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && (#0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool #t2 = #0#6#isSet = true in #0#6 = #C6 =={core::num::==}{(core::Object) → core::bool} #0#0{core::Map}.{core::Map::[]}(#C5){(core::Object?) → core::int?} as{Unchecked} core::int) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool #t3 = #0#8#isSet = true in #0#8 = #0#0{core::Map}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{core::int?} #0#9{core::int?} : let final core::bool #t4 = #0#9#isSet = true in #0#9 = #0#0{core::Map}.{core::Map::[]}(#C7){(core::Object?) → core::int?}) as{Unchecked} core::int) { + if(#0#0 is core::Map && (#0#3#isSet ?{core::bool} #0#3{core::bool} : let final core::bool #t1 = #0#3#isSet = true in #0#3 = #0#0{core::Map}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && (#0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool #t2 = #0#6#isSet = true in #0#6 = #C6 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t3 = #0#0{core::Map}.{core::Map::[]}(#C5){(core::Object?) → core::int?} in #t3 == null ?{core::int} #t3 as{Unchecked} core::int : #t3{core::int})) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool #t4 = #0#8#isSet = true in #0#8 = #0#0{core::Map}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool}) && #C8 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t5 = #0#9#isSet ?{core::int?} #0#9{core::int?} : let final core::bool #t6 = #0#9#isSet = true in #0#9 = #0#0{core::Map}.{core::Map::[]}(#C7){(core::Object?) → core::int?} in #t5 == null ?{core::int} #t5 as{Unchecked} core::int : #t5{core::int})) { { return "match-2"; } } } { - if(#0#0 is core::Map && (#0#3#isSet ?{core::bool} #0#3{core::bool} : let final core::bool #t5 = #0#3#isSet = true in #0#3 = #0#0{core::Map}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && (#0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool #t6 = #0#6#isSet = true in #0#6 = #C6 =={core::num::==}{(core::Object) → core::bool} #0#0{core::Map}.{core::Map::[]}(#C5){(core::Object?) → core::int?} as{Unchecked} core::int) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool #t7 = #0#8#isSet = true in #0#8 = #0#0{core::Map}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool}) && #C9 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{core::int?} #0#9{core::int?} : let final core::bool #t8 = #0#9#isSet = true in #0#9 = #0#0{core::Map}.{core::Map::[]}(#C7){(core::Object?) → core::int?}) as{Unchecked} core::int) { + if(#0#0 is core::Map && (#0#3#isSet ?{core::bool} #0#3{core::bool} : let final core::bool #t7 = #0#3#isSet = true in #0#3 = #0#0{core::Map}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && (#0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool #t8 = #0#6#isSet = true in #0#6 = #C6 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t9 = #0#0{core::Map}.{core::Map::[]}(#C5){(core::Object?) → core::int?} in #t9 == null ?{core::int} #t9 as{Unchecked} core::int : #t9{core::int})) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool #t10 = #0#8#isSet = true in #0#8 = #0#0{core::Map}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool}) && #C9 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t11 = #0#9#isSet ?{core::int?} #0#9{core::int?} : let final core::bool #t12 = #0#9#isSet = true in #0#9 = #0#0{core::Map}.{core::Map::[]}(#C7){(core::Object?) → core::int?} in #t11 == null ?{core::int} #t11 as{Unchecked} core::int : #t11{core::int})) { { return "match-3"; } @@ -92,7 +92,7 @@ static method test1(core::Object o) → core::String { } static method test2(core::Object o) → core::String return block { - core::String #t9; + core::String #t13; final synthesized core::Object #0#0 = o; synthesized core::bool #0#3; synthesized core::bool #0#3#isSet = false; @@ -105,26 +105,26 @@ static method test2(core::Object o) → core::String #L2: { { - if(#0#0 is core::Map && (#0#3#isSet ?{core::bool} #0#3{core::bool} : let final core::bool #t10 = #0#3#isSet = true in #0#3 = #0#0{core::Map}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && (#0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool #t11 = #0#6#isSet = true in #0#6 = #C6 =={core::num::==}{(core::Object) → core::bool} #0#0{core::Map}.{core::Map::[]}(#C5){(core::Object?) → core::int?} as{Unchecked} core::int) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool #t12 = #0#8#isSet = true in #0#8 = #0#0{core::Map}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{core::int?} #0#9{core::int?} : let final core::bool #t13 = #0#9#isSet = true in #0#9 = #0#0{core::Map}.{core::Map::[]}(#C7){(core::Object?) → core::int?}) as{Unchecked} core::int) { - #t9 = "match-2"; + if(#0#0 is core::Map && (#0#3#isSet ?{core::bool} #0#3{core::bool} : let final core::bool #t14 = #0#3#isSet = true in #0#3 = #0#0{core::Map}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && (#0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool #t15 = #0#6#isSet = true in #0#6 = #C6 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t16 = #0#0{core::Map}.{core::Map::[]}(#C5){(core::Object?) → core::int?} in #t16 == null ?{core::int} #t16 as{Unchecked} core::int : #t16{core::int})) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool #t17 = #0#8#isSet = true in #0#8 = #0#0{core::Map}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool}) && #C8 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t18 = #0#9#isSet ?{core::int?} #0#9{core::int?} : let final core::bool #t19 = #0#9#isSet = true in #0#9 = #0#0{core::Map}.{core::Map::[]}(#C7){(core::Object?) → core::int?} in #t18 == null ?{core::int} #t18 as{Unchecked} core::int : #t18{core::int})) { + #t13 = "match-2"; break #L2; } } { - if(#0#0 is core::Map && (#0#3#isSet ?{core::bool} #0#3{core::bool} : let final core::bool #t14 = #0#3#isSet = true in #0#3 = #0#0{core::Map}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && (#0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool #t15 = #0#6#isSet = true in #0#6 = #C6 =={core::num::==}{(core::Object) → core::bool} #0#0{core::Map}.{core::Map::[]}(#C5){(core::Object?) → core::int?} as{Unchecked} core::int) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool #t16 = #0#8#isSet = true in #0#8 = #0#0{core::Map}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool}) && #C9 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{core::int?} #0#9{core::int?} : let final core::bool #t17 = #0#9#isSet = true in #0#9 = #0#0{core::Map}.{core::Map::[]}(#C7){(core::Object?) → core::int?}) as{Unchecked} core::int) { - #t9 = "match-3"; + if(#0#0 is core::Map && (#0#3#isSet ?{core::bool} #0#3{core::bool} : let final core::bool #t20 = #0#3#isSet = true in #0#3 = #0#0{core::Map}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && (#0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool #t21 = #0#6#isSet = true in #0#6 = #C6 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t22 = #0#0{core::Map}.{core::Map::[]}(#C5){(core::Object?) → core::int?} in #t22 == null ?{core::int} #t22 as{Unchecked} core::int : #t22{core::int})) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool #t23 = #0#8#isSet = true in #0#8 = #0#0{core::Map}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool}) && #C9 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t24 = #0#9#isSet ?{core::int?} #0#9{core::int?} : let final core::bool #t25 = #0#9#isSet = true in #0#9 = #0#0{core::Map}.{core::Map::[]}(#C7){(core::Object?) → core::int?} in #t24 == null ?{core::int} #t24 as{Unchecked} core::int : #t24{core::int})) { + #t13 = "match-3"; break #L2; } } { if(true) { - #t9 = "no match"; + #t13 = "no match"; break #L2; } } throw{for-error-handling} new _in::ReachabilityError::•("`null` encountered as case in a switch expression with a non-nullable type."); } - } =>#t9; + } =>#t13; static method main() → dynamic { final self::MyMap map = new self::MyMap::•({"key1": 1, "key2": 2}); self::expect("match-3", self::test1(map)); @@ -137,7 +137,7 @@ static method main() → dynamic { hoisted has-declared-initializer core::int x2; { final synthesized self::MyMap #0#0 = map; - if(!(#0#0.{self::MyMap::containsKey}(#C5){(core::Object?) → core::bool} && (let final core::int #t18 = x1 = #0#0.{self::MyMap::[]}(#C5){(core::Object?) → core::int?} as{Unchecked} core::int in true) && #0#0.{self::MyMap::containsKey}(#C7){(core::Object?) → core::bool} && (let final core::int #t19 = x2 = #0#0.{self::MyMap::[]}(#C7){(core::Object?) → core::int?} as{Unchecked} core::int in true))) + if(!(#0#0.{self::MyMap::containsKey}(#C5){(core::Object?) → core::bool} && (let final core::int #t26 = x1 = let core::int? #t27 = #0#0.{self::MyMap::[]}(#C5){(core::Object?) → core::int?} in #t27 == null ?{core::int} #t27 as{Unchecked} core::int : #t27{core::int} in true) && #0#0.{self::MyMap::containsKey}(#C7){(core::Object?) → core::bool} && (let final core::int #t28 = x2 = let core::int? #t29 = #0#0.{self::MyMap::[]}(#C7){(core::Object?) → core::int?} in #t29 == null ?{core::int} #t29 as{Unchecked} core::int : #t29{core::int} in true))) throw{for-error-handling} new core::StateError::•("Pattern matching error"); } self::expect(self::hasUnsoundNullSafety ?{core::String} self::unsoundResult : self::soundResult, map.{self::MyMap::log}{core::String}); @@ -146,7 +146,7 @@ static method main() → dynamic { final hoisted has-declared-initializer core::int y2; { final synthesized self::MyMap #1#0 = map; - if(!(#1#0.{self::MyMap::containsKey}(#C5){(core::Object?) → core::bool} && (let final core::int #t20 = y1 = #1#0.{self::MyMap::[]}(#C5){(core::Object?) → core::int?} as{Unchecked} core::int in true) && #1#0.{self::MyMap::containsKey}(#C7){(core::Object?) → core::bool} && (let final core::int #t21 = y2 = #1#0.{self::MyMap::[]}(#C7){(core::Object?) → core::int?} as{Unchecked} core::int in true))) + if(!(#1#0.{self::MyMap::containsKey}(#C5){(core::Object?) → core::bool} && (let final core::int #t30 = y1 = let core::int? #t31 = #1#0.{self::MyMap::[]}(#C5){(core::Object?) → core::int?} in #t31 == null ?{core::int} #t31 as{Unchecked} core::int : #t31{core::int} in true) && #1#0.{self::MyMap::containsKey}(#C7){(core::Object?) → core::bool} && (let final core::int #t32 = y2 = let core::int? #t33 = #1#0.{self::MyMap::[]}(#C7){(core::Object?) → core::int?} in #t33 == null ?{core::int} #t33 as{Unchecked} core::int : #t33{core::int} in true))) throw{for-error-handling} new core::StateError::•("Pattern matching error"); } self::expect(self::hasUnsoundNullSafety ?{core::String} self::unsoundResult : self::soundResult, map.{self::MyMap::log}{core::String}); @@ -170,4 +170,4 @@ constants { Extra constant evaluation status: Evaluated: IsExpression @ org-dartlang-testcase:///map_lookup.dart:9:49 -> BoolConstant(true) -Extra constant evaluation: evaluated: 343, effectively constant: 1 +Extra constant evaluation: evaluated: 415, effectively constant: 1 diff --git a/pkg/front_end/testcases/patterns/map_pattern_inside_case_with_type_arguments.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/map_pattern_inside_case_with_type_arguments.dart.weak.transformed.expect index deabbcd0fea..dfed9e3257b 100644 --- a/pkg/front_end/testcases/patterns/map_pattern_inside_case_with_type_arguments.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/patterns/map_pattern_inside_case_with_type_arguments.dart.weak.transformed.expect @@ -7,7 +7,7 @@ static method test(dynamic x) → dynamic { { final synthesized dynamic #0#0 = x; { - if(#0#0 is core::Map && #0#0{core::Map}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0{core::Map}.{core::Map::[]}(#C1){(core::Object?) → core::int?} as{Unchecked} core::int && #0#0{core::Map}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool} && #C4 =={core::num::==}{(core::Object) → core::bool} #0#0{core::Map}.{core::Map::[]}(#C3){(core::Object?) → core::int?} as{Unchecked} core::int) { + if(#0#0 is core::Map && #0#0{core::Map}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t1 = #0#0{core::Map}.{core::Map::[]}(#C1){(core::Object?) → core::int?} in #t1 == null ?{core::int} #t1 as{Unchecked} core::int : #t1{core::int}) && #0#0{core::Map}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool} && #C4 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t2 = #0#0{core::Map}.{core::Map::[]}(#C3){(core::Object?) → core::int?} in #t2 == null ?{core::int} #t2 as{Unchecked} core::int : #t2{core::int})) { { break #L1; } diff --git a/pkg/front_end/testcases/patterns/map_pattern_inside_cast.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/map_pattern_inside_cast.dart.weak.transformed.expect index a5e30238911..13198b35091 100644 --- a/pkg/front_end/testcases/patterns/map_pattern_inside_cast.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/patterns/map_pattern_inside_cast.dart.weak.transformed.expect @@ -7,7 +7,7 @@ static method test(dynamic x) → dynamic { { final synthesized dynamic #0#0 = x; { - if(let final core::Object #t1 = #0#0 as{Unchecked} core::Object in (#0#0 as{Unchecked} core::Object) is core::Map && ((#0#0 as{Unchecked} core::Object) as{Unchecked} core::Map).{core::Map::containsKey}(#C1){(core::Object?) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} ((#0#0 as{Unchecked} core::Object) as{Unchecked} core::Map).{core::Map::[]}(#C1){(core::Object?) → core::Object?}) { + if(let final core::Object #t1 = let dynamic #t2 = #0#0 in #t2 == null ?{core::Object} #t2 as core::Object : #t2{core::Object} in (let dynamic #t3 = #0#0 in #t3 == null ?{core::Object} #t3 as core::Object : #t3{core::Object}) is core::Map && ((let dynamic #t4 = #0#0 in #t4 == null ?{core::Object} #t4 as core::Object : #t4{core::Object}) as{Unchecked} core::Map).{core::Map::containsKey}(#C1){(core::Object?) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} ((let dynamic #t5 = #0#0 in #t5 == null ?{core::Object} #t5 as core::Object : #t5{core::Object}) as{Unchecked} core::Map).{core::Map::[]}(#C1){(core::Object?) → core::Object?}) { { break #L1; } diff --git a/pkg/front_end/testcases/patterns/map_pattern_inside_if_case.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/map_pattern_inside_if_case.dart.weak.transformed.expect index db8218a4cb5..b342db00f5e 100644 --- a/pkg/front_end/testcases/patterns/map_pattern_inside_if_case.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/patterns/map_pattern_inside_if_case.dart.weak.transformed.expect @@ -28,19 +28,19 @@ static method test2(dynamic x) → dynamic { static method test3(core::Map x) → dynamic { { final synthesized core::Map #0#0 = x; - if(#0#0.{core::Map::containsKey}(#C7){(core::Object?) → core::bool} && #C8 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::Map::[]}(#C7){(core::Object?) → core::double?} as{Unchecked} core::double) { + if(#0#0.{core::Map::containsKey}(#C7){(core::Object?) → core::bool} && #C8 =={core::num::==}{(core::Object) → core::bool} (let core::double? #t1 = #0#0.{core::Map::[]}(#C7){(core::Object?) → core::double?} in #t1 == null ?{core::double} #t1 as{Unchecked} core::double : #t1{core::double})) { } } { final synthesized core::Map #1#0 = x; - if(#1#0.{core::Map::containsKey}(#C9){(core::Object?) → core::bool} && #C10 =={core::num::==}{(core::Object) → core::bool} #1#0.{core::Map::[]}(#C9){(core::Object?) → core::double?} as{Unchecked} core::double) { + if(#1#0.{core::Map::containsKey}(#C9){(core::Object?) → core::bool} && #C10 =={core::num::==}{(core::Object) → core::bool} (let core::double? #t2 = #1#0.{core::Map::[]}(#C9){(core::Object?) → core::double?} in #t2 == null ?{core::double} #t2 as{Unchecked} core::double : #t2{core::double})) { } } } static method test4(self::MyMap x) → dynamic { { final synthesized self::MyMap #0#0 = x; - if(#0#0.{core::Map::containsKey}(#C11){(core::Object?) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::Map::[]}(#C11){(core::Object?) → core::int?} as{Unchecked} core::int && #0#0.{core::Map::containsKey}(#C12){(core::Object?) → core::bool} && #C4 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::Map::[]}(#C12){(core::Object?) → core::int?} as{Unchecked} core::int) { + if(#0#0.{core::Map::containsKey}(#C11){(core::Object?) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t3 = #0#0.{core::Map::[]}(#C11){(core::Object?) → core::int?} in #t3 == null ?{core::int} #t3 as{Unchecked} core::int : #t3{core::int}) && #0#0.{core::Map::containsKey}(#C12){(core::Object?) → core::bool} && #C4 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t4 = #0#0.{core::Map::[]}(#C12){(core::Object?) → core::int?} in #t4 == null ?{core::int} #t4 as{Unchecked} core::int : #t4{core::int})) { } } } @@ -52,7 +52,7 @@ static method test5(dynamic x) → dynamic { { hoisted dynamic y1; hoisted core::String y2; - if(#0#0 is core::Map && #0#0{core::Map}.{core::Map::containsKey}(#C11){(core::Object?) → core::bool} && (let final dynamic #t1 = y1 = #0#0{core::Map}.{core::Map::[]}(#C11){(core::Object?) → dynamic} in true) && #0#0{core::Map}.{core::Map::containsKey}(#C12){(core::Object?) → core::bool} && (let final dynamic #t2 = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t3 = #0#7#isSet = true in #0#7 = #0#0{core::Map}.{core::Map::[]}(#C12){(core::Object?) → dynamic})! in (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t4 = #0#7#isSet = true in #0#7 = #0#0{core::Map}.{core::Map::[]}(#C12){(core::Object?) → dynamic})! is core::String && (let final core::String #t5 = y2 = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t6 = #0#7#isSet = true in #0#7 = #0#0{core::Map}.{core::Map::[]}(#C12){(core::Object?) → dynamic})! as{Unchecked} core::String in true))) { + if(#0#0 is core::Map && #0#0{core::Map}.{core::Map::containsKey}(#C11){(core::Object?) → core::bool} && (let final dynamic #t5 = y1 = #0#0{core::Map}.{core::Map::[]}(#C11){(core::Object?) → dynamic} in true) && #0#0{core::Map}.{core::Map::containsKey}(#C12){(core::Object?) → core::bool} && (let final dynamic #t6 = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t7 = #0#7#isSet = true in #0#7 = #0#0{core::Map}.{core::Map::[]}(#C12){(core::Object?) → dynamic})! in (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t8 = #0#7#isSet = true in #0#7 = #0#0{core::Map}.{core::Map::[]}(#C12){(core::Object?) → dynamic})! is core::String && (let final core::String #t9 = y2 = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t10 = #0#7#isSet = true in #0#7 = #0#0{core::Map}.{core::Map::[]}(#C12){(core::Object?) → dynamic})! as{Unchecked} core::String in true))) { return 0; } else { diff --git a/pkg/front_end/testcases/patterns/matching_and_capturing_accesses_list_element_once.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/matching_and_capturing_accesses_list_element_once.dart.weak.transformed.expect index 764c2d91d94..c1fe7d44953 100644 --- a/pkg/front_end/testcases/patterns/matching_and_capturing_accesses_list_element_once.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/patterns/matching_and_capturing_accesses_list_element_once.dart.weak.transformed.expect @@ -322,7 +322,7 @@ abstract class _A&Object&ListMixin extends core::Object implements col::ListBase } } method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ fillRange(core::int start, core::int end, [covariant-by-class core::int? fill = #C2]) → void { - core::int value = let core::int? #t6 = fill in #t6 == null ?{core::int} #t6 as{Unchecked} core::int : #t6{core::int}; + core::int value = let core::int? #t6 = fill in #t6 == null ?{core::int} let core::int? #t7 = #t6 in #t7 == null ?{core::int} #t7 as core::int : #t7{core::int} : #t6{core::int}; core::RangeError::checkValidRange(start, end, this.{core::List::length}{core::int}); for (core::int i = start; i.{core::num::<}(end){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) { this.{core::List::[]=}(i, value){(core::int, core::int) → void}; @@ -496,7 +496,7 @@ abstract class _A&Object&ListMixin extends core::Object implements col::ListBase for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) { core::int element = :sync-for-iterator.{core::Iterator::current}{core::int}; { - this.{core::List::[]=}(let final core::int #t7 = index in let final core::int #t8 = index = #t7.{core::num::+}(1){(core::num) → core::int} in #t7, element){(core::int, core::int) → void}; + this.{core::List::[]=}(let final core::int #t8 = index in let final core::int #t9 = index = #t8.{core::num::+}(1){(core::num) → core::int} in #t8, element){(core::int, core::int) → void}; } } } @@ -537,8 +537,8 @@ static method main() → dynamic { { hoisted core::int x; hoisted core::int y; - if(#0#0.{self::A::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C8 && ((#0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool #t9 = #0#4#isSet = true in #0#4 = #0#0.{self::A::[]}(0){(core::int) → core::int}) is core::int && (let final core::int #t10 = x = #0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool #t11 = #0#4#isSet = true in #0#4 = #0#0.{self::A::[]}(0){(core::int) → core::int} in true)) && (#0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool #t12 = #0#5#isSet = true in #0#5 = #0#0.{self::A::[]}(1){(core::int) → core::int}) is core::int) { - y = #0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool #t13 = #0#5#isSet = true in #0#5 = #0#0.{self::A::[]}(1){(core::int) → core::int}; + if(#0#0.{self::A::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C8 && ((#0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool #t10 = #0#4#isSet = true in #0#4 = #0#0.{self::A::[]}(0){(core::int) → core::int}) is core::int && (let final core::int #t11 = x = #0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool #t12 = #0#4#isSet = true in #0#4 = #0#0.{self::A::[]}(0){(core::int) → core::int} in true)) && (#0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool #t13 = #0#5#isSet = true in #0#5 = #0#0.{self::A::[]}(1){(core::int) → core::int}) is core::int) { + y = #0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool #t14 = #0#5#isSet = true in #0#5 = #0#0.{self::A::[]}(1){(core::int) → core::int}; { self::expectEquals(x, 0); self::expectEquals(y, 0); @@ -570,4 +570,4 @@ Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:462:12 -> IntConstant(-1) Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:471:12 -> IntConstant(-1) Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:480:12 -> IntConstant(-1) -Extra constant evaluation: evaluated: 1102, effectively constant: 4 +Extra constant evaluation: evaluated: 1108, effectively constant: 4 diff --git a/pkg/front_end/testcases/patterns/multiple_targets.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/multiple_targets.dart.weak.transformed.expect index 5291d14bc9c..2d7b539339b 100644 --- a/pkg/front_end/testcases/patterns/multiple_targets.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/patterns/multiple_targets.dart.weak.transformed.expect @@ -72,35 +72,35 @@ static method test(dynamic o) → dynamic { } } { - if(#0#0 is core::Map && (#0#21#isSet ?{core::bool} #0#21{core::bool} : let final core::bool #t14 = #0#21#isSet = true in #0#21 = #0#0{core::Map}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#22#isSet ?{core::int?} #0#22{core::int?} : let final core::bool #t15 = #0#22#isSet = true in #0#22 = #0#0{core::Map}.{core::Map::[]}(#C5){(core::Object?) → core::int?}) as{Unchecked} core::int) { + if(#0#0 is core::Map && (#0#21#isSet ?{core::bool} #0#21{core::bool} : let final core::bool #t14 = #0#21#isSet = true in #0#21 = #0#0{core::Map}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && #C8 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t15 = #0#22#isSet ?{core::int?} #0#22{core::int?} : let final core::bool #t16 = #0#22#isSet = true in #0#22 = #0#0{core::Map}.{core::Map::[]}(#C5){(core::Object?) → core::int?} in #t15 == null ?{core::int} #t15 as{Unchecked} core::int : #t15{core::int})) { { return 5; } } } { - if(#0#0 is self::A && #C6 =={core::num::==}{(core::Object) → core::bool} (#0#31#isSet ?{dynamic} #0#31{dynamic} : let final core::bool #t16 = #0#31#isSet = true in #0#31 = #0#0{self::A}.{self::A::foo}{dynamic})) { + if(#0#0 is self::A && #C6 =={core::num::==}{(core::Object) → core::bool} (#0#31#isSet ?{dynamic} #0#31{dynamic} : let final core::bool #t17 = #0#31#isSet = true in #0#31 = #0#0{self::A}.{self::A::foo}{dynamic})) { { return 6; } } } { - if(#0#0 is self::A && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#31#isSet ?{core::int} #0#31{core::int} : let final core::bool #t17 = #0#31#isSet = true in #0#31 = #0#0{self::A}.{self::A::foo}{core::int})) { + if(#0#0 is self::A && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#31#isSet ?{core::int} #0#31{core::int} : let final core::bool #t18 = #0#31#isSet = true in #0#31 = #0#0{self::A}.{self::A::foo}{core::int})) { { return 7; } } } { - if(#0#0 is self::B && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#31#isSet ?{core::num} #0#31{core::num} : let final core::bool #t18 = #0#31#isSet = true in #0#31 = #0#0{self::B}.{self::B::foo}{core::num})) { + if(#0#0 is self::B && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#31#isSet ?{core::num} #0#31{core::num} : let final core::bool #t19 = #0#31#isSet = true in #0#31 = #0#0{self::B}.{self::B::foo}{core::num})) { { return 8; } } } { - if(#0#0 is ({foo: core::Object?}) && #C9 =={core::num::==}{(core::Object) → core::bool} (#0#31#isSet ?{core::Object?} #0#31{core::Object?} : let final core::bool #t19 = #0#31#isSet = true in #0#31 = #0#0{({foo: core::Object?})}.foo{core::Object?})) { + if(#0#0 is ({foo: core::Object?}) && #C9 =={core::num::==}{(core::Object) → core::bool} (#0#31#isSet ?{core::Object?} #0#31{core::Object?} : let final core::bool #t20 = #0#31#isSet = true in #0#31 = #0#0{({foo: core::Object?})}.foo{core::Object?})) { { return 9; } @@ -169,4 +169,4 @@ Evaluated: InstanceInvocation @ org-dartlang-testcase:///multiple_targets.dart:7 Evaluated: RecordLiteral @ org-dartlang-testcase:///multiple_targets.dart:79:18 -> RecordConstant(const ({foo: 8})) Evaluated: InstanceInvocation @ org-dartlang-testcase:///multiple_targets.dart:80:10 -> IntConstant(-1) Evaluated: RecordLiteral @ org-dartlang-testcase:///multiple_targets.dart:80:19 -> RecordConstant(const ({foo: 9})) -Extra constant evaluation: evaluated: 313, effectively constant: 11 +Extra constant evaluation: evaluated: 319, effectively constant: 11 diff --git a/pkg/front_end/testcases/patterns/negative_length.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/negative_length.dart.weak.transformed.expect index 917f211f86b..c94b8f1251f 100644 --- a/pkg/front_end/testcases/patterns/negative_length.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/patterns/negative_length.dart.weak.transformed.expect @@ -322,7 +322,7 @@ abstract class _NegativeLengthList&Object&ListMixin extends self::_Negat } static method switchList(core::List list) → core::int return block { - core::int #t9; + core::int #t10; final synthesized core::List #0#0 = list; synthesized core::int #0#1; synthesized core::bool #0#1#isSet = false; #L1: { { - if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t10 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C8){(core::num) → core::bool}) { - #t9 = 2; + if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t11 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C8){(core::num) → core::bool}) { + #t10 = 2; break #L1; } } { - if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t11 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C9) { - #t9 = 1; + if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t12 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C9) { + #t10 = 1; break #L1; } } { - if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t12 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C7){(core::num) → core::bool}) { - #t9 = 0; + if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t13 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C7){(core::num) → core::bool}) { + #t10 = 0; break #L1; } } throw{for-error-handling} new _in::ReachabilityError::•("`null` encountered as case in a switch expression with a non-nullable type."); } - } =>#t9; + } =>#t10; static method main() → dynamic { self::expect(0, self::switchList(core::_GrowableList::•(0))); self::expect(1, self::switchList(core::_GrowableList::_literal1(0))); @@ -588,4 +588,4 @@ Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:471:12 -> IntConstant(-1) Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:480:12 -> IntConstant(-1) Evaluated: InstanceInvocation @ org-dartlang-testcase:///negative_length.dart:12:41 -> IntConstant(-1) -Extra constant evaluation: evaluated: 1124, effectively constant: 5 +Extra constant evaluation: evaluated: 1130, effectively constant: 5 diff --git a/pkg/front_end/testcases/patterns/non_constant_pattern_in_if.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/non_constant_pattern_in_if.dart.weak.transformed.expect index 8b1668877f7..5292ddbc3d4 100644 --- a/pkg/front_end/testcases/patterns/non_constant_pattern_in_if.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/patterns/non_constant_pattern_in_if.dart.weak.transformed.expect @@ -58,7 +58,7 @@ static method test(dynamic value, core::bool expected) → void { } { final synthesized dynamic #3#0 = value; - if(#3#0 is core::Map && #3#0{core::Map}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool} && #C4 =={core::String::==}{(core::Object) → core::bool} #3#0{core::Map}.{core::Map::[]}(#C1){(core::Object?) → core::Object?} as{Unchecked} core::Object) { + if(#3#0 is core::Map && #3#0{core::Map}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool} && #C4 =={core::String::==}{(core::Object) → core::bool} (let core::Object? #t1 = #3#0{core::Map}.{core::Map::[]}(#C1){(core::Object?) → core::Object?} in #t1 == null ?{core::Object} #t1 as{Unchecked} core::Object : #t1{core::Object})) { matched = true; } } diff --git a/pkg/front_end/testcases/patterns/non_constant_pattern_in_switch.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/non_constant_pattern_in_switch.dart.weak.transformed.expect index 1e0668bc4a6..54d98e46fc3 100644 --- a/pkg/front_end/testcases/patterns/non_constant_pattern_in_switch.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/patterns/non_constant_pattern_in_switch.dart.weak.transformed.expect @@ -74,7 +74,7 @@ static method test(dynamic value, core::bool expected) → void { } } { - if(#0#0 is core::Map && (#0#12#isSet ?{core::bool} #0#12{core::bool} : let final core::bool #t7 = #0#12#isSet = true in #0#12 = #0#0{core::Map}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (#0#15#isSet ?{core::bool} #0#15{core::bool} : let final core::bool #t8 = #0#15#isSet = true in #0#15 = #C4 =={core::String::==}{(core::Object) → core::bool} #0#0{core::Map}.{core::Map::[]}(#C1){(core::Object?) → core::Object?} as{Unchecked} core::Object)) { + if(#0#0 is core::Map && (#0#12#isSet ?{core::bool} #0#12{core::bool} : let final core::bool #t7 = #0#12#isSet = true in #0#12 = #0#0{core::Map}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (#0#15#isSet ?{core::bool} #0#15{core::bool} : let final core::bool #t8 = #0#15#isSet = true in #0#15 = #C4 =={core::String::==}{(core::Object) → core::bool} (let core::Object? #t9 = #0#0{core::Map}.{core::Map::[]}(#C1){(core::Object?) → core::Object?} in #t9 == null ?{core::Object} #t9 as{Unchecked} core::Object : #t9{core::Object}))) { { matched = true; break #L1; diff --git a/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern_implicitly_named.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern_implicitly_named.dart.weak.transformed.expect index 58323992c72..df30b1e5783 100644 --- a/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern_implicitly_named.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern_implicitly_named.dart.weak.transformed.expect @@ -16,7 +16,7 @@ static method test(dynamic x) → dynamic { synthesized core::bool #0#2#isSet = false; { hoisted core::int f; - if(#0#0 is self::C && (!((#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t1 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?}) == null) && (let final core::int #t2 = f = (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t3 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?}) as{Unchecked} core::int in true))) { + if(#0#0 is self::C && (!((#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t1 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?}) == null) && (let final core::int #t2 = f = let core::int? #t3 = #0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t4 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?} in #t3 == null ?{core::int} #t3 as{Unchecked} core::int : #t3{core::int} in true))) { { break #L1; } diff --git a/pkg/front_end/testcases/patterns/null_literal_inside_cast.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/null_literal_inside_cast.dart.weak.transformed.expect index 7b821436347..d36d692ff83 100644 --- a/pkg/front_end/testcases/patterns/null_literal_inside_cast.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/patterns/null_literal_inside_cast.dart.weak.transformed.expect @@ -7,7 +7,7 @@ static method test(dynamic x) → dynamic { { final synthesized dynamic #0#0 = x; { - if(let final core::Object #t1 = #0#0 as{Unchecked} core::Object in #0#0 as{Unchecked} core::Object == null) { + if(let final core::Object #t1 = let dynamic #t2 = #0#0 in #t2 == null ?{core::Object} #t2 as core::Object : #t2{core::Object} in (let dynamic #t3 = #0#0 in #t3 == null ?{core::Object} #t3 as core::Object : #t3{core::Object}) == null) { { break #L1; } diff --git a/pkg/front_end/testcases/patterns/parenthesized_pattern_inside_cast.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/parenthesized_pattern_inside_cast.dart.weak.transformed.expect index 2bc5772600b..e18431c736b 100644 --- a/pkg/front_end/testcases/patterns/parenthesized_pattern_inside_cast.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/patterns/parenthesized_pattern_inside_cast.dart.weak.transformed.expect @@ -7,7 +7,7 @@ static method test(dynamic x) → dynamic { { final synthesized dynamic #0#0 = x; { - if(let final core::Object #t1 = #0#0 as{Unchecked} core::Object in #C1 =={core::num::==}{(core::Object) → core::bool} #0#0 as{Unchecked} core::Object) { + if(let final core::Object #t1 = let dynamic #t2 = #0#0 in #t2 == null ?{core::Object} #t2 as core::Object : #t2{core::Object} in #C1 =={core::num::==}{(core::Object) → core::bool} (let dynamic #t3 = #0#0 in #t3 == null ?{core::Object} #t3 as core::Object : #t3{core::Object})) { { break #L1; } diff --git a/pkg/front_end/testcases/patterns/parser_recovery_in_pattern_arguments.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/parser_recovery_in_pattern_arguments.dart.weak.transformed.expect index a9d38a4d57b..3f469744985 100644 --- a/pkg/front_end/testcases/patterns/parser_recovery_in_pattern_arguments.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/patterns/parser_recovery_in_pattern_arguments.dart.weak.transformed.expect @@ -36,9 +36,9 @@ static method test() → dynamic { ^"; if(!(#0#0.{core::Map::containsKey}(invalid-expression "pkg/front_end/testcases/patterns/parser_recovery_in_pattern_arguments.dart:13:14: Error: This couldn't be parsed. var {const C(:var t): a1} = foo(); - ^"){(core::Object?) → core::bool} && (let final core::int #t1 = a1 = #0#0.{core::Map::[]}(invalid-expression "pkg/front_end/testcases/patterns/parser_recovery_in_pattern_arguments.dart:13:14: Error: This couldn't be parsed. + ^"){(core::Object?) → core::bool} && (let final core::int #t1 = a1 = let core::int? #t2 = #0#0.{core::Map::[]}(invalid-expression "pkg/front_end/testcases/patterns/parser_recovery_in_pattern_arguments.dart:13:14: Error: This couldn't be parsed. var {const C(:var t): a1} = foo(); - ^"){(core::Object?) → core::int?} as{Unchecked} core::int in true))) + ^"){(core::Object?) → core::int?} in #t2 == null ?{core::int} #t2 as{Unchecked} core::int : #t2{core::int} in true))) throw{for-error-handling} new core::StateError::•("Pattern matching error"); } } diff --git a/pkg/front_end/testcases/patterns/prefixed_extractor_pattern_with_type_args_inside_cast.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/prefixed_extractor_pattern_with_type_args_inside_cast.dart.weak.transformed.expect index 878a12402be..36211bcd87a 100644 --- a/pkg/front_end/testcases/patterns/prefixed_extractor_pattern_with_type_args_inside_cast.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/patterns/prefixed_extractor_pattern_with_type_args_inside_cast.dart.weak.transformed.expect @@ -10,7 +10,7 @@ static method test(dynamic x) → dynamic { { final synthesized dynamic #0#0 = x; { - if(let final core::Object #t1 = #0#0 as{Unchecked} core::Object in (#0#0 as{Unchecked} core::Object) is asy::Future) { + if(let final core::Object #t1 = let dynamic #t2 = #0#0 in #t2 == null ?{core::Object} #t2 as core::Object : #t2{core::Object} in (let dynamic #t3 = #0#0 in #t3 == null ?{core::Object} #t3 as core::Object : #t3{core::Object}) is asy::Future) { { break #L1; } diff --git a/pkg/front_end/testcases/patterns/record_pattern_inside_cast.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/record_pattern_inside_cast.dart.weak.transformed.expect index 21aeba3115b..a041290ac19 100644 --- a/pkg/front_end/testcases/patterns/record_pattern_inside_cast.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/patterns/record_pattern_inside_cast.dart.weak.transformed.expect @@ -7,7 +7,7 @@ static method test(dynamic x) → dynamic { { final synthesized dynamic #0#0 = x; { - if(let final core::Object #t1 = #0#0 as{Unchecked} core::Object in (#0#0 as{Unchecked} core::Object) is (core::Object?, core::Object?) && #C1 =={core::num::==}{(core::Object) → core::bool} ((#0#0 as{Unchecked} core::Object) as{Unchecked} (core::Object?, core::Object?)).$1{core::Object?} && #C2 =={core::num::==}{(core::Object) → core::bool} ((#0#0 as{Unchecked} core::Object) as{Unchecked} (core::Object?, core::Object?)).$2{core::Object?}) { + if(let final core::Object #t1 = let dynamic #t2 = #0#0 in #t2 == null ?{core::Object} #t2 as core::Object : #t2{core::Object} in (let dynamic #t3 = #0#0 in #t3 == null ?{core::Object} #t3 as core::Object : #t3{core::Object}) is (core::Object?, core::Object?) && #C1 =={core::num::==}{(core::Object) → core::bool} ((let dynamic #t4 = #0#0 in #t4 == null ?{core::Object} #t4 as core::Object : #t4{core::Object}) as{Unchecked} (core::Object?, core::Object?)).$1{core::Object?} && #C2 =={core::num::==}{(core::Object) → core::bool} ((let dynamic #t5 = #0#0 in #t5 == null ?{core::Object} #t5 as core::Object : #t5{core::Object}) as{Unchecked} (core::Object?, core::Object?)).$2{core::Object?}) { { break #L1; } diff --git a/pkg/front_end/testcases/patterns/string_literal_inside_cast.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/string_literal_inside_cast.dart.weak.transformed.expect index f2d1a8f666b..825bb89e5e9 100644 --- a/pkg/front_end/testcases/patterns/string_literal_inside_cast.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/patterns/string_literal_inside_cast.dart.weak.transformed.expect @@ -7,7 +7,7 @@ static method test(dynamic x) → dynamic { { final synthesized dynamic #0#0 = x; { - if(let final core::Object #t1 = #0#0 as{Unchecked} core::Object in #C1 =={core::String::==}{(core::Object) → core::bool} #0#0 as{Unchecked} core::Object) { + if(let final core::Object #t1 = let dynamic #t2 = #0#0 in #t2 == null ?{core::Object} #t2 as core::Object : #t2{core::Object} in #C1 =={core::String::==}{(core::Object) → core::bool} (let dynamic #t3 = #0#0 in #t3 == null ?{core::Object} #t3 as core::Object : #t3{core::Object})) { { break #L1; } diff --git a/pkg/front_end/testcases/patterns/typed_final_variable_inside_cast.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/typed_final_variable_inside_cast.dart.weak.transformed.expect index 03577d6b0db..8e2261debfd 100644 --- a/pkg/front_end/testcases/patterns/typed_final_variable_inside_cast.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/patterns/typed_final_variable_inside_cast.dart.weak.transformed.expect @@ -8,7 +8,7 @@ static method test(dynamic x) → dynamic { final synthesized dynamic #0#0 = x; { final hoisted core::int y; - if(let final core::Object #t1 = #0#0 as{Unchecked} core::Object in (#0#0 as{Unchecked} core::Object) is core::int && (let final core::int #t2 = y = (#0#0 as{Unchecked} core::Object) as{Unchecked} core::int in true)) { + if(let final core::Object #t1 = let dynamic #t2 = #0#0 in #t2 == null ?{core::Object} #t2 as core::Object : #t2{core::Object} in (let dynamic #t3 = #0#0 in #t3 == null ?{core::Object} #t3 as core::Object : #t3{core::Object}) is core::int && (let final core::int #t4 = y = (let dynamic #t5 = #0#0 in #t5 == null ?{core::Object} #t5 as core::Object : #t5{core::Object}) as{Unchecked} core::int in true)) { { break #L1; } diff --git a/pkg/front_end/testcases/patterns/typed_variable_inside_cast.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/typed_variable_inside_cast.dart.weak.transformed.expect index 031a582aa17..9196ecdb2a5 100644 --- a/pkg/front_end/testcases/patterns/typed_variable_inside_cast.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/patterns/typed_variable_inside_cast.dart.weak.transformed.expect @@ -8,7 +8,7 @@ static method test(dynamic x) → dynamic { final synthesized dynamic #0#0 = x; { hoisted core::int y; - if(let final core::Object #t1 = #0#0 as{Unchecked} core::Object in (#0#0 as{Unchecked} core::Object) is core::int && (let final core::int #t2 = y = (#0#0 as{Unchecked} core::Object) as{Unchecked} core::int in true)) { + if(let final core::Object #t1 = let dynamic #t2 = #0#0 in #t2 == null ?{core::Object} #t2 as core::Object : #t2{core::Object} in (let dynamic #t3 = #0#0 in #t3 == null ?{core::Object} #t3 as core::Object : #t3{core::Object}) is core::int && (let final core::int #t4 = y = (let dynamic #t5 = #0#0 in #t5 == null ?{core::Object} #t5 as core::Object : #t5{core::Object}) as{Unchecked} core::int in true)) { { break #L1; } diff --git a/pkg/front_end/testcases/patterns/var_variable_inside_cast.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/var_variable_inside_cast.dart.weak.transformed.expect index d0f207f8d51..429fd1b89a0 100644 --- a/pkg/front_end/testcases/patterns/var_variable_inside_cast.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/patterns/var_variable_inside_cast.dart.weak.transformed.expect @@ -8,7 +8,7 @@ static method test(dynamic x) → dynamic { final synthesized dynamic #0#0 = x; { hoisted core::Object y; - if(let final core::Object #t1 = #0#0 as{Unchecked} core::Object in let final core::Object #t2 = y = #0#0 as{Unchecked} core::Object in true) { + if(let final core::Object #t1 = let dynamic #t2 = #0#0 in #t2 == null ?{core::Object} #t2 as core::Object : #t2{core::Object} in let final core::Object #t3 = y = let dynamic #t4 = #0#0 in #t4 == null ?{core::Object} #t4 as core::Object : #t4{core::Object} in true) { { break #L1; } diff --git a/pkg/front_end/testcases/patterns/variable_names.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/variable_names.dart.weak.transformed.expect index 180aea28cce..3638314dd2d 100644 --- a/pkg/front_end/testcases/patterns/variable_names.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/patterns/variable_names.dart.weak.transformed.expect @@ -43,9 +43,9 @@ static method test(dynamic x, dynamic y, dynamic z) → dynamic { hoisted core::double boz; hoisted core::int foobar; if(#0#0 is self::A && (let final core::int? #t1 = (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::foo}{core::int?})! in let final core::int? #t3 = foo = (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t4 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::foo}{core::int?})! in true) && (let final core::int #t5 = bar = #0#0{self::A}.{self::A::bar}{core::int} in true) && !((#0#5#isSet ?{core::int?} #0#5{core::int?} : let final core::bool #t6 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::baz}{core::int?}) == null)) { - baz = (#0#5#isSet ?{core::int?} #0#5{core::int?} : let final core::bool #t7 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::baz}{core::int?}) as{Unchecked} core::int; - (#0#7#isSet ?{core::num} #0#7{core::num} : let final core::bool #t8 = #0#7#isSet = true in #0#7 = #0#0{self::A}.{self::A::boz}{core::num}) as core::double; - boz = (#0#7#isSet ?{core::num} #0#7{core::num} : let final core::bool #t9 = #0#7#isSet = true in #0#7 = #0#0{self::A}.{self::A::boz}{core::num}) as core::double; + baz = let core::int? #t7 = #0#5#isSet ?{core::int?} #0#5{core::int?} : let final core::bool #t8 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::baz}{core::int?} in #t7 == null ?{core::int} #t7 as{Unchecked} core::int : #t7{core::int}; + (#0#7#isSet ?{core::num} #0#7{core::num} : let final core::bool #t9 = #0#7#isSet = true in #0#7 = #0#0{self::A}.{self::A::boz}{core::num}) as core::double; + boz = (#0#7#isSet ?{core::num} #0#7{core::num} : let final core::bool #t10 = #0#7#isSet = true in #0#7 = #0#0{self::A}.{self::A::boz}{core::num}) as core::double; foobar = #0#0{self::A}.{self::A::foobar}{core::int}; { return 0; @@ -65,10 +65,10 @@ static method test(dynamic x, dynamic y, dynamic z) → dynamic { hoisted dynamic baz; hoisted core::double boz; hoisted dynamic foobar; - if(#1#0 is (core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?}) && (let final core::Object? #t10 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t11 = #1#2#isSet = true in #1#2 = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.foo{core::Object?})! in let final core::Object? #t12 = foo = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t13 = #1#2#isSet = true in #1#2 = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.foo{core::Object?})! in true) && (let final core::Object? #t14 = bar = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.bar{core::Object?} in true) && !((#1#5#isSet ?{core::Object?} #1#5{core::Object?} : let final core::bool #t15 = #1#5#isSet = true in #1#5 = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.baz{core::Object?}) == null)) { - baz = #1#5#isSet ?{core::Object?} #1#5{core::Object?} : let final core::bool #t16 = #1#5#isSet = true in #1#5 = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.baz{core::Object?}; - (#1#7#isSet ?{core::Object?} #1#7{core::Object?} : let final core::bool #t17 = #1#7#isSet = true in #1#7 = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.$1{core::Object?}) as core::double; - boz = (#1#7#isSet ?{core::Object?} #1#7{core::Object?} : let final core::bool #t18 = #1#7#isSet = true in #1#7 = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.$1{core::Object?}) as core::double; + if(#1#0 is (core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?}) && (let final core::Object? #t11 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t12 = #1#2#isSet = true in #1#2 = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.foo{core::Object?})! in let final core::Object? #t13 = foo = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t14 = #1#2#isSet = true in #1#2 = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.foo{core::Object?})! in true) && (let final core::Object? #t15 = bar = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.bar{core::Object?} in true) && !((#1#5#isSet ?{core::Object?} #1#5{core::Object?} : let final core::bool #t16 = #1#5#isSet = true in #1#5 = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.baz{core::Object?}) == null)) { + baz = #1#5#isSet ?{core::Object?} #1#5{core::Object?} : let final core::bool #t17 = #1#5#isSet = true in #1#5 = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.baz{core::Object?}; + (#1#7#isSet ?{core::Object?} #1#7{core::Object?} : let final core::bool #t18 = #1#7#isSet = true in #1#7 = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.$1{core::Object?}) as core::double; + boz = (#1#7#isSet ?{core::Object?} #1#7{core::Object?} : let final core::bool #t19 = #1#7#isSet = true in #1#7 = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.$1{core::Object?}) as core::double; foobar = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.foobar{core::Object?}; { return 1; @@ -94,12 +94,12 @@ static method test(dynamic x, dynamic y, dynamic z) → dynamic { } { final synthesized dynamic #4#0 = y as{TypeError,ForDynamic} self::A; - if(!(#4#0 is self::A && (let final core::bool #t19 = qux = #4#0{self::A}.{self::A::qux}{core::bool} in true) && (let final core::String #t20 = quux = #4#0{self::A}.{self::A::quux}{core::String} in true))) + if(!(#4#0 is self::A && (let final core::bool #t20 = qux = #4#0{self::A}.{self::A::qux}{core::bool} in true) && (let final core::String #t21 = quux = #4#0{self::A}.{self::A::quux}{core::String} in true))) throw{for-error-handling} new core::StateError::•("Pattern matching error"); } { final synthesized dynamic #5#0 = z as{TypeError,ForDynamic} (dynamic, {quux: dynamic}); - if(!(#5#0 is (core::Object?, {quux: core::Object?}) && (let final core::Object? #t21 = qux = #5#0{(core::Object?, {quux: core::Object?})}.$1{core::Object?} in true) && (let final core::Object? #t22 = quux = #5#0{(core::Object?, {quux: core::Object?})}.quux{core::Object?} in true))) + if(!(#5#0 is (core::Object?, {quux: core::Object?}) && (let final core::Object? #t22 = qux = #5#0{(core::Object?, {quux: core::Object?})}.$1{core::Object?} in true) && (let final core::Object? #t23 = quux = #5#0{(core::Object?, {quux: core::Object?})}.quux{core::Object?} in true))) throw{for-error-handling} new core::StateError::•("Pattern matching error"); } } diff --git a/pkg/frontend_server/lib/compute_kernel.dart b/pkg/frontend_server/lib/compute_kernel.dart index e056542e163..07849b3d51b 100644 --- a/pkg/frontend_server/lib/compute_kernel.dart +++ b/pkg/frontend_server/lib/compute_kernel.dart @@ -22,8 +22,7 @@ import 'package:front_end/src/api_prototype/file_system.dart'; import 'package:front_end/src/api_prototype/incremental_kernel_generator.dart'; import 'package:front_end/src/api_unstable/bazel_worker.dart' as fe; import 'package:front_end/src/fasta/uri_translator.dart'; -import 'package:kernel/ast.dart' - show Component, Library, NonNullableByDefaultCompiledMode; +import 'package:kernel/ast.dart' show Component, Library; import 'package:kernel/target/targets.dart'; import 'package:vm/kernel_front_end.dart'; import 'package:vm/modular/target/flutter.dart'; @@ -398,13 +397,7 @@ Future computeKernel(List args, nativeAssetsLibrary = await NativeAssetsSynthesizer.synthesizeLibraryFromYamlFile( - nativeAssetsUri, - new ErrorDetector(), - nonNullableByDefaultCompiledMode: - state.options.nnbdMode == fe.NnbdMode.Strong - ? NonNullableByDefaultCompiledMode.Strong - : NonNullableByDefaultCompiledMode.Weak, - ); + nativeAssetsUri, new ErrorDetector()); } if (usingIncrementalCompiler) { diff --git a/pkg/frontend_server/lib/frontend_server.dart b/pkg/frontend_server/lib/frontend_server.dart index 0fa5f98a9e2..92d6a2477ef 100644 --- a/pkg/frontend_server/lib/frontend_server.dart +++ b/pkg/frontend_server/lib/frontend_server.dart @@ -529,7 +529,6 @@ class FrontendCompiler implements CompilerInterface { ..explicitExperimentalFlags = parseExperimentalFlags( parseExperimentalArguments(options['enable-experiment']), onError: (msg) => errors.add(msg)) - ..nnbdMode = soundNullSafety ? NnbdMode.Strong : NnbdMode.Weak ..onDiagnostic = _onDiagnostic ..verbosity = Verbosity.parseArgument(options['verbosity'], onError: (msg) => errors.add(msg)); @@ -606,7 +605,6 @@ class FrontendCompiler implements CompilerInterface { compilerOptions.target = createFrontEndTarget( options['target'], trackWidgetCreation: options['track-widget-creation'], - soundNullSafety: compilerOptions.nnbdMode == NnbdMode.Strong, supportMirrors: options['support-mirrors'] ?? !(options['aot'] || options['minimal-kernel']), ); @@ -828,7 +826,6 @@ class FrontendCompiler implements CompilerInterface { PackageConfig packageConfig = await loadPackageConfigUri( _compilerOptions.packagesFileUri ?? new File('.dart_tool/package_config.json').absolute.uri); - bool soundNullSafety = _compilerOptions.nnbdMode == NnbdMode.Strong; final Component component = results.component!; final IncrementalJavaScriptBundler bundler = @@ -839,7 +836,6 @@ class FrontendCompiler implements CompilerInterface { useDebuggerModuleNames: useDebuggerModuleNames, emitDebugMetadata: emitDebugMetadata, moduleFormat: moduleFormat, - soundNullSafety: soundNullSafety, canaryFeatures: canaryFeatures, ); if (fullComponent) { diff --git a/pkg/frontend_server/lib/src/javascript_bundle.dart b/pkg/frontend_server/lib/src/javascript_bundle.dart index 23ed2c83992..f72be19010a 100644 --- a/pkg/frontend_server/lib/src/javascript_bundle.dart +++ b/pkg/frontend_server/lib/src/javascript_bundle.dart @@ -37,7 +37,6 @@ class IncrementalJavaScriptBundler { this.useDebuggerModuleNames = false, this.emitDebugMetadata = false, this.emitDebugSymbols = false, - this.soundNullSafety = false, this.canaryFeatures = false, String? moduleFormat, }) : _moduleFormat = parseModuleFormat(moduleFormat ?? 'amd'); @@ -46,7 +45,6 @@ class IncrementalJavaScriptBundler { final bool emitDebugMetadata; final bool emitDebugSymbols; final ModuleFormat _moduleFormat; - final bool soundNullSafety; final bool canaryFeatures; final FileSystem? _fileSystem; final Set _loadedLibraries; @@ -212,7 +210,7 @@ class IncrementalJavaScriptBundler { emitDebugMetadata: emitDebugMetadata, emitDebugSymbols: emitDebugSymbols, moduleName: moduleName, - soundNullSafety: soundNullSafety, + soundNullSafety: true, canaryFeatures: canaryFeatures, ), _importToSummary, diff --git a/pkg/frontend_server/test/frontend_server_flutter.dart b/pkg/frontend_server/test/frontend_server_flutter.dart index ed20ef2dbee..a6500d06381 100644 --- a/pkg/frontend_server/test/frontend_server_flutter.dart +++ b/pkg/frontend_server/test/frontend_server_flutter.dart @@ -16,10 +16,6 @@ import 'dart:io' exitCode; import 'dart:typed_data' show BytesBuilder, Uint8List; -import 'package:front_end/src/api_prototype/language_version.dart' - show uriUsesLegacyLanguageVersion; -import 'package:front_end/src/api_unstable/vm.dart' - show CompilerOptions, NnbdMode, StandardFileSystem; import 'package:frontend_server/starter.dart'; import 'package:kernel/ast.dart' show Component, Library; import 'package:kernel/binary/multi_binary_loader.dart' show MultiBinaryLoader; @@ -41,20 +37,6 @@ Future main(List args) async { await compileTests(flutterDir, flutterPlatformDir, new StdoutLogger()); } -Future _getNNBDMode(Uri script, Uri packageConfigUri) async { - final CompilerOptions compilerOptions = new CompilerOptions() - ..sdkRoot = null - ..fileSystem = StandardFileSystem.instance - ..packagesFileUri = packageConfigUri - ..sdkSummary = null - ..nnbdMode = NnbdMode.Weak; - - if (await uriUsesLegacyLanguageVersion(script, compilerOptions)) { - return NnbdMode.Weak; - } - return NnbdMode.Strong; -} - Future compileTests( String? flutterDir, String? flutterPlatformDir, Logger logger, {String? filter, int shards = 1, int shard = 0}) async { @@ -134,26 +116,9 @@ Future compileTests( return true; })); - // Split into NNBD Strong and Weak so only the ones that match are - // compiled together. If mixing-and-matching the first file (which could - // be either) will setup the compiler which can lead to compilation errors - // for another file, for instance if the first one is strong but a - // subsequent one tries to opt out (i.e. is weak) an error is issued that - // that's not possible. - List weak = []; - List strong = []; - for (File file in testFiles) { - if (await _getNNBDMode(file.uri, packageConfig.uri) == NnbdMode.Weak) { - weak.add(file); - } else { - strong.add(file); - } - } - for (List files in [weak, strong]) { - if (files.isEmpty) continue; - queue.add(new _QueueEntry(files, packageConfig, testDir)); - totalFiles += files.length; - } + if (testFiles.isEmpty) continue; + queue.add(new _QueueEntry(testFiles, packageConfig, testDir)); + totalFiles += testFiles.length; } // Process queue, taking shards into account. diff --git a/pkg/vm/bin/kernel_service.dart b/pkg/vm/bin/kernel_service.dart index e09bcfc8dac..6ec752bfdae 100644 --- a/pkg/vm/bin/kernel_service.dart +++ b/pkg/vm/bin/kernel_service.dart @@ -34,12 +34,13 @@ import 'package:front_end/src/api_prototype/front_end.dart' as fe show CompilerResult; import 'package:front_end/src/api_prototype/memory_file_system.dart'; import 'package:front_end/src/api_unstable/vm.dart'; +import 'package:kernel/ast.dart' + show Component, Library, NonNullableByDefaultCompiledMode, Procedure; import 'package:kernel/binary/ast_from_binary.dart' show BinaryBuilderWithMetadata; import 'package:kernel/binary/ast_to_binary.dart'; import 'package:kernel/class_hierarchy.dart' show ClassHierarchy; import 'package:kernel/core_types.dart' show CoreTypes; -import 'package:kernel/kernel.dart' show Component, Library, Procedure; import 'package:kernel/target/targets.dart' show Target, TargetFlags; import 'package:vm/http_filesystem.dart'; import 'package:vm/incremental_compiler.dart'; @@ -907,7 +908,7 @@ Future _processLoadRequest(request) async { if (nativeAssetsLibrary != null) { nativeAssetsComponent = Component( libraries: [nativeAssetsLibrary], - mode: nativeAssetsLibrary.nonNullableByDefaultCompiledMode, + mode: NonNullableByDefaultCompiledMode.Strong, ); } } diff --git a/pkg/vm/bin/protobuf_aware_treeshaker.dart b/pkg/vm/bin/protobuf_aware_treeshaker.dart index 220e2d65755..0163bf1d19e 100644 --- a/pkg/vm/bin/protobuf_aware_treeshaker.dart +++ b/pkg/vm/bin/protobuf_aware_treeshaker.dart @@ -105,14 +105,14 @@ Future main(List args) async { bytes = concatenate(File(platformFile).readAsBytesSync(), bytes); } final component = loadComponentFromBytes(bytes); + if (component.mode != NonNullableByDefaultCompiledMode.Strong) { + print('Input kernel file should be compiled with sound null safety.'); + exit(-1); + } installAdditionalTargets(); - final target = getTarget( - argResults['target'], - TargetFlags( - soundNullSafety: - component.mode == NonNullableByDefaultCompiledMode.Strong))!; + final target = getTarget(argResults['target'], TargetFlags())!; // The [component] is treeshaken and has TFA annotations. Write output. if (argResults['aot']) { diff --git a/pkg/vm/lib/kernel_front_end.dart b/pkg/vm/lib/kernel_front_end.dart index c5fc2ce2767..460876fb6d7 100644 --- a/pkg/vm/lib/kernel_front_end.dart +++ b/pkg/vm/lib/kernel_front_end.dart @@ -24,7 +24,6 @@ import 'package:front_end/src/api_unstable/vm.dart' DiagnosticMessageHandler, FileSystem, FileSystemEntity, - NnbdMode, ProcessedOptions, Severity, StandardFileSystem, @@ -219,7 +218,6 @@ Future runCompiler(ArgResults options, String usage) async { final bool linkPlatform = options['link-platform']; final bool embedSources = options['embed-sources']; final bool enableAsserts = options['enable-asserts']; - final bool soundNullSafety = options['sound-null-safety']; final bool useProtobufTreeShakerV2 = options['protobuf-tree-shaker-v2']; final String? manifestFilename = options['manifest']; final String? dataDir = options['component-name'] ?? options['data-dir']; @@ -235,6 +233,7 @@ Future runCompiler(ArgResults options, String usage) async { return badUsageExitCode; } + final bool soundNullSafety = options['sound-null-safety']; if (!soundNullSafety) { print('Error: --no-sound-null-safety is not supported.'); return badUsageExitCode; @@ -304,7 +303,6 @@ Future runCompiler(ArgResults options, String usage) async { ..explicitExperimentalFlags = parseExperimentalFlags( parseExperimentalArguments(experimentalFlags), onError: print) - ..nnbdMode = soundNullSafety ? NnbdMode.Strong : NnbdMode.Weak ..onDiagnostic = (DiagnosticMessage m) { errorDetector(m); } @@ -315,7 +313,6 @@ Future runCompiler(ArgResults options, String usage) async { compilerOptions.target = createFrontEndTarget(targetName, trackWidgetCreation: options['track-widget-creation'], - soundNullSafety: compilerOptions.nnbdMode == NnbdMode.Strong, supportMirrors: supportMirrors ?? !(aot || minimalKernel)); if (compilerOptions.target == null) { print('Failed to create front-end target $targetName.'); @@ -369,7 +366,7 @@ Future runCompiler(ArgResults options, String usage) async { final BinaryPrinter printer = new BinaryPrinter(sink); printer.writeComponentFile(Component( libraries: [nativeAssetsLibrary], - mode: nativeAssetsLibrary.nonNullableByDefaultCompiledMode, + mode: NonNullableByDefaultCompiledMode.Strong, )); } await sink.close(); @@ -456,12 +453,7 @@ Future compileToKernel( final nativeAssetsLibrary = await NativeAssetsSynthesizer.synthesizeLibraryFromYamlFile( - nativeAssets, - errorDetector, - nonNullableByDefaultCompiledMode: options.nnbdMode == NnbdMode.Strong - ? NonNullableByDefaultCompiledMode.Strong - : NonNullableByDefaultCompiledMode.Weak, - ); + nativeAssets, errorDetector); if (source == null) { return KernelCompilationResults.named( nativeAssetsLibrary: nativeAssetsLibrary, @@ -500,7 +492,6 @@ Future compileToKernel( await runGlobalTransformations(target, component, useGlobalTypeFlowAnalysis, enableAsserts, useProtobufTreeShakerV2, errorDetector, environmentDefines: options.environmentDefines, - nnbdMode: options.nnbdMode, targetOS: targetOS, minimalKernel: minimalKernel, treeShakeWriteOnlyFields: treeShakeWriteOnlyFields, @@ -567,7 +558,6 @@ Future runGlobalTransformations( {bool minimalKernel = false, bool treeShakeWriteOnlyFields = false, bool useRapidTypeAnalysis = true, - NnbdMode nnbdMode = NnbdMode.Weak, Map? environmentDefines, List? keepClassNamesImplementing, String? targetOS, @@ -589,7 +579,7 @@ Future runGlobalTransformations( // type flow analysis so TFA won't take unreachable code into account. final os = targetOS != null ? TargetOS.fromString(targetOS)! : null; final evaluator = vm_constant_evaluator.VMConstantEvaluator.create( - target, component, os, nnbdMode, + target, component, os, enableAsserts: enableAsserts, environmentDefines: environmentDefines, coreTypes: coreTypes); @@ -721,16 +711,12 @@ bool parseCommandLineDefines( /// Create front-end target with given name. Target? createFrontEndTarget(String targetName, - {bool trackWidgetCreation = false, - bool soundNullSafety = true, - bool supportMirrors = true}) { + {bool trackWidgetCreation = false, bool supportMirrors = true}) { // Make sure VM-specific targets are available. installAdditionalTargets(); final TargetFlags targetFlags = new TargetFlags( - trackWidgetCreation: trackWidgetCreation, - soundNullSafety: soundNullSafety, - supportMirrors: supportMirrors); + trackWidgetCreation: trackWidgetCreation, supportMirrors: supportMirrors); return getTarget(targetName, targetFlags); } diff --git a/pkg/vm/lib/modular/target/vm.dart b/pkg/vm/lib/modular/target/vm.dart index 80c39d82b0c..e2addb91222 100644 --- a/pkg/vm/lib/modular/target/vm.dart +++ b/pkg/vm/lib/modular/target/vm.dart @@ -196,7 +196,7 @@ class VmTarget extends Target { bool productMode = environmentDefines!["dart.vm.product"] == "true"; lowering.transformLibraries(libraries, coreTypes, hierarchy, - soundNullSafety: flags.soundNullSafety, productMode: productMode); + productMode: productMode); logger?.call("Lowering transformations performed"); callSiteAnnotator.transformLibraries( @@ -213,7 +213,7 @@ class VmTarget extends Target { {void Function(String msg)? logger}) { bool productMode = environmentDefines!["dart.vm.product"] == "true"; lowering.transformProcedure(procedure, coreTypes, hierarchy, - soundNullSafety: flags.soundNullSafety, productMode: productMode); + productMode: productMode); logger?.call("Lowering transformations performed"); } diff --git a/pkg/vm/lib/modular/transformations/lowering.dart b/pkg/vm/lib/modular/transformations/lowering.dart index 13b28fdbff9..a9c1328ceba 100644 --- a/pkg/vm/lib/modular/transformations/lowering.dart +++ b/pkg/vm/lib/modular/transformations/lowering.dart @@ -22,23 +22,20 @@ import 'type_casts_optimizer.dart' as typeCastsOptimizer /// after transforming children nodes. void transformLibraries( List libraries, CoreTypes coreTypes, ClassHierarchy hierarchy, - {required bool soundNullSafety, required bool productMode}) { - final transformer = _Lowering(coreTypes, hierarchy, - soundNullSafety: soundNullSafety, productMode: productMode); + {required bool productMode}) { + final transformer = _Lowering(coreTypes, hierarchy, productMode: productMode); libraries.forEach(transformer.visitLibrary); } void transformProcedure( Procedure procedure, CoreTypes coreTypes, ClassHierarchy hierarchy, - {required bool soundNullSafety, required bool productMode}) { - final transformer = _Lowering(coreTypes, hierarchy, - soundNullSafety: soundNullSafety, productMode: productMode); + {required bool productMode}) { + final transformer = _Lowering(coreTypes, hierarchy, productMode: productMode); procedure.accept(transformer); } class _Lowering extends Transformer { final TypeEnvironment env; - final bool soundNullSafety; final LateVarInitTransformer lateVarInitTransformer; final FactorySpecializer factorySpecializer; final ListLiteralsLowering listLiteralsLowering; @@ -49,7 +46,7 @@ class _Lowering extends Transformer { StaticTypeContext? _cachedStaticTypeContext; _Lowering(CoreTypes coreTypes, ClassHierarchy hierarchy, - {required this.soundNullSafety, required bool productMode}) + {required bool productMode}) : env = TypeEnvironment(coreTypes, hierarchy), lateVarInitTransformer = LateVarInitTransformer(), factorySpecializer = FactorySpecializer(coreTypes), @@ -97,8 +94,7 @@ class _Lowering extends Transformer { @override visitAsExpression(AsExpression node) { node.transformChildren(this); - return typeCastsOptimizer.transformAsExpression( - node, _staticTypeContext, soundNullSafety); + return typeCastsOptimizer.transformAsExpression(node, _staticTypeContext); } @override diff --git a/pkg/vm/lib/modular/transformations/type_casts_optimizer.dart b/pkg/vm/lib/modular/transformations/type_casts_optimizer.dart index 9940759fc2f..d0fc05a61c3 100644 --- a/pkg/vm/lib/modular/transformations/type_casts_optimizer.dart +++ b/pkg/vm/lib/modular/transformations/type_casts_optimizer.dart @@ -10,25 +10,25 @@ import 'package:kernel/type_environment.dart' // Removes redundant type casts and reduces casts to null checks. // // Handles the following patterns: -// If S <: T (this includes S <: T? in weak mode) +// If S <: T // // S x; x as T => x // -// If S <: T? in strong mode +// If S <: T? // // S x; x as T => (x == null) ? x as T : x // -TreeNode transformAsExpression(AsExpression node, - StaticTypeContext staticTypeContext, bool soundNullSafety) { +TreeNode transformAsExpression( + AsExpression node, StaticTypeContext staticTypeContext) { final DartType operandType = node.operand.getStaticType(staticTypeContext); final env = staticTypeContext.typeEnvironment; - if (isRedundantTypeCast(node, operandType, env, soundNullSafety)) { + if (isRedundantTypeCast(node, operandType, env)) { node.isUnchecked = true; return node; } - if (canBeReducedToNullCheckAndCast(node, operandType, env, soundNullSafety)) { + if (canBeReducedToNullCheckAndCast(node, operandType, env)) { // Transform 'x as T' to 'Let tmp = x in (tmp == null) ? tmp as T : tmp'. final tmp = VariableDeclaration(null, initializer: node.operand, type: operandType, isSynthesized: true); @@ -50,32 +50,28 @@ TreeNode transformAsExpression(AsExpression node, // Returns true if type cast [node] which has operand of the given // [operandStaticType] is redundant and can be removed (replaced with its // operand). -bool isRedundantTypeCast(AsExpression node, DartType operandStaticType, - TypeEnvironment env, bool soundNullSafety) { +bool isRedundantTypeCast( + AsExpression node, DartType operandStaticType, TypeEnvironment env) { if (!_canBeTransformed(node, env.coreTypes)) { return false; } return env.isSubtypeOf( - operandStaticType, - node.type, - soundNullSafety - ? SubtypeCheckMode.withNullabilities - : SubtypeCheckMode.ignoringNullabilities); + operandStaticType, node.type, SubtypeCheckMode.withNullabilities); } // Returns true if type cast [node] which has operand of the given // [operandStaticType] can be reduced to the null-check-and-cast pattern // 'Let tmp = [node.operand] in (tmp == null) ? tmp as T : tmp'. -bool canBeReducedToNullCheckAndCast(AsExpression node, - DartType operandStaticType, TypeEnvironment env, bool soundNullSafety) { +bool canBeReducedToNullCheckAndCast( + AsExpression node, DartType operandStaticType, TypeEnvironment env) { if (!_canBeTransformed(node, env.coreTypes)) { return false; } final DartType dst = node.type; - if (soundNullSafety && dst.nullability != Nullability.nullable) { + if (dst.nullability != Nullability.nullable) { final nullableDst = dst.withDeclaredNullability(Nullability.nullable); return env.isSubtypeOf( operandStaticType, nullableDst, SubtypeCheckMode.withNullabilities); diff --git a/pkg/vm/lib/native_assets/synthesizer.dart b/pkg/vm/lib/native_assets/synthesizer.dart index 7f36ae5a53d..4d8321a3dc9 100644 --- a/pkg/vm/lib/native_assets/synthesizer.dart +++ b/pkg/vm/lib/native_assets/synthesizer.dart @@ -50,7 +50,6 @@ class NativeAssetsSynthesizer { /// The VM consumes this component in runtime/vm/ffi/native_assets.cc. static Library synthesizeLibrary( Map nativeAssetsYaml, { - nonNullableByDefaultCompiledMode = NonNullableByDefaultCompiledMode.Strong, Class? pragmaClass, }) { // We don't need the format-version in the VM. @@ -72,10 +71,7 @@ class NativeAssetsSynthesizer { pragmaOptions.fieldReference: nativeAssetsConstant, })) ], - ) - ..nonNullableByDefaultCompiledMode = nonNullableByDefaultCompiledMode - ..isNonNullableByDefault = nonNullableByDefaultCompiledMode == - NonNullableByDefaultCompiledMode.Strong; + ); } /// Loads [nativeAssetsYamlString], validates the contents, and synthesizes @@ -87,8 +83,6 @@ class NativeAssetsSynthesizer { static Future synthesizeLibraryFromYamlString( String? nativeAssetsYamlString, ErrorDetector errorDetector, { - NonNullableByDefaultCompiledMode nonNullableByDefaultCompiledMode = - NonNullableByDefaultCompiledMode.Strong, Class? pragmaClass, }) async { if (nativeAssetsYamlString == null) { @@ -102,7 +96,6 @@ class NativeAssetsSynthesizer { } return NativeAssetsSynthesizer.synthesizeLibrary( nativeAssetsYaml, - nonNullableByDefaultCompiledMode: nonNullableByDefaultCompiledMode, pragmaClass: pragmaClass, ); } @@ -116,8 +109,6 @@ class NativeAssetsSynthesizer { static Future synthesizeLibraryFromYamlFile( Uri? nativeAssetsUri, ErrorDetector errorDetector, { - NonNullableByDefaultCompiledMode nonNullableByDefaultCompiledMode = - NonNullableByDefaultCompiledMode.Strong, Class? pragmaClass, }) async { if (nativeAssetsUri == null) { @@ -138,7 +129,6 @@ class NativeAssetsSynthesizer { return synthesizeLibraryFromYamlString( nativeAssetsYamlString, errorDetector, - nonNullableByDefaultCompiledMode: nonNullableByDefaultCompiledMode, pragmaClass: pragmaClass, ); } diff --git a/pkg/vm/lib/testing/il_matchers.dart b/pkg/vm/lib/testing/il_matchers.dart index 3b316df7400..5990b7c833c 100644 --- a/pkg/vm/lib/testing/il_matchers.dart +++ b/pkg/vm/lib/testing/il_matchers.dart @@ -28,8 +28,6 @@ class FlowGraph { codegenBlockOrder = codegenBlockOrder?.map((idx) => _blocks[idx as int]).toList(); - bool get soundNullSafety => flags['nnbd']; - PrettyPrinter get printer => PrettyPrinter(descriptors); List blocks({bool inCodegenBlockOrder = false}) { diff --git a/pkg/vm/lib/transformations/type_flow/analysis.dart b/pkg/vm/lib/transformations/type_flow/analysis.dart index 4012ac46a81..4d0d254422e 100644 --- a/pkg/vm/lib/transformations/type_flow/analysis.dart +++ b/pkg/vm/lib/transformations/type_flow/analysis.dart @@ -1358,7 +1358,7 @@ class _ClassHierarchyCache extends TypeHierarchy { getTFClass(coreTypes.deprecatedNullClass); _ClassHierarchyCache(this._typeFlowAnalysis, this.genericInterfacesInfo, - super.coreTypes, super.target, super.soundNullSafety) + super.coreTypes, super.target) : objectNoSuchMethod = coreTypes.index.getProcedure('dart:core', 'Object', 'noSuchMethod'); @@ -1753,8 +1753,8 @@ class TypeFlowAnalysis : annotationMatcher = matcher ?? new ConstantPragmaAnnotationParser(coreTypes, target) { nativeCodeOracle = new NativeCodeOracle(libraryIndex, annotationMatcher); - hierarchyCache = new _ClassHierarchyCache(this, _genericInterfacesInfo, - coreTypes, target, target.flags.soundNullSafety); + hierarchyCache = new _ClassHierarchyCache( + this, _genericInterfacesInfo, coreTypes, target); summaryCollector = new SummaryCollector( target, environment, diff --git a/pkg/vm/lib/transformations/type_flow/signature_shaking.dart b/pkg/vm/lib/transformations/type_flow/signature_shaking.dart index 6c99ffa5c2e..37977d77cc9 100644 --- a/pkg/vm/lib/transformations/type_flow/signature_shaking.dart +++ b/pkg/vm/lib/transformations/type_flow/signature_shaking.dart @@ -190,12 +190,7 @@ class _ParameterInfo { } // Covariant parameters have implicit type checks, which count as reads. - // When run in weak mode with null assertions enabled, parameters with - // non-nullable types have implicit null checks, which count as reads. - if ((param.isCovariantByDeclaration || param.isCovariantByClass) || - (!shaker.typeFlowAnalysis.target.flags.soundNullSafety && - param.type.nullability == Nullability.nonNullable && - (type == null || type is NullableType))) { + if (param.isCovariantByDeclaration || param.isCovariantByClass) { isChecked = true; } diff --git a/pkg/vm/lib/transformations/type_flow/transformer.dart b/pkg/vm/lib/transformations/type_flow/transformer.dart index 5266ace7d53..8de98411e4d 100644 --- a/pkg/vm/lib/transformations/type_flow/transformer.dart +++ b/pkg/vm/lib/transformations/type_flow/transformer.dart @@ -1773,12 +1773,7 @@ class _TreeShakerPass1 extends RemovingTransformer { } } final right = transform(node.right); - // Without sound null safety arguments of logical expression - // are implicitly checked for null, so transform the node only - // if using sound null safety or it evaluates to a bool literal. - if (_isExtendedBoolLiteral(left) && - (shaker.typeFlowAnalysis.target.flags.soundNullSafety || - _isExtendedBoolLiteral(right))) { + if (_isExtendedBoolLiteral(left)) { return _evaluateArguments([left], right); } node.left = left..parent = node; diff --git a/pkg/vm/lib/transformations/type_flow/types.dart b/pkg/vm/lib/transformations/type_flow/types.dart index 0b986e1407c..77e90fdfbc3 100644 --- a/pkg/vm/lib/transformations/type_flow/types.dart +++ b/pkg/vm/lib/transformations/type_flow/types.dart @@ -193,9 +193,8 @@ abstract class GenericInterfacesInfo { abstract class TypesBuilder { final CoreTypes coreTypes; final Target target; - final bool soundNullSafety; - TypesBuilder(this.coreTypes, this.target, this.soundNullSafety); + TypesBuilder(this.coreTypes, this.target); /// Return [TFClass] corresponding to the given [classNode]. TFClass getTFClass(Class classNode); @@ -259,7 +258,7 @@ abstract class TypesBuilder { } else { throw 'Unexpected type ${type.runtimeType} $type'; } - if (soundNullSafety && type.nullability == Nullability.nonNullable) { + if (type.nullability == Nullability.nonNullable) { canBeNull = false; } if (canBeNull) { @@ -276,8 +275,7 @@ abstract class RuntimeTypeTranslator { /// Abstract interface to type hierarchy information used by types. abstract class TypeHierarchy extends TypesBuilder implements GenericInterfacesInfo { - TypeHierarchy(CoreTypes coreTypes, Target target, bool soundNullSafety) - : super(coreTypes, target, soundNullSafety); + TypeHierarchy(CoreTypes coreTypes, Target target) : super(coreTypes, target); /// Test if [sub] is a subtype of [sup]. bool isSubtype(Class sub, Class sup) { @@ -465,8 +463,7 @@ class NullableType extends Type { TypeHierarchy typeHierarchy, RuntimeType other, SubtypeTestKind kind) { switch (kind) { case SubtypeTestKind.Subtype: - if (typeHierarchy.soundNullSafety && - other.nullability == Nullability.nonNullable) { + if (other.nullability == Nullability.nonNullable) { return false; } break; @@ -1591,8 +1588,7 @@ class RuntimeType extends Type { throw 'RuntimeType could be only tested for subtyping.'; } final rhs = runtimeType._type; - if (typeHierarchy.soundNullSafety && - _type.nullability == Nullability.nullable && + if (_type.nullability == Nullability.nullable && rhs.nullability == Nullability.nonNullable) { return false; } diff --git a/pkg/vm/lib/transformations/unreachable_code_elimination.dart b/pkg/vm/lib/transformations/unreachable_code_elimination.dart index bf3d9c27a3c..1fe0706d87b 100644 --- a/pkg/vm/lib/transformations/unreachable_code_elimination.dart +++ b/pkg/vm/lib/transformations/unreachable_code_elimination.dart @@ -16,21 +16,18 @@ import 'vm_constant_evaluator.dart' show VMConstantEvaluator; /// applied to certain types of expressions (currently only StaticGet). Component transformComponent(Target target, Component component, VMConstantEvaluator evaluator, bool enableAsserts) { - SimpleUnreachableCodeElimination(evaluator, - enableAsserts: enableAsserts, - soundNullSafety: target.flags.soundNullSafety) + SimpleUnreachableCodeElimination(evaluator, enableAsserts: enableAsserts) .visitComponent(component, null); return component; } class SimpleUnreachableCodeElimination extends RemovingTransformer { - final bool soundNullSafety; final bool enableAsserts; final VMConstantEvaluator constantEvaluator; StaticTypeContext? _staticTypeContext; SimpleUnreachableCodeElimination(this.constantEvaluator, - {required this.enableAsserts, required this.soundNullSafety}); + {required this.enableAsserts}); Never _throwPlatformConstError(Member node, String message) { final uri = constantEvaluator.getFileUri(node); @@ -154,18 +151,11 @@ class SimpleUnreachableCodeElimination extends RemovingTransformer { // Because of short-circuiting, these operators cannot be treated as // symmetric, so a non-constant left and a constant right is left as-is. if (value == null) return node; - // If the RHS is not a known constant and may evaluate to null, then - // we must keep the whole node if the LHS does not short circuit, as the - // operator performs a null check on the RHS value. - final evaluateRight = - soundNullSafety || _getBoolConstantValue(node.right) != null - ? node.right - : node; switch (node.operatorEnum) { case LogicalExpressionOperator.OR: - return value ? node.left : evaluateRight; + return value ? node.left : node.right; case LogicalExpressionOperator.AND: - return value ? evaluateRight : node.left; + return value ? node.right : node.left; } } diff --git a/pkg/vm/lib/transformations/vm_constant_evaluator.dart b/pkg/vm/lib/transformations/vm_constant_evaluator.dart index 6cfb775fc82..67d6b1c6b7e 100644 --- a/pkg/vm/lib/transformations/vm_constant_evaluator.dart +++ b/pkg/vm/lib/transformations/vm_constant_evaluator.dart @@ -9,7 +9,6 @@ import 'package:kernel/target/targets.dart' show ConstantsBackend, DartLibrarySupport, Target; import 'package:kernel/type_environment.dart'; -import 'package:front_end/src/base/nnbd_mode.dart'; import 'package:front_end/src/fasta/kernel/constant_evaluator.dart' show ConstantEvaluator, ErrorReporter, EvaluationMode, SimpleErrorReporter; @@ -44,8 +43,7 @@ class VMConstantEvaluator extends ConstantEvaluator { this._pragmaParser, {bool enableTripleShift = false, bool enableAsserts = true, - bool errorOnUnevaluatedConstant = false, - EvaluationMode evaluationMode = EvaluationMode.weak}) + bool errorOnUnevaluatedConstant = false}) : _platformClass = typeEnvironment.coreTypes.platformClass, super(dartLibrarySupport, backend, component, environmentDefines, typeEnvironment, errorReporter, @@ -55,7 +53,7 @@ class VMConstantEvaluator extends ConstantEvaluator { enableConstFunctions: true, enableAsserts: enableAsserts, errorOnUnevaluatedConstant: errorOnUnevaluatedConstant, - evaluationMode: evaluationMode) { + evaluationMode: EvaluationMode.strong) { // Only add Platform fields if the Platform class is part of the component // being evaluated. if (_targetOS != null && _platformClass != null) { @@ -66,7 +64,7 @@ class VMConstantEvaluator extends ConstantEvaluator { } static VMConstantEvaluator create( - Target target, Component component, TargetOS? targetOS, NnbdMode nnbdMode, + Target target, Component component, TargetOS? targetOS, {bool evaluateAnnotations = true, bool enableTripleShift = false, bool enableConstructorTearOff = false, @@ -96,8 +94,7 @@ class VMConstantEvaluator extends ConstantEvaluator { ConstantPragmaAnnotationParser(coreTypes, target), enableTripleShift: enableTripleShift, enableAsserts: enableAsserts, - errorOnUnevaluatedConstant: errorOnUnevaluatedConstant, - evaluationMode: EvaluationMode.fromNnbdMode(nnbdMode)); + errorOnUnevaluatedConstant: errorOnUnevaluatedConstant); } bool get _hasTargetOS => _targetOS != null; diff --git a/pkg/vm/test/common_test_utils.dart b/pkg/vm/test/common_test_utils.dart index b8402e5a0d7..fe55641eccf 100644 --- a/pkg/vm/test/common_test_utils.dart +++ b/pkg/vm/test/common_test_utils.dart @@ -13,7 +13,6 @@ import 'package:front_end/src/api_unstable/vm.dart' computePlatformBinariesLocation, kernelForModule, kernelForProgram, - NnbdMode, parseExperimentalArguments, parseExperimentalFlags; import 'package:kernel/ast.dart'; @@ -47,7 +46,6 @@ Future compileTestCaseToKernelProgram(Uri sourceUri, ..additionalDills = [platformKernel] ..environmentDefines = environmentDefines ..packagesFileUri = packagesFileUri - ..nnbdMode = NnbdMode.Strong ..explicitExperimentalFlags = parseExperimentalFlags(parseExperimentalArguments(experimentalFlags), onError: (String message) { diff --git a/pkg/vm/test/incremental_compiler_test.dart b/pkg/vm/test/incremental_compiler_test.dart index 9771e531662..bf14a4bfbad 100644 --- a/pkg/vm/test/incremental_compiler_test.dart +++ b/pkg/vm/test/incremental_compiler_test.dart @@ -13,7 +13,6 @@ import 'package:front_end/src/api_unstable/vm.dart' DiagnosticMessage, ExperimentalFlag, IncrementalCompilerResult, - NnbdMode, computePlatformBinariesLocation; import 'package:json_rpc_2/json_rpc_2.dart' as json_rpc; import 'package:kernel/binary/ast_to_binary.dart'; @@ -37,7 +36,6 @@ main() { CompilerOptions getFreshOptions() { return new CompilerOptions() ..sdkRoot = sdkRoot - ..nnbdMode = NnbdMode.Strong ..target = new VmTarget(new TargetFlags()) ..additionalDills = [platformKernel] ..onDiagnostic = (DiagnosticMessage message) { diff --git a/pkg/vm/test/modular_kernel_plus_aot_test.dart b/pkg/vm/test/modular_kernel_plus_aot_test.dart index c9875a5ef81..e0d6434db99 100644 --- a/pkg/vm/test/modular_kernel_plus_aot_test.dart +++ b/pkg/vm/test/modular_kernel_plus_aot_test.dart @@ -28,8 +28,7 @@ main() async { final Uri packagesFile = sdkRootFile('.dart_tool/package_config.json'); final Uri librariesFile = sdkRootFile('sdk/lib/libraries.json'); - final vmTarget = - VmTarget(TargetFlags(supportMirrors: false, soundNullSafety: true)); + final vmTarget = VmTarget(TargetFlags(supportMirrors: false)); await withTempDirectory((Uri uri) async { final mixinFilename = uri.resolve('mixin.dart'); diff --git a/pkg/vm/test/transformations/mixin_deduplication_test.dart b/pkg/vm/test/transformations/mixin_deduplication_test.dart index 52c46d5eda3..95e35faee57 100644 --- a/pkg/vm/test/transformations/mixin_deduplication_test.dart +++ b/pkg/vm/test/transformations/mixin_deduplication_test.dart @@ -16,7 +16,7 @@ import '../common_test_utils.dart'; final String pkgVmDir = Platform.script.resolve('../..').toFilePath(); runTestCase(Uri source) async { - final target = VmTarget(new TargetFlags(soundNullSafety: true)); + final target = VmTarget(new TargetFlags()); final component = await compileTestCaseToKernelProgram(source, target: target); transformComponent(component); diff --git a/pkg/vm/test/transformations/type_flow/summary_collector_test.dart b/pkg/vm/test/transformations/type_flow/summary_collector_test.dart index d9c7bd1ca23..e495b8e9a07 100644 --- a/pkg/vm/test/transformations/type_flow/summary_collector_test.dart +++ b/pkg/vm/test/transformations/type_flow/summary_collector_test.dart @@ -32,7 +32,7 @@ class FakeTypesBuilder extends TypesBuilder { int _classIdCounter = 0; FakeTypesBuilder(CoreTypes coreTypes, Target target) - : super(coreTypes, target, /*soundNullSafety=*/ true); + : super(coreTypes, target); @override TFClass getTFClass(Class c) => diff --git a/pkg/vm/test/transformations/type_flow/types_test.dart b/pkg/vm/test/transformations/type_flow/types_test.dart index 55a16386a8b..36b990621cd 100644 --- a/pkg/vm/test/transformations/type_flow/types_test.dart +++ b/pkg/vm/test/transformations/type_flow/types_test.dart @@ -19,7 +19,7 @@ class TestTypeHierarchy extends TypeHierarchy { TestTypeHierarchy( CoreTypes coreTypes, Target target, this.classes, this.specializations) - : super(coreTypes, target, /*soundNullSafety=*/ true); + : super(coreTypes, target); @override Type specializeTypeCone(TFClass base, {bool allowWideCone = false}) { diff --git a/pkg/vm/test/transformations/unreachable_code_elimination_test.dart b/pkg/vm/test/transformations/unreachable_code_elimination_test.dart index 266ad9b3135..ffe63446587 100644 --- a/pkg/vm/test/transformations/unreachable_code_elimination_test.dart +++ b/pkg/vm/test/transformations/unreachable_code_elimination_test.dart @@ -4,7 +4,6 @@ import 'dart:io'; -import 'package:front_end/src/base/nnbd_mode.dart'; import 'package:kernel/target/targets.dart'; import 'package:kernel/ast.dart'; import 'package:kernel/kernel.dart'; @@ -23,19 +22,15 @@ runTestCase(Uri source) async { // Do not perform constant evaluation for a specific target operating system. final targetOS = null; final enableAsserts = false; - final soundNullSafety = true; - final nnbdMode = NnbdMode.Strong; - final target = - new VmTarget(new TargetFlags(soundNullSafety: soundNullSafety)); + final target = new VmTarget(new TargetFlags()); Component component = await compileTestCaseToKernelProgram(source, target: target, environmentDefines: { 'test.define.isTrue': 'true', 'test.define.isFalse': 'false' }); - final evaluator = VMConstantEvaluator.create( - target, component, targetOS, nnbdMode, + final evaluator = VMConstantEvaluator.create(target, component, targetOS, enableAsserts: enableAsserts); component = transformComponent(target, component, evaluator, enableAsserts); verifyComponent( diff --git a/pkg/vm/test/transformations/vm_constant_evaluator_test.dart b/pkg/vm/test/transformations/vm_constant_evaluator_test.dart index b7a893c66d8..de69305db44 100644 --- a/pkg/vm/test/transformations/vm_constant_evaluator_test.dart +++ b/pkg/vm/test/transformations/vm_constant_evaluator_test.dart @@ -81,10 +81,7 @@ class TestOptions { } runTestCase(Uri source, TestCase testCase) async { - final soundNullSafety = true; - final nnbdMode = NnbdMode.Strong; - final target = - new VmTarget(new TargetFlags(soundNullSafety: soundNullSafety)); + final target = new VmTarget(new TargetFlags()); Component component = await compileTestCaseToKernelProgram(source, target: target, environmentDefines: { @@ -93,8 +90,7 @@ runTestCase(Uri source, TestCase testCase) async { }); final reporter = TestErrorReporter(); - final evaluator = VMConstantEvaluator.create( - target, component, testCase.os, nnbdMode, + final evaluator = VMConstantEvaluator.create(target, component, testCase.os, enableAsserts: testCase.enableAsserts, errorReporter: reporter); late String actual; if (testCase.throws) { diff --git a/runtime/tests/vm/dart/error_messages_in_null_checks_test.dart b/runtime/tests/vm/dart/error_messages_in_null_checks_test.dart index 30e08eff0b4..6fb5a075f1c 100644 --- a/runtime/tests/vm/dart/error_messages_in_null_checks_test.dart +++ b/runtime/tests/vm/dart/error_messages_in_null_checks_test.dart @@ -87,17 +87,7 @@ main(List args) { e.toString().startsWith( 'NoSuchMethodError: The method \'+\' was called on null.')); - Expect.throws( - () => 9.81 - doubleNull, - (e) => hasUnsoundNullSafety - ? (e is NoSuchMethodError && - // If '-' is specialized. - (e.toString().startsWith( - 'NoSuchMethodError: The method \'-\' was called on null.') || - // If '-' is not specialized, it calls toDouble() internally. - e.toString().startsWith( - 'NoSuchMethodError: The method \'toDouble\' was called on null.'))) - : (e is TypeError)); + Expect.throws(() => 9.81 - doubleNull, (e) => e is TypeError); Expect.throws( () => intNull * 7, diff --git a/runtime/tests/vm/dart/flutter_regress_91370_il_test.dart b/runtime/tests/vm/dart/flutter_regress_91370_il_test.dart index bc5c327ff54..aff02f88b57 100644 --- a/runtime/tests/vm/dart/flutter_regress_91370_il_test.dart +++ b/runtime/tests/vm/dart/flutter_regress_91370_il_test.dart @@ -617,12 +617,7 @@ void matchIL$testNarrowingThroughIndexedLoadFromGrowableArray( match.Redefinition('this'), // This redefinition was inserted by load forwarding. 'a.data[0]*' << match.Redefinition('a.data[0]'), - if (!beforeLICM.soundNullSafety) - 'a.data[0]*!' << match.CheckNull('a.data[0]*'), - 'a.data[0].str' << - match.LoadField( - beforeLICM.soundNullSafety ? 'a.data[0]*' : 'a.data[0]*!', - slot: 'str'), + 'a.data[0].str' << match.LoadField('a.data[0]*', slot: 'str'), ]), ]); @@ -649,12 +644,7 @@ void matchIL$testNarrowingThroughIndexedLoadFromGrowableArray( ]), 'B3' << match.block('Target', [ - if (!beforeLICM.soundNullSafety) - 'a.data[0]!' << match.CheckNull('a.data[0]'), - 'a.data[0].str' << - match.LoadField( - beforeLICM.soundNullSafety ? 'a.data[0]' : 'a.data[0]!', - slot: 'str'), + 'a.data[0].str' << match.LoadField('a.data[0]', slot: 'str'), ]), ], env: env); } @@ -692,10 +682,7 @@ void matchIL$testNarrowingThroughIndexedLoadFromFixedArray( match.Redefinition('this'), // This redefinition was inserted by load forwarding. 'a[0]*' << match.Redefinition('a[0]'), - if (!beforeLICM.soundNullSafety) 'a[0]*!' << match.CheckNull('a[0]*'), - 'a[0].str' << - match.LoadField(beforeLICM.soundNullSafety ? 'a[0]*' : 'a[0]*!', - slot: 'str'), + 'a[0].str' << match.LoadField('a[0]*', slot: 'str'), ]), ]); @@ -721,10 +708,7 @@ void matchIL$testNarrowingThroughIndexedLoadFromFixedArray( ]), 'B3' << match.block('Target', [ - if (!beforeLICM.soundNullSafety) 'a[0]!' << match.CheckNull('a[0]'), - 'a[0].str' << - match.LoadField(beforeLICM.soundNullSafety ? 'a[0]' : 'a[0]!', - slot: 'str'), + 'a[0].str' << match.LoadField('a[0]', slot: 'str'), ]), ], env: env); } diff --git a/runtime/tests/vm/dart/null_checks_with_dwarf_stack_traces_test.dart b/runtime/tests/vm/dart/null_checks_with_dwarf_stack_traces_test.dart index 7a87925d72d..98b2e94ee09 100644 --- a/runtime/tests/vm/dart/null_checks_with_dwarf_stack_traces_test.dart +++ b/runtime/tests/vm/dart/null_checks_with_dwarf_stack_traces_test.dart @@ -52,10 +52,7 @@ main(List args) { Expect.throws(() => doubleNull + 2.17, (e) => e is NoSuchMethodError); - Expect.throws( - () => 9.81 - doubleNull, - (e) => - hasUnsoundNullSafety ? (e is NoSuchMethodError) : (e is TypeError)); + Expect.throws(() => 9.81 - doubleNull, (e) => (e is TypeError)); Expect.throws(() => intNull * 7, (e) => e is NoSuchMethodError); } diff --git a/runtime/tests/vm/dart/spawn_uri_from_kernel_blob_test.dart b/runtime/tests/vm/dart/spawn_uri_from_kernel_blob_test.dart index 9ce3578d391..e2e3a0a8af6 100644 --- a/runtime/tests/vm/dart/spawn_uri_from_kernel_blob_test.dart +++ b/runtime/tests/vm/dart/spawn_uri_from_kernel_blob_test.dart @@ -22,7 +22,7 @@ main() async { final sourceUri = Platform.script.resolve('spawn_uri_from_kernel_blob_script.dart'); final options = new CompilerOptions() - ..target = VmTarget(TargetFlags(soundNullSafety: hasSoundNullSafety)) + ..target = VmTarget(TargetFlags()) ..additionalDills = [Uri.file(platformDill)] ..environmentDefines = {} ..nnbdMode = hasSoundNullSafety ? NnbdMode.Strong : NnbdMode.Weak diff --git a/runtime/tests/vm/dart/transferable_throws_test.dart b/runtime/tests/vm/dart/transferable_throws_test.dart index c01459a3078..06b105c85e7 100644 --- a/runtime/tests/vm/dart/transferable_throws_test.dart +++ b/runtime/tests/vm/dart/transferable_throws_test.dart @@ -99,15 +99,8 @@ main() async { throwsIfCumulativeListIsTooLargeOn32bitPlatform(); dynamic myNull; - if (hasUnsoundNullSafety) { - Expect.throwsArgumentError(() => TransferableTypedData.fromList(myNull)); - Expect.throwsArgumentError(() => TransferableTypedData.fromList([myNull])); - Expect.throwsArgumentError( - () => TransferableTypedData.fromList(MyList())); - } else { - Expect.throwsTypeError(() => TransferableTypedData.fromList(myNull)); - Expect.throwsTypeError(() => TransferableTypedData.fromList([myNull])); - Expect.throwsTypeError( - () => TransferableTypedData.fromList(MyList())); - } + Expect.throwsTypeError(() => TransferableTypedData.fromList(myNull)); + Expect.throwsTypeError(() => TransferableTypedData.fromList([myNull])); + Expect.throwsTypeError( + () => TransferableTypedData.fromList(MyList())); }