// ĠEXPECT ED _ RE ACH ABLE _ NODES : Ġ 1 0 1 8 Ċ /* Ċ Ġ* ĠCopy Ġof ĠJVM - backend Ġtest Ċ Ġ* ĠFound Ġat : Ġcompiler / testData / codegen / box Inline / anonymous Object / anonymous Object On Declaration Site . 1 . kt Ċ Ġ*/ Ċ Ċ // ĠFILE : Ġfoo . kt Ċ package Ġfoo Ċ Ċ import Ġtest .* Ċ Ċ fun Ġtest 1 (): ĠString Ġ{ ĊĠĠĠ Ġval Ġo Ġ= Ġ" O " ĊĊĠĠĠ Ġval Ġresult Ġ= Ġdo Work Ġ({ o }, Ġ{" K "}, Ġ" GO OD ") ĊĊĠĠĠ Ġreturn Ġresult . get O () Ġ+ Ġresult . get K () Ġ+ Ġresult . getParam () Ċ } Ċ Ċ fun Ġtest 2 () Ġ: ĠString Ġ{ ĊĠĠĠ Ġ// same Ġnames Ġas Ġin Ġobject ĊĠĠĠ Ġval Ġo 1 Ġ= Ġ" O " ĊĠĠĠ Ġval Ġk 1 Ġ= Ġ" K " ĊĊĠĠĠ Ġval Ġresult Ġ= Ġdo Work In Constructor Ġ({ o 1 }, Ġ{ k 1 }, Ġ" GO OD ") ĊĊĠĠĠ Ġreturn Ġresult . get O () Ġ+ Ġresult . get K () Ġ+ Ġresult . getParam () Ċ } Ċ Ċ fun Ġbox () Ġ: ĠString Ġ{ ĊĠĠĠ Ġval Ġresult 1 Ġ= Ġtest 1 (); ĊĠĠĠ Ġif Ġ( result 1 Ġ!= Ġ" OK GO OD ") Ġreturn Ġ" fail 1 Ġ$ result 1 " ĊĊĠĠĠ Ġval Ġresult 2 Ġ= Ġtest 2 (); ĊĠĠĠ Ġif Ġ( result 2 Ġ!= Ġ" OK GO OD ") Ġreturn Ġ" fail 2 Ġ$ result 2 " ĊĊĠĠĠ Ġreturn Ġ" OK " Ċ } ĊĊ Ċ // ĠFILE : Ġtest . kt Ċ package Ġtest ĊĊ Ċ abstract Ġclass ĠA < R > Ġ{ ĊĠĠĠ Ġabstract Ġfun Ġget O () Ġ: ĠR ĊĊĠĠĠ Ġabstract Ġfun Ġget K () Ġ: ĠR ĊĊĠĠĠ Ġabstract Ġfun Ġget Param () Ġ: ĠR Ċ } Ċ Ċ inline Ġfun Ġ< R > Ġdo Work ( cross inline Ġjob O : Ġ() -> ĠR , Ġcross inline Ġjob K : Ġ() -> ĠR , Ġparam : ĠR ) Ġ: ĠA < R > Ġ{ ĊĠĠĠ Ġval Ġs Ġ= Ġobject Ġ: ĠA < R >() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget O (): ĠR Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġjob O () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget K (): ĠR Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ Ġjob K () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Param (): ĠR Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġparam ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġs ; Ċ } Ċ Ċ inline Ġfun Ġ< R > Ġdo Work In Constructor ( cross inline Ġjob O : Ġ() -> ĠR , Ġcross inline Ġjob K : Ġ() -> ĠR , Ġparam : ĠR ) Ġ: ĠA < R > Ġ{ ĊĠĠĠ Ġval Ġs Ġ= Ġobject Ġ: ĠA < R >() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġp Ġ= Ġparam ; ĊĊĠĠĠĠĠĠĠ Ġval Ġo 1 Ġ= Ġjob O () ĊĊĠĠĠĠĠĠĠ Ġval Ġk 1 Ġ= Ġjob K () ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget O (): ĠR Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġo 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget K (): ĠR Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġk 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Param (): ĠR Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġp ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġs ; Ċ }