main = #lib::main; [@vm.bytecode= BytecodeMetadata { Bytecode (version: stable) Main library: #lib Library '#lib' name '#lib' script '#lib' Class '', script = '#lib' Function 'testTryCatch1', static, reflectable, debuggable parameters [] (required: 0) return-type dynamic Bytecode { Entry 4 CheckStack 0 Try #0 start: PushConstant CP#0 DirectCall CP#1, 1 Drop1 Jump L1 Try #0 end: Try #0 handler: SetFrame 4 MoveSpecial exception, r0 MoveSpecial stackTrace, r1 Push r0 PopLocal r2 PushNull PushInt 2 CreateArrayTOS StoreLocal r3 Push r3 PushInt 0 PushConstant CP#4 StoreIndexedTOS Push r3 PushInt 1 Push r2 StoreIndexedTOS DirectCall CP#5, 1 DirectCall CP#1, 1 Drop1 Jump L1 L1: PushNull ReturnTOS } ExceptionsTable { try-index 0, outer -1, start 4, end 14, handler 14, types [CP#3] } ConstantPool { [0] = ObjectRef 'danger!' [1] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names [] [2] = Reserved [3] = Type dynamic [4] = ObjectRef 'caught ' [5] = DirectCall 'dart:core::_StringBase::_interpolate', ArgDesc num-args 1, num-type-args 0, names [] [6] = Reserved } Function 'testTryCatch2', static, reflectable, debuggable parameters [] (required: 0) return-type dynamic Bytecode { Entry 5 CheckStack 0 Try #0 start: PushConstant CP#0 DirectCall CP#1, 1 Drop1 Jump L1 Try #0 end: Try #0 handler: SetFrame 5 MoveSpecial exception, r0 MoveSpecial stackTrace, r1 Push r0 PushConstant CP#3 InterfaceCall CP#4, 2 JumpIfFalse L2 PushConstant CP#6 DirectCall CP#1, 1 Drop1 Jump L1 L2: Push r0 PushConstant CP#7 InterfaceCall CP#4, 2 JumpIfFalse L3 Push r0 PopLocal r2 PushNull PushInt 2 CreateArrayTOS StoreLocal r3 Push r3 PushInt 0 PushConstant CP#8 StoreIndexedTOS Push r3 PushInt 1 Push r2 StoreIndexedTOS DirectCall CP#9, 1 DirectCall CP#1, 1 Drop1 Jump L1 L3: Push r0 PushConstant CP#11 InterfaceCall CP#4, 2 JumpIfFalse L4 Push r0 PopLocal r2 Push r1 PopLocal r3 PushNull PushInt 4 CreateArrayTOS StoreLocal r4 Push r4 PushInt 0 PushConstant CP#12 StoreIndexedTOS Push r4 PushInt 1 Push r2 StoreIndexedTOS Push r4 PushInt 2 PushConstant CP#13 StoreIndexedTOS Push r4 PushInt 3 Push r3 StoreIndexedTOS DirectCall CP#9, 1 DirectCall CP#1, 1 Drop1 Jump L1 L4: Push r0 PopLocal r2 Push r1 PopLocal r3 PushNull PushInt 4 CreateArrayTOS StoreLocal r4 Push r4 PushInt 0 PushConstant CP#15 StoreIndexedTOS Push r4 PushInt 1 Push r2 StoreIndexedTOS Push r4 PushInt 2 PushConstant CP#13 StoreIndexedTOS Push r4 PushInt 3 Push r3 StoreIndexedTOS DirectCall CP#9, 1 DirectCall CP#1, 1 Drop1 Jump L1 L1: PushNull ReturnTOS } ExceptionsTable { try-index 0, outer -1, start 4, end 14, handler 14, needs-stack-trace, types [CP#3, CP#7, CP#11, CP#14] } ConstantPool { [0] = ObjectRef 'danger!' [1] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names [] [2] = Reserved [3] = Type dart:core::TypeError [4] = InterfaceCall 'dart:core::Object::_simpleInstanceOf', ArgDesc num-args 2, num-type-args 0, names [] [5] = Reserved [6] = ObjectRef 'caught type error' [7] = Type dart:core::AssertionError [8] = ObjectRef 'caught assertion error ' [9] = DirectCall 'dart:core::_StringBase::_interpolate', ArgDesc num-args 1, num-type-args 0, names [] [10] = Reserved [11] = Type dart:core::Error [12] = ObjectRef 'caught error ' [13] = ObjectRef ' ' [14] = Type dynamic [15] = ObjectRef 'caught something ' } Function 'testTryCatch3', static, reflectable, debuggable parameters [] (required: 0) return-type dynamic Bytecode { Entry 7 CheckStack 0 AllocateContext 0, 3 PopLocal r0 Push r0 PushInt 1 StoreContextVar 0, 0 Push r0 PopLocal r2 Try #0 start: Push r0 PushInt 2 StoreContextVar 0, 1 AllocateClosure CP#0 StoreLocal r5 Push r5 PushNull StoreFieldTOS CP#8 Push r5 PushNull StoreFieldTOS CP#10 Push r5 PushConstant CP#12 StoreFieldTOS CP#13 Push r5 PushConstant CP#0 StoreFieldTOS CP#15 Push r5 Push r0 StoreFieldTOS CP#1 PopLocal r4 Push r4 DynamicCall CP#18, 1 Drop1 Push r0 LoadContextVar 0, 1 DirectCall CP#4, 1 Drop1 Jump L1 Try #0 end: Try #0 handler: SetFrame 7 Push r2 PopLocal r0 MoveSpecial exception, r2 MoveSpecial stackTrace, r3 Push r2 PopLocal r4 Push r0 Push r3 StoreContextVar 0, 2 PushNull PushInt 4 CreateArrayTOS StoreLocal r5 Push r5 PushInt 0 PushConstant CP#19 StoreIndexedTOS Push r5 PushInt 1 Push r4 StoreIndexedTOS Push r5 PushInt 2 PushConstant CP#20 StoreIndexedTOS Push r5 PushInt 3 Push r0 LoadContextVar 0, 2 StoreIndexedTOS DirectCall CP#21, 1 DirectCall CP#4, 1 Drop1 AllocateClosure CP#23 StoreLocal r5 Push r5 PushNull StoreFieldTOS CP#8 Push r5 PushNull StoreFieldTOS CP#10 Push r5 PushConstant CP#12 StoreFieldTOS CP#13 Push r5 PushConstant CP#23 StoreFieldTOS CP#15 Push r5 Push r0 StoreFieldTOS CP#1 PopLocal r6 Push r6 ReturnTOS L1: Push r0 LoadContextParent PopLocal r0 PushNull ReturnTOS } ExceptionsTable { try-index 0, outer -1, start 20, end 80, handler 80, needs-stack-trace, types [CP#6] } ConstantPool { [0] = ClosureFunction 0 [1] = InstanceField dart:core::_Closure::_context (field) [2] = Reserved [3] = ObjectRef 'danger foo' [4] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names [] [5] = Reserved [6] = Type dynamic [7] = EndClosureFunctionScope [8] = InstanceField dart:core::_Closure::_instantiator_type_arguments (field) [9] = Reserved [10] = InstanceField dart:core::_Closure::_function_type_arguments (field) [11] = Reserved [12] = EmptyTypeArguments [13] = InstanceField dart:core::_Closure::_delayed_type_arguments (field) [14] = Reserved [15] = InstanceField dart:core::_Closure::_function (field) [16] = Reserved [17] = ObjectRef ArgDesc num-args 1, num-type-args 0, names [] [18] = ICData dynamic target-name 'call', arg-desc CP#17 [19] = ObjectRef 'caught ' [20] = ObjectRef ' ' [21] = DirectCall 'dart:core::_StringBase::_interpolate', ArgDesc num-args 1, num-type-args 0, names [] [22] = Reserved [23] = ClosureFunction 1 [24] = ObjectRef 'danger bar' [25] = Type dart:core::Error [26] = InterfaceCall 'dart:core::Object::_simpleInstanceOf', ArgDesc num-args 2, num-type-args 0, names [] [27] = Reserved [28] = ObjectRef 'error ' [29] = ObjectRef ', captured stack trace: ' [30] = EndClosureFunctionScope } Closure #lib::testTryCatch3::'foo' () -> void ClosureCode { EntryFixed 1, 6 CheckStack 0 Push FP[-5] LoadFieldTOS CP#1 PopLocal r0 Push r0 PopLocal r2 Try #0 start: PushConstant CP#3 DirectCall CP#4, 1 Drop1 Jump L1 Try #0 end: Try #0 handler: SetFrame 6 Push r2 PopLocal r0 MoveSpecial exception, r2 MoveSpecial stackTrace, r3 Push r2 PopLocal r4 Push r0 LoadContextVar 0, 0 DirectCall CP#4, 1 Drop1 Push r0 PushInt 3 StoreContextVar 0, 1 Jump L1 L1: PushNull ReturnTOS } Closure #lib::testTryCatch3::'bar' () -> void ClosureCode { EntryFixed 1, 6 CheckStack 0 Push FP[-5] LoadFieldTOS CP#1 PopLocal r0 Push r0 PopLocal r2 Try #0 start: PushConstant CP#24 DirectCall CP#4, 1 Drop1 Jump L1 Try #0 end: Try #0 handler: SetFrame 6 Push r2 PopLocal r0 MoveSpecial exception, r2 MoveSpecial stackTrace, r3 Push r2 PushConstant CP#25 InterfaceCall CP#26, 2 JumpIfFalse L2 Push r2 PopLocal r4 PushNull PushInt 4 CreateArrayTOS StoreLocal r5 Push r5 PushInt 0 PushConstant CP#28 StoreIndexedTOS Push r5 PushInt 1 Push r4 StoreIndexedTOS Push r5 PushInt 2 PushConstant CP#29 StoreIndexedTOS Push r5 PushInt 3 Push r0 LoadContextVar 0, 2 StoreIndexedTOS DirectCall CP#21, 1 DirectCall CP#4, 1 Drop1 Jump L1 L2: Push r2 Push r3 Throw 1 L1: PushNull ReturnTOS } Function 'testRethrow', static, reflectable, debuggable parameters [dart:core::bool 'cond'] (required: 1) return-type dynamic Bytecode { Entry 8 CheckStack 0 Try #0 start: Try #1 start: PushConstant CP#0 DirectCall CP#1, 1 Drop1 Jump L1 Try #1 end: Try #1 handler: SetFrame 8 MoveSpecial exception, r2 MoveSpecial stackTrace, r3 Push r2 PopLocal r4 Try #2 start: PushConstant CP#4 DirectCall CP#1, 1 Drop1 Push FP[-5] AssertBoolean 0 JumpIfFalse L2 Push r2 Push r3 Throw 1 L2: Jump L3 Try #2 end: Try #2 handler: SetFrame 8 MoveSpecial exception, r5 MoveSpecial stackTrace, r6 Push r5 PopLocal r7 PushConstant CP#5 DirectCall CP#1, 1 Drop1 Jump L3 L3: Jump L1 L1: Jump L4 Try #0 end: Try #0 handler: SetFrame 8 MoveSpecial exception, r0 MoveSpecial stackTrace, r1 Push r0 PopLocal r2 Push r1 PopLocal r3 PushConstant CP#6 DirectCall CP#1, 1 Drop1 Push r3 DirectCall CP#1, 1 Drop1 Jump L4 L4: PushNull ReturnTOS } ExceptionsTable { try-index 0, outer -1, start 4, end 80, handler 80, needs-stack-trace, types [CP#3] try-index 1, outer 0, start 4, end 14, handler 14, needs-stack-trace, types [CP#3] try-index 2, outer 0, start 26, end 50, handler 50, types [CP#3] } ConstantPool { [0] = ObjectRef 'try 1 > try 2' [1] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names [] [2] = Reserved [3] = Type dynamic [4] = ObjectRef 'try 1 > catch 2 > try 3' [5] = ObjectRef 'try 1 > catch 2 > catch 3' [6] = ObjectRef 'catch 1' } Function 'testTryFinally1', static, reflectable, debuggable parameters [] (required: 0) return-type dynamic Bytecode { Entry 3 CheckStack 0 PushInt 0 PopLocal r0 L5: CheckStack 1 Push r0 PushInt 10 CompareIntLt JumpIfFalse L1 Try #0 start: Push r0 PushInt 5 CompareIntGt JumpIfFalse L2 Jump L3 L2: Jump L4 Try #0 end: Try #0 handler: SetFrame 3 MoveSpecial exception, r1 MoveSpecial stackTrace, r2 Push r0 DirectCall CP#1, 1 Drop1 Push r1 Push r2 Throw 1 L3: Push r0 DirectCall CP#1, 1 Drop1 Jump L1 L4: Push r0 DirectCall CP#1, 1 Drop1 Push r0 PushInt 1 AddInt StoreLocal r0 Drop1 Jump L5 L1: PushNull ReturnTOS } ExceptionsTable { try-index 0, outer -1, start 19, end 36, handler 36, needs-stack-trace, types [CP#0] } ConstantPool { [0] = Type dynamic [1] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names [] [2] = Reserved } Function 'testTryFinally2', static, reflectable, debuggable parameters [dart:core::int 'x'] (required: 1) return-type dynamic Bytecode { Entry 9 CheckStack 0 AllocateContext 0, 2 PopLocal r0 Push r0 Push FP[-5] StoreContextVar 0, 0 Push r0 LoadContextVar 0, 0 PopLocal r2 Push r2 PushInt 1 InterfaceCall CP#0, 2 JumpIfTrue L1 Push r2 PushInt 2 InterfaceCall CP#0, 2 JumpIfTrue L2 Jump L3 L1: Push r0 PopLocal r3 Try #0 start: PushConstant CP#2 DirectCall CP#3, 1 Drop1 Push r0 PushInt 3 StoreContextVar 0, 1 Push r0 PopLocal r5 Try #1 start: PushConstant CP#5 DirectCall CP#3, 1 Drop1 AllocateClosure CP#6 StoreLocal r8 Push r8 PushNull StoreFieldTOS CP#10 Push r8 PushNull StoreFieldTOS CP#12 Push r8 PushConstant CP#14 StoreFieldTOS CP#15 Push r8 PushConstant CP#6 StoreFieldTOS CP#17 Push r8 Push r0 StoreFieldTOS CP#7 PopLocal r7 Push r7 DynamicCall CP#20, 1 Drop1 Jump L4 Try #1 end: Try #1 handler: SetFrame 9 Push r5 PopLocal r0 MoveSpecial exception, r5 MoveSpecial stackTrace, r6 PushConstant CP#22 DirectCall CP#3, 1 Drop1 Push r5 Push r6 Throw 1 L4: Push r5 PopLocal r0 PushConstant CP#22 DirectCall CP#3, 1 Drop1 Jump L5 Try #0 end: Try #0 handler: SetFrame 9 Push r3 PopLocal r0 MoveSpecial exception, r3 MoveSpecial stackTrace, r4 PushConstant CP#24 DirectCall CP#3, 1 Drop1 Push r3 Push r4 Throw 1 L5: Push r3 PopLocal r0 PushConstant CP#24 DirectCall CP#3, 1 Drop1 Jump L2 L2: PushConstant CP#25 DirectCall CP#3, 1 Drop1 Jump L3 L3: PushNull ReturnTOS } ExceptionsTable { try-index 0, outer -1, start 53, end 158, handler 158, needs-stack-trace, types [CP#21] try-index 1, outer 0, start 70, end 120, handler 120, needs-stack-trace, types [CP#21] } ConstantPool { [0] = InterfaceCall 'dart:core::Object::==', ArgDesc num-args 2, num-type-args 0, names [] [1] = Reserved [2] = ObjectRef 'before try 1' [3] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names [] [4] = Reserved [5] = ObjectRef 'try' [6] = ClosureFunction 0 [7] = InstanceField dart:core::_Closure::_context (field) [8] = Reserved [9] = EndClosureFunctionScope [10] = InstanceField dart:core::_Closure::_instantiator_type_arguments (field) [11] = Reserved [12] = InstanceField dart:core::_Closure::_function_type_arguments (field) [13] = Reserved [14] = EmptyTypeArguments [15] = InstanceField dart:core::_Closure::_delayed_type_arguments (field) [16] = Reserved [17] = InstanceField dart:core::_Closure::_function (field) [18] = Reserved [19] = ObjectRef ArgDesc num-args 1, num-type-args 0, names [] [20] = ICData dynamic target-name 'call', arg-desc CP#19 [21] = Type dynamic [22] = ObjectRef 'finally 1' [23] = ObjectRef 'after try 1' [24] = ObjectRef 'finally 2' [25] = ObjectRef 'case 2' } Closure #lib::testTryFinally2::'foo' () -> void ClosureCode { EntryFixed 1, 2 CheckStack 0 Push FP[-5] LoadFieldTOS CP#7 PopLocal r0 Push r0 LoadContextVar 0, 0 DirectCall CP#3, 1 Drop1 Push r0 LoadContextVar 0, 1 DirectCall CP#3, 1 Drop1 PushNull ReturnTOS } Function 'testTryFinally3', static, reflectable, debuggable parameters [] (required: 0) return-type dynamic Bytecode { Entry 6 CheckStack 0 AllocateContext 0, 1 PopLocal r0 Push r0 PushInt 11 StoreContextVar 0, 0 PushNull PopLocal r2 Push r0 PopLocal r3 Try #0 start: AllocateClosure CP#0 StoreLocal r5 Push r5 PushNull StoreFieldTOS CP#9 Push r5 PushNull StoreFieldTOS CP#11 Push r5 PushConstant CP#13 StoreFieldTOS CP#14 Push r5 PushConstant CP#0 StoreFieldTOS CP#16 Push r5 Push r0 StoreFieldTOS CP#1 PopLocal r2 Jump L1 Try #0 end: Try #0 handler: SetFrame 6 Push r3 PopLocal r0 MoveSpecial exception, r3 MoveSpecial stackTrace, r4 Push r0 LoadContextVar 0, 0 DirectCall CP#3, 1 Drop1 Push r2 DynamicCall CP#19, 1 Drop1 Push r3 Push r4 Throw 1 L1: Push r3 PopLocal r0 Push r0 LoadContextVar 0, 0 DirectCall CP#3, 1 Drop1 Push r2 DynamicCall CP#20, 1 Drop1 Push r0 LoadContextParent PopLocal r0 PushNull ReturnTOS } ExceptionsTable { try-index 0, outer -1, start 23, end 61, handler 61, needs-stack-trace, types [CP#6] } ConstantPool { [0] = ClosureFunction 0 [1] = InstanceField dart:core::_Closure::_context (field) [2] = Reserved [3] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names [] [4] = Reserved [5] = ObjectRef 'try 1' [6] = Type dynamic [7] = ObjectRef 'try 2' [8] = EndClosureFunctionScope [9] = InstanceField dart:core::_Closure::_instantiator_type_arguments (field) [10] = Reserved [11] = InstanceField dart:core::_Closure::_function_type_arguments (field) [12] = Reserved [13] = EmptyTypeArguments [14] = InstanceField dart:core::_Closure::_delayed_type_arguments (field) [15] = Reserved [16] = InstanceField dart:core::_Closure::_function (field) [17] = Reserved [18] = ObjectRef ArgDesc num-args 1, num-type-args 0, names [] [19] = ICData dynamic target-name 'call', arg-desc CP#18 [20] = ICData dynamic target-name 'call', arg-desc CP#18 } Closure #lib::testTryFinally3::'' () -> dart:core::int ClosureCode { EntryFixed 1, 6 CheckStack 0 Push FP[-5] LoadFieldTOS CP#1 PopLocal r0 Push r0 LoadContextVar 0, 0 DirectCall CP#3, 1 Drop1 Push r0 PopLocal r2 Try #0 start: PushConstant CP#5 DirectCall CP#3, 1 Drop1 Jump L1 Try #0 end: Try #0 handler: SetFrame 6 Push r2 PopLocal r0 MoveSpecial exception, r2 MoveSpecial stackTrace, r3 Push r0 PopLocal r4 Try #1 start: PushConstant CP#7 DirectCall CP#3, 1 Drop1 Jump L2 Try #1 end: Try #1 handler: SetFrame 6 Push r4 PopLocal r0 MoveSpecial exception, r4 MoveSpecial stackTrace, r5 Push r0 LoadContextVar 0, 0 DirectCall CP#3, 1 Drop1 Push r4 Push r5 Throw 1 L2: Push r4 PopLocal r0 Push r0 LoadContextVar 0, 0 DirectCall CP#3, 1 Drop1 PushInt 43 ReturnTOS L1: Push r2 PopLocal r0 Push r0 PopLocal r4 Try #2 start: PushConstant CP#7 DirectCall CP#3, 1 Drop1 Jump L3 Try #2 end: Try #2 handler: SetFrame 6 Push r4 PopLocal r0 MoveSpecial exception, r4 MoveSpecial stackTrace, r5 Push r0 LoadContextVar 0, 0 DirectCall CP#3, 1 Drop1 Push r4 Push r5 Throw 1 L3: Push r4 PopLocal r0 Push r0 LoadContextVar 0, 0 DirectCall CP#3, 1 Drop1 PushInt 43 ReturnTOS } Function 'testTryCatchFinally', static, reflectable, debuggable parameters [] (required: 0) return-type dynamic Bytecode { Entry 5 CheckStack 0 Try #0 start: Try #1 start: PushConstant CP#0 DirectCall CP#1, 1 Drop1 Jump L1 Try #1 end: Try #1 handler: SetFrame 5 MoveSpecial exception, r2 MoveSpecial stackTrace, r3 Push r2 PopLocal r4 PushConstant CP#4 DirectCall CP#1, 1 Drop1 Jump L1 L1: Jump L2 Try #0 end: Try #0 handler: SetFrame 5 MoveSpecial exception, r0 MoveSpecial stackTrace, r1 PushConstant CP#5 DirectCall CP#1, 1 Drop1 Push r0 Push r1 Throw 1 L2: PushConstant CP#5 DirectCall CP#1, 1 Drop1 PushNull ReturnTOS } ExceptionsTable { try-index 0, outer -1, start 4, end 40, handler 40, needs-stack-trace, types [CP#3] try-index 1, outer 0, start 4, end 14, handler 14, types [CP#3] } ConstantPool { [0] = ObjectRef 'try' [1] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names [] [2] = Reserved [3] = Type dynamic [4] = ObjectRef 'catch' [5] = ObjectRef 'finally' } Function 'main', static, reflectable, debuggable parameters [] (required: 0) return-type dynamic Bytecode { Entry 0 CheckStack 0 PushNull ReturnTOS } ConstantPool { } } ]library #lib from "#lib" as #lib { static method testTryCatch1() → dynamic { try { dart.core::print("danger!"); } on dynamic catch(final dynamic e) { dart.core::print("caught ${e}"); } } static method testTryCatch2() → dynamic { try { dart.core::print("danger!"); } on dart.core::TypeError catch(no-exception-var) { dart.core::print("caught type error"); } on dart.core::AssertionError catch(final dart.core::AssertionError e) { dart.core::print("caught assertion error ${e}"); } on dart.core::Error catch(final dart.core::Error e, final dart.core::StackTrace st) { dart.core::print("caught error ${e} ${st}"); } on dynamic catch(final dynamic e, final dart.core::StackTrace st) { dart.core::print("caught something ${e} ${st}"); } } static method testTryCatch3() → dynamic { dart.core::int x = 1; try { dart.core::int y = 2; function foo() → void { try { dart.core::print("danger foo"); } on dynamic catch(final dynamic e) { dart.core::print(x); y = 3; } } [@vm.call-site-attributes.metadata=receiverType:() → void] foo.call(); dart.core::print(y); } on dynamic catch(final dynamic e, final dart.core::StackTrace st) { dart.core::print("caught ${e} ${st}"); function bar() → void { try { dart.core::print("danger bar"); } on dart.core::Error catch(final dart.core::Error e) { dart.core::print("error ${e}, captured stack trace: ${st}"); } } return bar; } } static method testRethrow(dart.core::bool cond) → dynamic { try { try { dart.core::print("try 1 > try 2"); } on dynamic catch(final dynamic e) { try { dart.core::print("try 1 > catch 2 > try 3"); if(cond) { rethrow; } } on dynamic catch(final dynamic e) { dart.core::print("try 1 > catch 2 > catch 3"); } } } on dynamic catch(final dynamic e, final dart.core::StackTrace st) { dart.core::print("catch 1"); dart.core::print(st); } } static method testTryFinally1() → dynamic { #L1: for (dart.core::int i = 0; i.{dart.core::num::<}(10); i = i.{dart.core::num::+}(1)) { try { if(i.{dart.core::num::>}(5)) { break #L1; } } finally { dart.core::print(i); } } } static method testTryFinally2(dart.core::int x) → dynamic { #L2: switch(x) { #L3: case 1: { try { dart.core::print("before try 1"); dart.core::int y = 3; try { dart.core::print("try"); function foo() → void { dart.core::print(x); dart.core::print(y); } [@vm.call-site-attributes.metadata=receiverType:() → void] foo.call(); continue #L4; } finally { dart.core::print("finally 1"); } dart.core::print("after try 1"); } finally { dart.core::print("finally 2"); } break #L2; } #L4: case 2: { dart.core::print("case 2"); break #L2; } } } static method testTryFinally3() → dynamic { dart.core::int x = 11; dynamic y; try { y = () → dart.core::int { dart.core::print(x); try { dart.core::print("try 1"); return 42; } finally { try { dart.core::print("try 2"); return 43; } finally { dart.core::print(x); } } }; } finally { dart.core::print(x); [@vm.call-site-attributes.metadata=receiverType:dynamic] y.call(); } } static method testTryCatchFinally() → dynamic { try try { dart.core::print("try"); } on dynamic catch(final dynamic e) { dart.core::print("catch"); } finally { dart.core::print("finally"); } } static method main() → dynamic {} }