// ĠFILE : Ġtest . kt Ċ Ċ inline Ġfun Ġh ( block : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġh Local Ġ= Ġ" h Local " ĊĠĠĠĠĠĠĠ Ġblock () ĊĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġh Ġ= Ġ" h " ĊĠĠĠ Ġ} Ċ } Ċ Ċ inline Ġfun Ġg ( block : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġg Local Ġ= Ġ" g Local " ĊĠĠĠĠĠĠĠ Ġh ( block ) ĊĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġg Ġ= Ġ" g " ĊĠĠĠ Ġ} Ċ } Ċ Ċ var Ġx : ĠString ? Ġ= Ġnull Ċ Ċ fun Ġcompute (): ĠString Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( a Ġin ĠlistOf (" a ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġg Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( b Ġin ĠlistOf (" b ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġb ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠ Ġx Ġ= Ġ" OK " ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġ" FAIL " Ċ } Ċ Ċ fun Ġbox () Ġ{ ĊĠĠĠ Ġval Ġresult Ġ= Ġcompute () ĊĠĠĠ Ġval Ġlocal X Ġ= Ġx Ċ } Ċ Ċ // ĠJVM Ġbackend Ġhas Ġ` a ` Ġvisible Ġin Ġthe Ġ` compute ` Ġfinally Ġblock . ĠIt Ġshouldn 't Ġbe . Ċ // ĠIG NORE _ BACKEND : ĠJVM Ċ Ċ // ĠLOCAL ĠVARIABLE S Ċ // Ġtest . kt : 3 9 Ġbox : Ċ // Ġtest . kt : 2 4 Ġcompute : Ċ // Ġtest . kt : 2 5 Ġcompute : Ċ // Ġtest . kt : 2 6 Ġcompute : Ġa : java . lang . String =" a ": java . lang . String Ċ // Ġtest . kt : 1 3 Ġcompute : Ġa : java . lang . String =" a ": java . lang . String , Ġ$ i $ f $ g : int = 0 : int Ċ // Ġtest . kt : 1 4 Ġcompute : Ġa : java . lang . String =" a ": java . lang . String , Ġ$ i $ f $ g : int = 0 : int Ċ // Ġtest . kt : 1 5 Ġcompute : Ġa : java . lang . String =" a ": java . lang . String , Ġ$ i $ f $ g : int = 0 : int , Ġg Local $ iv : java . lang . String =" g Local ": java . lang . String Ċ // Ġtest . kt : 4 Ġcompute : Ġa : java . lang . String =" a ": java . lang . String , Ġ$ i $ f $ g : int = 0 : int , Ġg Local $ iv : java . lang . String =" g Local ": java . lang . String , Ġ$ i $ f $ h : int = 0 : int Ċ // Ġtest . kt : 5 Ġcompute : Ġa : java . lang . String =" a ": java . lang . String , Ġ$ i $ f $ g : int = 0 : int , Ġg Local $ iv : java . lang . String =" g Local ": java . lang . String , Ġ$ i $ f $ h : int = 0 : int Ċ // Ġtest . kt : 6 Ġcompute : Ġa : java . lang . String =" a ": java . lang . String , Ġ$ i $ f $ g : int = 0 : int , Ġg Local $ iv : java . lang . String =" g Local ": java . lang . String , Ġ$ i $ f $ h : int = 0 : int , Ġh Local $ iv $ iv : java . lang . String =" h Local ": java . lang . String Ċ // Ġtest . kt : 2 7 Ġcompute : Ġa : java . lang . String =" a ": java . lang . String , Ġ$ i $ f $ g : int = 0 : int , Ġg Local $ iv : java . lang . String =" g Local ": java . lang . String , Ġ$ i $ f $ h : int = 0 : int , Ġh Local $ iv $ iv : java . lang . String =" h Local ": java . lang . String , Ġ$ i $ a $- g - Test Kt $ compute $ 1 : int = 0 : int Ċ // Ġtest . kt : 2 8 Ġcompute : Ġa : java . lang . String =" a ": java . lang . String , Ġ$ i $ f $ g : int = 0 : int , Ġg Local $ iv : java . lang . String =" g Local ": java . lang . String , Ġ$ i $ f $ h : int = 0 : int , Ġh Local $ iv $ iv : java . lang . String =" h Local ": java . lang . String , Ġ$ i $ a $- g - Test Kt $ compute $ 1 : int = 0 : int , Ġb : java . lang . String =" b ": java . lang . String Ċ // Ġtest . kt : 8 Ġcompute : Ġa : java . lang . String =" a ": java . lang . String Ċ // Ġtest . kt : 1 7 Ġcompute : Ġa : java . lang . String =" a ": java . lang . String Ċ // Ġtest . kt : 3 3 Ġcompute : Ċ // Ġtest . kt : 3 9 Ġbox : Ċ // Ġtest . kt : 4 0 Ġbox : Ġresult : java . lang . String =" b ": java . lang . String Ċ // Ġtest . kt : 4 1 Ġbox : Ġresult : java . lang . String =" b ": java . lang . String , Ġlocal X : java . lang . String =" OK ": java . lang . String Ċ