/* Ċ Ġ* Ġ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 . fir . low . level . api Ċ Ċ import Ġorg . jetbrains . kotlin . diagnostics . Diagnostic Ċ import Ġorg . jetbrains . kotlin . fir . F ir Element Ċ import Ġorg . jetbrains . kotlin . fir . F ir Session Ċ import Ġorg . jetbrains . kotlin . fir . declarations . F ir Declaration Ċ import Ġorg . jetbrains . kotlin . fir . declarations . F ir File Ċ import Ġorg . jetbrains . kotlin . fir . declarations . F ir Function Ċ import Ġorg . jetbrains . kotlin . fir . declarations . F ir Resolve Phase Ċ import Ġorg . jetbrains . kotlin . fir . expressions . F ir Statement Ċ import Ġorg . jetbrains . kotlin . fir . resolve . F ir Tower DataContext Ċ import Ġorg . jetbrains . kotlin . idea . cache s . project . Ide a Module Info Ċ import Ġorg . jetbrains . kotlin . idea . fir . low . level . api . element . builder . Psi To F ir Cache Ċ import Ġorg . jetbrains . kotlin . idea . fir . low . level . api . providers . F ir Ide Provider Ċ import Ġorg . jetbrains . kotlin . psi . Kt Element Ċ import Ġorg . jetbrains . kotlin . psi . Kt File Ċ Ċ internal Ġclass ĠF ir Module Resolve State For Completion ( ĊĠĠĠ Ġprivate Ġval Ġoriginal State : ĠF ir Module Resolve State Impl Ċ ) Ġ: ĠF ir Module Resolve State () Ġ{ ĊĠĠĠ Ġoverride Ġval Ġmodule Info : ĠIde a Module Info Ġget () Ġ= Ġoriginal State . module Info ĊĠĠĠ Ġoverride Ġval Ġfir Session : ĠF ir Session Ġget () Ġ= Ġoriginal State . fir Session ĊĊĠĠĠ Ġprivate Ġval Ġpsi To F ir Cache Ġ= ĠPsi To F ir Cache ( original State . file Cache ) ĊĊĠĠĠ Ġoverride Ġfun Ġget Session For ( module Info : ĠIde a Module Info ): ĠF ir Session Ġ= ĊĠĠĠĠĠĠĠ Ġoriginal State . getSession For ( module Info ) ĊĊĠĠĠ Ġoverride Ġfun Ġget Or Build F ir For ( element : ĠK t Element , Ġto Phase : ĠF ir Resolve Phase ): ĠF ir Element Ġ{ ĊĠĠĠĠĠĠĠ Ġget Cached Mapping For Completion ( element )?. let Ġ{ Ġreturn Ġit Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal State . element Builder . get Or Build F ir For ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelement , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoriginal State . file Cache , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpsi To F ir Cache , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġto Phase ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrecord Psi To F ir Mappings For Completion From ( fir : ĠF ir Declaration , Ġfir File : ĠF ir File , Ġkt File : ĠK t File ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpsi To F ir Cache . record Elements For Completion From ( fir , Ġfir File , Ġkt File ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Cached Mapping For Completion ( element : ĠK t Element ): ĠF ir Element ? Ġ{ ĊĠĠĠĠĠĠĠ Ġpsi To F ir Cache . get Cached Mapping ( element )?. let Ġ{ Ġreturn Ġit Ġ} ĊĠĠĠĠĠĠĠ Ġoriginal State . psi To F ir Cache . get Cached Mapping ( element )?. let Ġ{ Ġreturn Ġit Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlazy Resolve Function For Completion ( ĊĠĠĠĠĠĠĠ Ġfir Function : ĠF ir Function <* >, ĊĠĠĠĠĠĠĠ Ġcontainer F ir File : ĠF ir File , ĊĠĠĠĠĠĠĠ Ġfir Ide Provider : ĠF ir Ide Provider , ĊĠĠĠĠĠĠĠ Ġto Phase : ĠF ir Resolve Phase , ĊĠĠĠĠĠĠĠ Ġto wer DataContext For Statement : ĠMutable Map < F ir Statement , ĠF ir Tower DataContext > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoriginal State . lazy Resolve Function For Completion ( fir Function , Ġcontainer F ir File , Ġfir Ide Provider , Ġto Phase , Ġto wer DataContext For Statement ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Diagnostics ( element : ĠK t Element ): ĠList < Diagnostic > Ġ{ ĊĠĠĠĠĠĠĠ Ġerror (" Diagnostics Ġshould Ġnot Ġbe Ġretrieved Ġin Ġcompletion ") ĊĠĠĠ Ġ} Ċ }