/* Ċ Ġ* ĠCopyright Ġ 2 0 0 0 - 2 0 1 9 Ġ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 . goto Ċ Ċ import Ġcom . intellij . navigation . G oto Class Contributor Ċ import Ġcom . intellij . navigation . Navigation Item Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . psi . search . Global Search Scope Ċ import Ġcom . intellij . psi . stubs . Stub Index Ċ import Ġorg . jetbrains . kotlin . as Java . Light Class Util Ċ import Ġorg . jetbrains . kotlin . idea . de compiler . built Ins . Kotlin BuiltIn FileType Ċ import Ġorg . jetbrains . kotlin . idea . stub index .* Ċ import Ġorg . jetbrains . kotlin . psi . Kt Callable Declaration Ċ import Ġorg . jetbrains . kotlin . psi . Kt Enum Entry Ċ import Ġorg . jetbrains . kotlin . psi . Kt Named Declaration Ċ import Ġorg . jetbrains . kotlin . psi . Kt User Type Ċ import Ġorg . jetbrains . kotlin . psi . psi Util . containing Class Ċ Ċ class ĠKotlin G oto Class Contributor Ġ: ĠG oto Class Contributor Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget QualifiedName ( item : ĠNavigation Item ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdeclaration Ġ= Ġitem Ġas ? ĠK t Named Declaration Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġreturn Ġdeclaration . fq Name ?. asString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget QualifiedName Separator () Ġ= Ġ"." ĊĊĠĠĠ Ġoverride Ġfun Ġget Names ( project : ĠProject , Ġinclude Non Project Items : ĠBoolean ): ĠArray < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġclasses Ġ= ĠKotlin Class ShortName Index . getInstance (). getAll Keys ( project ) ĊĠĠĠĠĠĠĠ Ġval Ġtype Aliases Ġ= ĠKotlin Type Alias ShortName Index . getInstance (). getAll Keys ( project ) ĊĠĠĠĠĠĠĠ Ġreturn Ġ( classes Ġ+ Ġtype Aliases ). to Typed Array () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Items ByName ( name : ĠString , Ġpattern : ĠString , Ġproject : ĠProject , Ġinclude Non Project Items : ĠBoolean ): ĠArray < Navigation Item > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġglobal Scope Ġ= Ġif Ġ( include Non Project Items ) ĠGlobal Search Scope . all Scope ( project ) Ġelse ĠGlobal Search Scope . project Scope ( project ) ĊĠĠĠĠĠĠĠ Ġval Ġscope Ġ= ĠKotlin Source Filter Scope . project Source And Class Files ( global Scope , Ġproject ) ĊĠĠĠĠĠĠĠ Ġval Ġclasses Or Objects Ġ= ĠKotlin Class ShortName Index . getInstance (). get ( name , Ġproject , Ġscope ) ĊĠĠĠĠĠĠĠ Ġval Ġtype Aliases Ġ= ĠKotlin Type Alias ShortName Index . getInstance (). get ( name , Ġproject , Ġscope ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( classes Or Objects . isEmpty () Ġ&& Ġtype Aliases . isEmpty ()) Ġreturn ĠNavigation Item . EMPTY _ NAV IG ATION _ ITEM _ ARRAY ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ( classes Or Objects Ġ+ Ġtype Aliases ). filter Ġ{ Ġit Ġ!= Ġnull Ġ&& Ġit Ġ! is ĠK t Enum Entry Ġ}. to Typed Array () ĊĠĠĠ Ġ} Ċ } Ċ Ċ /* Ċ * ĠLogic Ġin ĠIDEA Ġthat Ġadds Ġclasses Ġto Ġ" go Ġto Ġsymbol " Ġpopup Ġresult Ġgoes Ġaround ĠG oto Class Contributor . Ċ * ĠFor ĠKotlin Ġclasses Ġit Ġworks Ġusing Ġlight Ġclass Ġgeneration . Ċ * ĠWe Ġhave Ġto Ġprocess ĠKotlin Ġbuilt In Ġclasses Ġseparately Ġsince Ġno Ġlight Ġclasses Ġare Ġbuilt Ġfor Ġthem . Ċ * Ġ*/ Ċ class ĠKotlin G oto Symbol Contributor Ġ: ĠG oto Class Contributor Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget Names ( project : ĠProject , Ġinclude Non Project Items : ĠBoolean ): ĠArray < String > Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ ĠKotlin Function ShortName Index . getInstance (), ĊĠĠĠĠĠĠĠ ĠKotlin Property ShortName Index . getInstance (), ĊĠĠĠĠĠĠĠ ĠKotlin Class ShortName Index . getInstance (), ĊĠĠĠĠĠĠĠ ĠKotlin Type Alias ShortName Index . getInstance () ĊĠĠĠ Ġ). flatMap Ġ{ ĊĠĠĠĠĠĠĠ ĠStub Index . getInstance (). getAll Keys ( it . key , Ġproject ) ĊĠĠĠ Ġ}. to Typed Array () ĊĊĠĠĠ Ġoverride Ġfun Ġget Items ByName ( name : ĠString , Ġpattern : ĠString , Ġproject : ĠProject , Ġinclude Non Project Items : ĠBoolean ): ĠArray < Navigation Item > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbase Scope Ġ= Ġif Ġ( include Non Project Items ) ĠGlobal Search Scope . all Scope ( project ) Ġelse ĠGlobal Search Scope . project Scope ( project ) ĊĠĠĠĠĠĠĠ Ġval Ġno Library Source Scope Ġ= ĠKotlin Source Filter Scope . project Source And Class Files ( base Scope , Ġproject ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠArrayList < Navigation Item >() ĊĠĠĠĠĠĠĠ Ġresult Ġ+= ĠKotlin Function ShortName Index . getInstance (). get ( name , Ġproject , Ġno Library Source Scope ). filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmethod Ġ= ĠLight Class Util . get Light Class Method ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmethod Ġ== Ġnull Ġ|| Ġit . name Ġ!= Ġmethod . name ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġresult Ġ+= ĠKotlin Property ShortName Index . getInstance (). get ( name , Ġproject , Ġno Library Source Scope ). filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLight Class Util . get Light Class Backing Field ( it ) Ġ== Ġnull Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . containing Class ()?. is Interface () Ġ?: Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġresult Ġ+= ĠKotlin Class ShortName Index . getInstance (). get ( name , Ġproject , Ġno Library Source Scope ). filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġis ĠK t Enum Entry Ġ|| Ġit . containing File . virtual File ?. fileType Ġ== ĠKotlin BuiltIn FileType ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġresult Ġ+= ĠKotlin Type Alias ShortName Index . getInstance (). get ( name , Ġproject , Ġno Library Source Scope ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġresult . to Typed Array () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget QualifiedName ( item : ĠNavigation Item ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( item Ġis ĠK t Callable Declaration ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreceiver Type Ġ= Ġ( item . receiver Type Reference ?. type Element Ġas ? ĠK t User Type )?. referenced Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( receiver Type Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"$ receiver Type .${ item . name }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget QualifiedName Separator (): ĠString Ġ= Ġ"." Ċ } Ċ