package Ġcompiler . unit Ċ Ċ import Ġcompiler . Abstract Compiler Test Ċ import Ġorg . junit . jupiter . api . Test Ċ Ċ internal Ġabstract Ġclass ĠAbstract Unit Co erc ion Test ( ir : ĠBoolean ) Ġ: ĠAbstract Compiler Test ( ir ) Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmember () Ġ= Ġtest Jvm Compile ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġclass ĠTest Data Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Blocking Bridge ĊĠĠĠĠĠĠĠ Ġsuspend Ġfun ĠString . test ( arg : ĠString ) Ġ{ Ġ// Ġreturns ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" receiver ", Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" p 0 ", Ġarg ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġmain (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClass . forName (" TestData "). assert Has Function < Void >(" test ", ĠString :: class . java , ĠString :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" OK " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ """ ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` member Ġnon Ġunit Ġreturn Ġtype `() Ġ= Ġtest Jvm Compile ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġclass ĠTest Data Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Blocking Bridge ĊĠĠĠĠĠĠĠ Ġsuspend Ġfun Ġtest ( arg : ĠString ): ĠString Ġ{ Ġ// Ġreturns ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġmain (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClass . forName (" TestData "). assert Has Function < String >(" test ", ĠString :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" OK " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ """ ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġstatic () Ġ= Ġtest Jvm Compile ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġobject ĠTest Data Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Jvm Blocking Bridge ĊĠĠĠĠĠĠĠ Ġsuspend Ġfun ĠString . test ( arg : ĠString ) Ġ{ Ġ// Ġreturns ĠUnit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġfun Ġmain (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠClass . forName (" TestData "). assert Has Function < Void >(" test ", ĠString :: class . java , ĠString :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" OK " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ """ ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` static Ġcompanion `() Ġ= Ġtest Jvm Compile ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġclass ĠTest Data Ġ{ ĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Jvm Blocking Bridge ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuspend Ġfun ĠString . test ( arg : ĠString ) Ġ{ Ġ// Ġreturns ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġmain (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClass . forName (" TestData "). assert Has Function < Void >(" test ", ĠString :: class . java , ĠString :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClass . forName (" TestData \ ${ '$ '} Companion "). assert Has Function < Void >(" test ", ĠString :: class . java , ĠString :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" OK " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ """ ĊĠĠĠ Ġ) ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` static Ġcompanion Ġnon Ġunit `() Ġ= Ġtest Jvm Compile ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġclass ĠTest Data Ġ{ ĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Jvm Blocking Bridge ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuspend Ġfun ĠString . test ( arg : ĠString ): ĠString Ġ{ Ġ// Ġreturns ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" receiver ", Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" p 0 ", Ġarg ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" OK " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġmain (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClass . forName (" TestData "). assert Has Function < String >(" test ", ĠString :: class . java , ĠString :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClass . forName (" TestData \ ${ '$ '} Companion "). assert Has Function < String >(" test ", ĠString :: class . java , ĠString :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠClass . forName (" TestData "). run Static Function (" test ", Ġ" receiver ", Ġ" p 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ """ ĊĠĠĠ Ġ) Ċ }