package Ġorg . jetbrains . kotlin . jupyter Ċ Ċ import Ġorg . jetbrains . kotlin . cli . common . messages . Compiler Message Location With Range Ċ import Ġorg . jetbrains . kotlin . jupyter . repl . Source Code Impl Ċ import Ġorg . slf 4 j . Logger Ċ import Ġkotlin . script . experimental . api . Result With Diagnostics Ċ import Ġkotlin . script . experimental . api . Script Diagnostic Ċ import Ġkotlin . script . experimental . api . Source Code Ċ import Ġkotlin . script . experimental . jvm . util . determine Sep Ċ import Ġkotlin . script . experimental . jvm . util . to Source Code Position Ċ Ċ fun Ġ< T > ĠLogger . catch All ( msg : ĠString Ġ= Ġ"", Ġbody : Ġ() Ġ-> ĠT ): ĠT ? Ġ= Ġtry Ġ{ ĊĠĠĠ Ġbody () Ċ } Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠ Ġthis . error ( msg , Ġe ) ĊĠĠĠ Ġnull Ċ } Ċ Ċ fun ĠString . parse Ini Config () Ġ= ĊĠĠĠĠĠĠĠ Ġline Sequence (). map Ġ{ Ġit . split (' =') Ġ}. filter Ġ{ Ġit . count () Ġ== Ġ 2 Ġ}. map Ġ{ Ġit [ 0 ] Ġto Ġit [ 1 ] Ġ}. toMap () Ċ Ċ fun ĠList < String >. join To Lines () Ġ= Ġjoin ToString ("\ n ") ĊĊ Ċ fun Ġgenerate Diagnostic ( from Line : ĠInt , Ġfrom Col : ĠInt , Ġto Line : ĠInt , Ġto Col : ĠInt , Ġmessage : ĠString , Ġseverity : ĠString ) Ġ= ĊĠĠĠĠĠĠĠ ĠScript Diagnostic ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠScript Diagnostic . un specified Error , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠScript Diagnostic . Severity . valueOf ( severity ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSource Code . Location ( Source Code . Position ( from Line , Ġfrom Col ), ĠSource Code . Position ( to Line , Ġto Col )) ĊĠĠĠĠĠĠĠ Ġ) Ċ Ċ fun Ġgenerate Diagnostic From Absolute ( code : ĠString , Ġfrom : ĠInt , Ġto : ĠInt , Ġmessage : ĠString , Ġseverity : ĠString ): ĠScript Diagnostic Ġ{ ĊĠĠĠ Ġval Ġsnippet Ġ= ĠSource Code Impl ( 0 , Ġcode ) ĊĠĠĠ Ġreturn ĠScript Diagnostic ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠScript Diagnostic . un specified Error , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠScript Diagnostic . Severity . valueOf ( severity ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSource Code . Location ( from . to Source Code Position ( snippet ), Ġto . to Source Code Position ( snippet )) ĊĠĠĠ Ġ) Ċ } Ċ Ċ fun Ġwith Path ( path : ĠString ?, Ġdiagnostics : ĠList < Script Diagnostic >): ĠList < Script Diagnostic > Ġ= ĊĠĠĠĠĠĠĠ Ġdiagnostics . map Ġ{ Ġit . copy ( source Path Ġ= Ġpath ) Ġ} Ċ Ċ internal Ġfun Ġ< T > ĠResult With Diagnostics < T >. get Errors (): ĠString Ġ{ ĊĠĠĠ Ġval Ġfiltered Reports Ġ= Ġreports . filter Ġ{ ĊĠĠĠĠĠĠĠ Ġit . code Ġ!= ĠScript Diagnostic . in complete Code ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġfiltered Reports . join ToString ("\ n ") Ġ{ Ġreport Ġ-> ĊĠĠĠĠĠĠĠ Ġreport . location ?. let Ġ{ Ġloc Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCompiler Message Location With Range . create ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreport . source Path , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloc . start . line , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloc . start . col , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloc . end ?. line , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloc . end ?. col , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ?. to Ext String ()?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ it Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. or Empty () Ġ+ Ġreport . message ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠCompiler Message Location With Range . to Ext String (): ĠString Ġ{ ĊĠĠĠ Ġval Ġstart Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( line Ġ== Ġ- 1 Ġ&& Ġcolumn Ġ== Ġ- 1 ) Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ"$ line :$ column " ĊĠĠĠ Ġval Ġend Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( line End Ġ== Ġ- 1 Ġ&& Ġcolumn End Ġ== Ġ- 1 ) Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( line End Ġ== Ġline ) Ġ" Ġ- Ġ$ column End " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ" Ġ- Ġ$ line End :$ column End " ĊĠĠĠ Ġval Ġloc Ġ= Ġif Ġ( start . isEmpty () Ġ&& Ġend . isEmpty ()) Ġ"" Ġelse Ġ" Ġ($ start $ end )" ĊĠĠĠ Ġreturn Ġpath Ġ+ Ġloc Ċ } Ċ Ċ fun ĠString . find N th Substring ( s : ĠString , Ġn : ĠInt , Ġstart : ĠInt Ġ= Ġ 0 ): ĠInt Ġ{ ĊĠĠĠ Ġif Ġ( n Ġ< Ġ 1 Ġ|| Ġstart Ġ== Ġ- 1 ) Ġreturn Ġ- 1 ĊĊĠĠĠ Ġvar Ġi Ġ= Ġstart ĊĊĠĠĠ Ġfor Ġ( k Ġin Ġ 1 .. n ) Ġ{ ĊĠĠĠĠĠĠĠ Ġi Ġ= ĠindexOf ( s , Ġi ) ĊĠĠĠĠĠĠĠ Ġif Ġ( i Ġ== Ġ- 1 ) Ġreturn Ġ- 1 ĊĠĠĠĠĠĠĠ Ġi Ġ+= Ġs . length ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġi Ġ- Ġs . length Ċ } Ċ Ċ fun ĠInt . to Source Code Position With New Absolute ( code : ĠSource Code , Ġnew Code : ĠSource Code ): ĠSource Code . Position ? Ġ{ ĊĠĠĠ Ġval Ġpos Ġ= Ġto Source Code Position ( code ) ĊĠĠĠ Ġval Ġsep Ġ= Ġcode . text . determine Sep () ĊĠĠĠ Ġval Ġabs Line Start Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pos . line Ġ== Ġ 1 ) Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġnew Code . text . find N th Substring ( sep , Ġpos . line Ġ- Ġ 1 ) Ġ+ Ġsep . length ĊĊĠĠĠ Ġvar Ġnext NewLine Pos Ġ= Ġnew Code . text . indexOf ( sep , Ġabs Line Start ) ĊĠĠĠ Ġif Ġ( next NewLine Pos Ġ== Ġ- 1 ) Ġnext NewLine Pos Ġ= Ġnew Code . text . length ĊĊĠĠĠ Ġval Ġabs Ġ= Ġabs Line Start Ġ+ Ġpos . col Ġ- Ġ 1 ĊĠĠĠ Ġif Ġ( abs Ġ> Ġnext NewLine Pos ) ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĊĠĠĠ Ġreturn ĠSource Code . Position ( pos . line , Ġabs Ġ- Ġabs Line Start Ġ+ Ġ 1 , Ġabs ) Ċ } Ċ