/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 2 1 Ġ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 . fir . low . level . api . ide Ċ Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . roots . Order Root Type Ċ import Ġcom . intellij . psi . search . Global Search Scope Ċ import Ġorg . jetbrains . kotlin . analyzer . Library Module Info Ċ import Ġorg . jetbrains . kotlin . analyzer . Module Info Ċ import Ġorg . jetbrains . kotlin . analyzer . Module Source Info Base Ċ import Ġorg . jetbrains . kotlin . analyzer . Sdk Info Base Ċ import Ġorg . jetbrains . kotlin . config . Language Version Settings Ċ import Ġorg . jetbrains . kotlin . fir . Dependency List For Cli Module Ċ import Ġorg . jetbrains . kotlin . fir . F ir Session Ċ import Ġorg . jetbrains . kotlin . fir . declarations . Se aled Class In her itors Provider Ċ import Ġorg . jetbrains . kotlin . fir . dependencies Without Self Ċ import Ġorg . jetbrains . kotlin . fir . de serialization . Module DataProvider Ċ import Ġorg . jetbrains . kotlin . idea . cache s . project . Module Production Source Scope Ċ import Ġorg . jetbrains . kotlin . idea . cache s . project . Module Source Info Ċ import Ġorg . jetbrains . kotlin . idea . cache s . project . Sdk Info Ċ import Ġorg . jetbrains . kotlin . idea . cache s . project . getModule Info Ċ import Ġorg . jetbrains . kotlin . idea . cache s . resolve . IDE Package Part Provider Ċ import Ġorg . jetbrains . kotlin . idea . fir . low . level . api . Declaration Provider Ċ import Ġorg . jetbrains . kotlin . idea . fir . low . level . api . Kt Package Provider Ċ import Ġorg . jetbrains . kotlin . idea . fir . low . level . api . api . F ir Module Resolve State Configurator Ċ import Ġorg . jetbrains . kotlin . idea . project . language Version Settings Ċ import Ġorg . jetbrains . kotlin . load . kotlin . Package Part Provider Ċ import Ġorg . jetbrains . kotlin . psi . Kt Element Ċ import Ġjava . nio . file . Path Ċ import Ġjava . nio . file . Paths Ċ Ċ class ĠF ir Module Resolve State Configurator Ide Impl ( private Ġval Ġproject : ĠProject ) Ġ: ĠF ir Module Resolve State Configurator () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġcreate Package Parts Provider ( module Info : ĠModule Source Info Base , Ġscope : ĠGlobal Search Scope ): ĠPackage Part Provider Ġ= ĊĠĠĠĠĠĠĠ ĠIDE Package Part Provider ( scope ) ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Module DataProvider ( module Info : ĠModule Source Info Base ): ĠModule DataProvider Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠDependency List For Cli Module . build ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodule Info . name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodule Info . platform , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodule Info . analyzer Services ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdependencies ( module Info . dependencies Without Self (). extract Library Paths ( project )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfriend Dependencies ( module Info . modules Wh ose Internals Are Visible (). extract Library Paths ( project )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdepends On Dependencies ( module Info . expected By . extract Library Paths ( project )) ĊĠĠĠĠĠĠĠ Ġ}. module DataProvider ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠSequence < Module Info >. extract Library Paths ( project : ĠProject ): ĠList < Path > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfold ( mutable ListOf ()) Ġ{ Ġacc , Ġmodule Info Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodule Info . extract Library Paths ( acc ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġacc ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠIterable < Module Info >. extract Library Paths ( project : ĠProject ): ĠList < Path > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfold ( mutable ListOf ()) Ġ{ Ġacc , Ġmodule Info Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodule Info . extract Library Paths ( acc ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġacc ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠModule Info . extract Library Paths ( destination : ĠMutable List < Path >) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠS dk Info Base Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsdk Ġ= Ġ( this Ġas ĠS dk Info ). sdk ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsdk . root Provider . get Files ( Order Root Type . CLASSES ). map NotNull To ( destination ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPaths . get ( it . file System . extract Present able Url ( it . path )). normalize () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLibrary Module Info Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Library Roots (). map To ( destination ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPaths . get ( it ). normalize () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Language Version Settings ( module Info : ĠModule Source Info Base ): ĠLanguage Version Settings Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire ( module Info Ġis ĠModule Source Info ) ĊĠĠĠĠĠĠĠ Ġreturn Ġmodule Info . module . language Version Settings ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Module Source Scope ( module Info : ĠModule Source Info Base ): ĠGlobal Search Scope Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire ( module Info Ġis ĠModule Source Info ) ĊĠĠĠĠĠĠĠ Ġreturn ĠModule Production Source Scope ( module Info . module ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Scope For Module Libraries ( module Info : ĠModule Source Info Base ): ĠGlobal Search Scope Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire ( module Info Ġis ĠModule Source Info ) ĊĠĠĠĠĠĠĠ Ġreturn ĠModule Libraries Search Scope ( module Info . module ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Se aled In her itors Provider (): ĠSe aled Class In her itors Provider Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSe aled Class In her itors Provider Ide Impl () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Module Info For ( element : ĠK t Element ): ĠModule Info Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġelement . getModule Info () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfigure Source Session ( session : ĠF ir Session ) Ġ{ ĊĠĠĠ Ġ} Ċ }