package Ġ` fun `. kot ling ang . script kt Ċ Ċ import Ġ` fun `. kot ling ang . script kt . annotation . Experimental Script Kt Api Ċ import Ġ` fun `. kot ling ang . script kt . annotation . Unsafe Arguments Input Ċ import Ġ` fun `. kot ling ang . script kt . compilation . Jvm Host Module Compiler Ċ import Ġ` fun `. kot ling ang . script kt . evaluation . Jvm Host Module Evaluator Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . platform . commons . annotation . Test able Ċ import Ġkotlin . script . experimental . api . Script Diagnostic Ċ import Ġkotlin . script . experimental . api . value OrThrow Ċ import Ġkotlin . script . experimental . jvm . util . classpath From Class Ċ import Ġkotlin . script . experimental . jvm . util . isError Ċ import Ġkotlin . test . assertFalse Ċ Ċ open Ġclass ĠBaseClass ( private Ġval Ġargument : ĠString ) Ġ{ ĊĠĠĠ Ġfun Ġbase Class Method () Ġ= Ġprintln ( argument ) Ċ } Ċ Ċ class ĠImp licit Receiver ( private Ġval Ġargument : ĠInt ) Ġ{ ĊĠĠĠ Ġfun Ġget IR Method () Ġ= Ġprintln ( argument ) Ċ } Ċ Ċ @ Test able Ċ object ĠModules Test Ġ{ ĊĠĠĠ Ġ@ Opt In ( Unsafe Arguments Input :: class ) ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Configuration (): ĠUnit Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġscripts Module Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscript Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( provided Property ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbase Class Method () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget IR Method () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompilation Configuration . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclasspath . addAll ( listOf ( classpath From Class < Base Class >() !! Ġ+ Ġclasspath From Class < Implicit Receiver >() !! ). flatten ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbase Class Ġ= ĠBaseClass :: class ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimplicit Re ceiv ers . add ( Implicit Receiver :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprovided Properties [" provided Property "] Ġ= ĠDouble :: class ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. compile ( Jvm Host Module Compiler ()). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( reports . join ToString ("\ n ") Ġ{ Ġit . render ( with StackTrace Ġ= Ġtrue ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( isError ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( reports . any Ġ{ Ġit . severity Ġ== ĠScript Diagnostic . Severity . ERROR Ġ}) ĊĠĠĠĠĠĠĠ Ġ}. value OrThrow (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevaluation Configuration . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbase Class Arguments . add (" test ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimplicit Re ceiv ers . add ( Implicit Receiver ( 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprovided Properties [" provided Property "] Ġ= Ġ 2 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġevaluate ( Jvm Host Module Evaluator ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( isError ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( reports . any Ġ{ Ġit . severity Ġ== ĠScript Diagnostic . Severity . ERROR Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Opt In ( Experimental Script Kt Api :: class , ĠUnsafe Arguments Input :: class ) ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġd sl Test (): ĠUnit Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġmodule Kt ( script Of ( code Ġ= Ġ" println ( test ) ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprovide Property ( name Ġ= Ġ" test ", Ġinstance Ġ= Ġ" text ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Base Class < Base Class >( arguments Ġ= ĠlistOf (" Test ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Implicit Receiver ( instance Ġ= ĠImp licit Receiver ( 2 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Classpath ( classpath From Class < Base Class >() !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Classpath ( classpath From Class < Implicit Receiver >() !! ) ĊĠĠĠĠĠĠĠ Ġ}. compile ( Jvm Host Module Compiler ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. value OrThrow () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. evaluate ( Jvm Host Module Evaluator ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. value OrThrow () ĊĠĠĠ Ġ} Ċ Ċ }