/* Ċ Ġ* Ġ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 . compiler Ċ Ċ import Ġorg . jetbrains . kotlin . cli . common . messages . Analyzer With Compiler Report Ċ import Ġorg . jetbrains . kotlin . script ing . compiler . plugin . impl . K Jvm Repl Compiler Base Ċ import Ġorg . jetbrains . kotlin . script ing . compiler . plugin . impl . failure Ċ import Ġorg . jetbrains . kotlin . script ing . compiler . plugin . impl . with Message Collector Ċ import Ġorg . jetbrains . kotlin . script ing . ide _ services . compiler . impl . Ide Like Repl Code Analyzer Ċ import Ġorg . jetbrains . kotlin . script ing . ide _ services . compiler . impl . get K Jvm Completion Ċ import Ġorg . jetbrains . kotlin . script ing . ide _ services . compiler . impl . prepare Code For Completion Ċ import Ġkotlin . script . experimental . api .* Ċ import Ġkotlin . script . experimental . host . Script ing Host Configuration Ċ import Ġkotlin . script . experimental . jvm . default Jvm Script ing Host Configuration Ċ import Ġkotlin . script . experimental . jvm . util . calc Absolute Ċ Ċ class ĠK Jvm Repl Compiler With Ide Services ( host Configuration : ĠScript ing Host Configuration Ġ= Ġdefault Jvm Script ing Host Configuration ) Ġ: ĊĠĠĠ ĠK Jvm Repl Compiler Base < Ide Like Repl Code Analyzer >( host Configuration , Ġ{ ĊĠĠĠĠĠĠĠ ĠIde Like Repl Code Analyzer ( it . environment ) ĊĠĠĠ Ġ}), ĊĠĠĠ ĠRe pl Comp leter , ĠRe pl Code Analyzer Ġ{ ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġcomplete ( ĊĠĠĠĠĠĠĠ Ġsnippet : ĠSource Code , ĊĠĠĠĠĠĠĠ Ġcursor : ĠSource Code . Position , ĊĠĠĠĠĠĠĠ Ġconfiguration : ĠScript Compilation Configuration ĊĠĠĠ Ġ): ĠResult With Diagnostics < Repl Completion Result > Ġ= ĊĠĠĠĠĠĠĠ Ġwith Message Collector ( snippet ) Ġ{ Ġmessage Collector Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinitial Configuration Ġ= Ġconfiguration . ref ine Before Parsing ( snippet ). value Or Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcursor Abs Ġ= Ġcursor . calc Absolute ( snippet ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprepare Code For Completion ( snippet . text , Ġcursor Abs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Snippet Ġ= Ġobject Ġ: ĠSource Code Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġtext : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġnew Text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġname : ĠString ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġsnippet . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġlocation Id : ĠString ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġsnippet . location Id ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcompilation State Ġ= Ġstate . get Compilation State ( initial Configuration ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ(_, Ġerror Holder , Ġsnippet Kt File ) Ġ= Ġprepare For Analyze ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Snippet , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Collector , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompilation State , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Syntax Errors Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). value Or Ġ{ Ġreturn @ with Message Collector Ġit Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanalysis Result Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompilation State . analyzer Engine . state less Analyze With Imported Scripts ( snippet Kt File , Ġempty List (), Ġscript Priority . get () Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAnalyzer With Compiler Report . report Diagnostics ( analysis Result . diagnostics , Ġerror Holder ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ(_, Ġbinding Context , Ġresolution Facade , Ġmodule Descriptor ) Ġ= Ġwhen Ġ( analysis Result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠIde Like Repl Code Analyzer . Repl Line Analysis Result With State less . State less Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanalysis Result ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn Ġfailure ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Snippet , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Collector , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Unexpected Ġresult Ġ${ analysis Result :: class . java }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġget K Jvm Completion ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsnippet Kt File , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresolution Facade , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodule Descriptor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor Abs ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). as Success ( message Collector . diagnostics ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠList < Script Diagnostic >. to Analyze Result () Ġ= Ġ( filter Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( it . severity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠScript Diagnostic . Severity . FATAL , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠScript Diagnostic . Severity . ERROR , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠScript Diagnostic . Severity . WARNING ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}). as Sequence () ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġanalyze ( ĊĠĠĠĠĠĠĠ Ġsnippet : ĠSource Code , ĊĠĠĠĠĠĠĠ Ġcursor : ĠSource Code . Position , ĊĠĠĠĠĠĠĠ Ġconfiguration : ĠScript Compilation Configuration ĊĠĠĠ Ġ): ĠResult With Diagnostics < Repl Analyzer Result > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwith Message Collector ( snippet ) Ġ{ Ġmessage Collector Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinitial Configuration Ġ= Ġconfiguration . ref ine Before Parsing ( snippet ). value Or Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcompilation State Ġ= Ġstate . get Compilation State ( initial Configuration ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ(_, Ġerror Holder , Ġsnippet Kt File ) Ġ= Ġprepare For Analyze ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsnippet , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Collector , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompilation State , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Syntax Errors Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). value Or Ġ{ Ġreturn @ with Message Collector Ġmessage Collector . diagnostics . to Analyze Result (). as Success () Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanalysis Result Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompilation State . analyzer Engine . state less Analyze With Imported Scripts ( snippet Kt File , Ġempty List (), Ġscript Priority . get () Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAnalyzer With Compiler Report . report Diagnostics ( analysis Result . diagnostics , Ġerror Holder ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Collector . diagnostics . to Analyze Result (). as Success () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ