/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 2 0 ĠJetBrains Ġs . r . o . Ġand ĠKotlin ĠProgramming ĠLanguage Ġcontributors . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe Ġlicense / LICENSE . txt Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . kotlin . script ing . ide _ services . test _ util Ċ Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġorg . jetbrains . kotlin . script ing . ide _ services . compiler . K Jvm Repl Compiler With Ide Services Ċ import Ġjava . io . Closeable Ċ import Ġjava . util . concurrent . atomic . Atomic Integer Ċ import Ġkotlin . script . experimental . api . Compiled Snippet Ċ import Ġkotlin . script . experimental . api . Result With Diagnostics Ċ import Ġkotlin . script . experimental . api . Source Code Ċ import Ġkotlin . script . experimental . api . value OrNull Ċ import Ġkotlin . script . experimental . jvm . Basic Jvm Repl Evaluator Ċ import Ġkotlin . script . experimental . util . Linked Snippet Ċ import Ġkotlin . script . experimental . jvm . util . to Source Code Position Ċ Ċ internal Ġclass ĠJ vm Test Repl Ġ: ĠClose able Ġ{ ĊĠĠĠ Ġprivate Ġval Ġcurrent Line Counter Ġ= ĠAtomicInteger ( 0 ) ĊĊĠĠĠ Ġprivate Ġval Ġcompile Configuration Ġ= Ġsimple Script Compilation Configuration ĊĠĠĠ Ġprivate Ġval Ġeval Configuration Ġ= Ġsimple Script Evaluation Configuration ĊĊĠĠĠ Ġfun Ġnext Code Line ( code : ĠString ): ĠSource Code Ġ= ĊĠĠĠĠĠĠĠ ĠSource Code Test Impl ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Line Counter . get And Increment (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcode ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġrepl Compiler : ĠK Jvm Repl Compiler With Ide Services Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠK Jvm Repl Compiler With Ide Services () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġcompiled Evaluator : ĠBasic Jvm Repl Evaluator Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠBasic Jvm Repl Evaluator () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcompile ( code : ĠSource Code ) Ġ= Ġrun Blocking Ġ{ Ġrepl Compiler . compile ( code , Ġcompile Configuration ) Ġ} ĊĠĠĠ Ġfun Ġcomplete ( code : ĠSource Code , Ġcursor : ĠInt ) Ġ= Ġrun Blocking Ġ{ Ġrepl Compiler . complete ( code , Ġcursor . to Source Code Position ( code ), Ġcompile Configuration ) Ġ} ĊĊĠĠĠ Ġfun Ġeval ( snippet : ĠLinked Snippet < out ĠComp iled Snippet >) Ġ= Ġrun Blocking Ġ{ Ġcompiled Evaluator . eval ( snippet , Ġeval Configuration ) Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclose () Ġ{ ĊĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ internal Ġclass ĠSource Code Test Impl ( number : ĠInt , Ġoverride Ġval Ġtext : ĠString ) Ġ: ĠSource Code Ġ{ ĊĠĠĠ Ġoverride Ġval Ġname : ĠString ? Ġ= Ġ" Line _$ number " ĊĠĠĠ Ġoverride Ġval Ġlocation Id : ĠString ? Ġ= Ġ" location _$ number " Ċ } Ċ Ċ @ Jvm Name (" iterable ToList ") Ċ fun Ġ< T > ĠResult With Diagnostics < Iterable < T >> . toList () Ġ= Ġthis . value OrNull ()?. toList (). or Empty () Ċ Ċ @ Jvm Name (" sequence ToList ") Ċ fun Ġ< T > ĠResult With Diagnostics < Sequence < T >> . toList () Ġ= Ġthis . value OrNull ()?. toList (). or Empty () Ċ