/* Ċ Ġ* Ġ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 . package Dependencies Ċ Ċ import Ġcom . intellij . package Dependencies . Dependencies Builder Ċ import Ġcom . intellij . package Dependencies . Dependency Visitor Factory Ċ import Ġcom . intellij . psi . Psi Element Visitor Ċ import Ġcom . intellij . psi . Psi Import Statement Ċ import Ġorg . jetbrains . kotlin . psi . Kt Dot Qualified Expression Ċ import Ġorg . jetbrains . kotlin . psi . Kt Reference Expression Ċ import Ġorg . jetbrains . kotlin . psi . Kt Tree Visitor Void Ċ Ċ class ĠKotlin Dependency Visitor Factory Ġ: ĠDependency Visitor Factory () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget Visitor ( processor : ĠDependencies Builder . Dependency Processor , Ġoptions : ĠVisitor Options ): ĠPsi Element Visitor Ġ= ĊĠĠĠĠĠĠĠ ĠKotlin Dependency Visitor ( processor , Ġoptions ) ĊĊĠĠĠ Ġinner Ġclass ĠKotlin Dependency Visitor ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġmy Processor : ĠDependencies Builder . Dependency Processor , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġmy Options : ĠVisitor Options ĊĠĠĠ Ġ) Ġ: ĠK t Tree Visitor Void () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Reference Expression ( expression : ĠK t Reference Expression ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . visit Reference Expression ( expression ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( ref Ġin Ġexpression . references ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresolved Ġ= Ġref . resolve () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparent Ġ= Ġexpression . parent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplace Ġ= Ġwhen Ġ( val Ġgrand Parent Ġ= Ġparent . parent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠK t Dot Qualified Expression Ġ-> Ġgrand Parent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġparent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( resolved Ġ!= Ġnull ) Ġmy Processor . process ( place , Ġresolved ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġvisit Import Statement ( statement : ĠPsi Import Statement ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! my Options . skip Imports ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvisit Element ( statement !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }