/* Ċ Ġ* Ġ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 . idea . core . script . configuration Ċ Ċ import Ġcom . intellij . openapi . extensions . Extension Point Name Ċ import Ġcom . intellij . openapi . extensions . Extensions Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . vfs . Virtual File Ċ import Ġcom . intellij . psi . Psi Element Finder Ċ import Ġorg . jetbrains . kotlin . idea . core . script . Kotlin Script Dependencies Class Finder Ċ import Ġorg . jetbrains . kotlin . idea . core . script . Script Dependencies Modification Tracker Ċ import Ġorg . jetbrains . kotlin . idea . core . script . configuration . listener . Script Configuration Updater Ċ import Ġorg . jetbrains . kotlin . idea . core . script . configuration . utils . Script Class Roots Cache Ċ import Ġorg . jetbrains . kotlin . idea . core . script . debug Ċ import Ġorg . jetbrains . kotlin . psi . Kt File Ċ import Ġorg . jetbrains . kotlin . script ing . resolve . Script Compilation Configuration Wrapper Ċ import Ġjava . util . concurrent . locks . Re entrant Lock Ċ import Ġkotlin . concurrent . with Lock Ċ Ċ abstract Ġclass ĠScript ing Support Ġ{ ĊĠĠĠ Ġabstract Ġclass ĠProvider Ġ{ ĊĠĠĠĠĠĠĠ Ġabstract Ġval Ġall : ĠCollection < Script ing Support > ĊĊĠĠĠĠĠĠĠ Ġabstract Ġfun Ġget Support ( file : ĠVirtual File ): ĠScript ing Support ? ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠE PN : ĠExtension Point Name < Provider > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExtension Point Name . create (" org . jetbrains . kotlin . script ing . idea . script ing Support Provider ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġfun Ġclear Caches () ĊĠĠĠ Ġabstract Ġfun Ġhas Cached Configuration ( file : ĠK t File ): ĠBoolean ĊĠĠĠ Ġabstract Ġfun Ġis Configuration Loading InProgress ( file : ĠK t File ): ĠBoolean ĊĠĠĠ Ġabstract Ġfun Ġget Or Load Configuration ( virtual File : ĠVirtual File , Ġpre loaded Kt File : ĠK t File ? Ġ= Ġnull ): ĠScript Compilation Configuration Wrapper ? ĊĊĠĠĠ Ġabstract Ġval Ġupdater : ĠScript Configuration Updater ĊĊĠĠĠ Ġprivate Ġval Ġclasspath Roots Lock Ġ= ĠRe entrant Lock () ĊĊĠĠĠ Ġ@ Volatile ĊĠĠĠ Ġprivate Ġvar Ġ_ classpath Roots : ĠScript Class Roots Cache ? Ġ= Ġnull ĊĠĠĠ Ġval Ġclasspath Roots : ĠScript Class Roots Cache ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue 1 Ġ= Ġ_ classpath Roots ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value 1 Ġ!= Ġnull ) Ġreturn Ġvalue 1 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġclasspath Roots Lock . with Lock Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue 2 Ġ= Ġ_ classpath Roots ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value 2 Ġ!= Ġnull ) Ġreturn Ġvalue 2 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue 3 Ġ= Ġrecreate Roots Cache () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue 3 . save Class Root sTo Storage () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ classpath Roots Ġ= Ġvalue 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġvalue 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġabstract Ġfun Ġrecreate Roots Cache (): ĠScript Class Roots Cache ĊĊĠĠĠ Ġfun Ġclear Class Roots Caches ( project : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdebug Ġ{ Ġ" class Ġroots Ġcaches Ġcleared " Ġ} ĊĊĠĠĠĠĠĠĠ Ġclasspath Roots Lock . with Lock Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ classpath Roots Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġkotlin Script Dependencies Class Finder Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠExtensions . get Area ( project ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getExtension Point ( Psi Element Finder . EP _ NAME ). extensions ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Is Instance < Kotlin Script Dependencies Class Finder >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. single () ĊĊĠĠĠĠĠĠĠ Ġkotlin Script Dependencies Class Finder . clear Cache () ĊĊĠĠĠĠĠĠĠ ĠScript Dependencies Modification Tracker . getInstance ( project ). inc Modification Count () ĊĠĠĠ Ġ} Ċ }