package Ġcross inline Literal Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ Ġcall From TopLevel () ĊĠĠĠ ĠA (). call From Class () ĊĠĠĠ ĠA . call From Companion () ĊĠĠĠ Ġgeneric Call () Ċ } Ċ Ċ fun Ġcall From TopLevel () Ġ{ ĊĠĠĠ Ġsimple Call Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Breakpoint ! ĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsimple Call ( fun ( i ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Breakpoint ! ĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġ 1 ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġlambda Call Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Breakpoint ! ĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġlambda Call ( fun ( i ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Breakpoint ! ĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġ 1 ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġin lined Lambda Call Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Breakpoint ! ĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġobject Call Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Breakpoint ! ĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġmultiple Cross Inline ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Breakpoint ! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Breakpoint ! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠ Ġlambda In In lined Lambda Call Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Breakpoint ! ĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġ 1 ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠA Ġ{ ĊĠĠĠ Ġfun Ġcall From Class () Ġ{ ĊĠĠĠĠĠĠĠ Ġobject Call Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Breakpoint ! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġcall From Companion () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Call Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Breakpoint ! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ inline Ġfun Ġsimple Call ( cross inline Ġf : Ġ( Int ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġ// Breakpoint ! ĊĠĠĠ Ġf ( 1 ) Ċ } Ċ Ċ inline Ġfun Ġlambda Call ( cross inline Ġf : Ġ( Int ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġval Ġa Ġ= Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Breakpoint ! ĊĠĠĠĠĠĠĠ Ġf ( 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġa . invoke () Ċ } Ċ Ċ inline Ġfun Ġin lined Lambda Call ( cross inline Ġf : Ġ( Int ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Breakpoint ! ĊĠĠĠĠĠĠĠ Ġf ( 1 ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ inline Ġfun Ġobject Call ( cross inline Ġf : Ġ( Int ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġval Ġa Ġ= Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Breakpoint ! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġobj Fun () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Breakpoint ! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġa : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Breakpoint ! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġa . obj Fun () ĊĠĠĠ Ġa . a Ċ } Ċ Ċ inline Ġfun Ġmultiple Cross Inline ( cross inline Ġf 1 : Ġ( Int ) Ġ-> ĠUnit , Ġcross inline Ġf 2 : Ġ( Int ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġval Ġa 1 Ġ= Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Breakpoint ! ĊĠĠĠĠĠĠĠ Ġf 1 ( 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġa 1 . invoke () ĊĊĠĠĠ Ġval Ġa 2 Ġ= Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Breakpoint ! ĊĠĠĠĠĠĠĠ Ġf 2 ( 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġa 2 . invoke () Ċ } Ċ Ċ inline Ġfun Ġlambda In In lined Lambda Call ( cross inline Ġf : Ġ( Int ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Breakpoint ! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ( 1 ) ĊĠĠĠĠĠĠĠ Ġ} () ĊĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġgeneric Call () Ġ{ ĊĠĠĠ Ġtick ( 0 ) Ġ{ Ġ} Ċ } Ċ Ċ fun Ġ< T > Ġback ( f : Ġ() Ġ-> ĠT ) Ġ{ ĊĠĠĠ Ġf () Ċ } Ċ Ċ inline Ġfun Ġ< V > Ġtick ( p : ĠInt , Ġcross inline Ġf : Ġ( Int ) Ġ-> ĠV ) Ġ{ ĊĠĠĠ Ġ// Breakpoint ! ĊĠĠĠ Ġf ( p ) ĊĠĠĠ Ġback Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Breakpoint ! ĊĠĠĠĠĠĠĠ Ġf ( p ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ // ĠRES UME : Ġ 3 7