| library; |
| import self as self; |
| import "dart:core" as core; |
| |
| static method test1(dynamic x) → dynamic { |
| core::int i; |
| { |
| hoisted dynamic i; |
| { |
| final synthesized dynamic #0#0 = x as{TypeError,ForDynamic} core::List<dynamic>; |
| if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t1 = i = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true))) |
| throw{for-error-handling} new core::StateError::•("Pattern matching error"); |
| } |
| final dynamic #t2 = i; |
| for (dynamic i = #t2; true; ) { |
| return i; |
| } |
| } |
| } |
| static method test2(dynamic x) → dynamic { |
| { |
| hoisted core::int i; |
| { |
| final synthesized dynamic #0#0 = x as{TypeError,ForDynamic} core::List<core::int>; |
| synthesized dynamic #0#6; |
| synthesized core::bool #0#6#isSet = false; |
| if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t4 = i = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t5 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)))) |
| throw{for-error-handling} new core::StateError::•("Pattern matching error"); |
| } |
| final core::int #t6 = i; |
| for (core::int i = #t6; i.{core::num::<}(3){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) { |
| core::int i = 1.{core::int::unary-}(){() → core::int}; |
| return i; |
| } |
| } |
| } |
| static method test3(dynamic x) → dynamic { |
| core::List<() → core::int> functions = core::_GrowableList::•<() → core::int>(0); |
| { |
| hoisted core::int i; |
| { |
| final synthesized dynamic #0#0 = x as{TypeError,ForDynamic} core::List<core::int>; |
| synthesized dynamic #0#6; |
| synthesized core::bool #0#6#isSet = false; |
| if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t7 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t8 = i = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t9 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)))) |
| throw{for-error-handling} new core::StateError::•("Pattern matching error"); |
| } |
| final core::int #t10 = i; |
| for (core::int i = #t10; i.{core::num::<}(5){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) { |
| functions.{core::List::add}(() → core::int => i){(() → core::int) → void}; |
| } |
| } |
| return functions.{core::Iterable::map}<core::int>((() → core::int f) → core::int => f(){() → core::int}){((() → core::int) → core::int) → core::Iterable<core::int>}.{core::Iterable::fold}<core::int>(0, (core::int a, core::int x) → core::int => a.{core::num::+}(x){(core::num) → core::int}){(core::int, (core::int, core::int) → core::int) → core::int}; |
| } |
| static method main() → dynamic { |
| self::expectEquals(self::test1(core::_GrowableList::_literal1<core::int>(0)), 0); |
| self::expectThrows(() → void => self::test1("foo")); |
| self::expectEquals(self::test2(core::_GrowableList::_literal1<core::int>(0)), 1.{core::int::unary-}(){() → core::int}); |
| self::expectEquals(self::test3(core::_GrowableList::_literal1<core::int>(0)), 10); |
| } |
| static method expectEquals(dynamic x, dynamic y) → dynamic { |
| if(!(x =={core::Object::==}{(core::Object) → core::bool} y)) { |
| throw "Expected '${x}' to be equal to '${y}'."; |
| } |
| } |
| static method expectThrows(() → void f) → dynamic { |
| core::bool hasThrown = true; |
| try { |
| f(){() → void}; |
| hasThrown = false; |
| } |
| on core::Object catch(final core::Object e) { |
| } |
| if(!hasThrown) { |
| throw "Expected the function to throw."; |
| } |
| } |
| |
| constants { |
| #C1 = 1 |
| } |
| |
| Extra constant evaluation status: |
| Evaluated: InstanceInvocation @ org-dartlang-testcase:///variable_scoping_in_pattern_for_statements.dart:14:13 -> IntConstant(-1) |
| Evaluated: InstanceInvocation @ org-dartlang-testcase:///variable_scoping_in_pattern_for_statements.dart:31:28 -> IntConstant(-1) |
| Extra constant evaluation: evaluated: 143, effectively constant: 2 |