// ĠCopyright Ġ 2 0 0 0 - 2 0 2 1 ĠJetBrains Ġs . r . o . Ġand Ġcontributors . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ package Ġorg . jetbrains . kotlin . idea . search . ref Index Ċ Ċ import Ġcom . intellij . compiler . backward Refs . Language Compiler Ref Adapter Ċ import Ġcom . intellij . openapi . application . run Read Action Ċ import Ġcom . intellij . openapi . file Types . FileType Ċ import Ġcom . intellij . psi . Psi Class Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġcom . intellij . psi . Psi Modifier Ċ import Ġcom . intellij . psi . search . Global Search Scope Ċ import Ġcom . intellij . util . Processor Ċ import Ġorg . jetbrains . j ps . backward Refs . Compiler Ref Ċ import Ġorg . jetbrains . j ps . backward Refs . Name Enumerator Ċ import Ġorg . jetbrains . kotlin . as Java . un wrapped Ċ import Ġorg . jetbrains . kotlin . file Classes . java File Facade Fq Name Ċ import Ġorg . jetbrains . kotlin . idea . Kotlin FileType Ċ import Ġorg . jetbrains . kotlin . idea . search . declarations Search . Hierarchy Search Request Ċ import Ġorg . jetbrains . kotlin . idea . search . declarations Search . search In her itors Ċ import Ġorg . jetbrains . kotlin . idea . util .* Ċ import Ġorg . jetbrains . kotlin . lexer . Kt Tokens Ċ import Ġorg . jetbrains . kotlin . load . java . Jvm Ab i Ċ import Ġorg . jetbrains . kotlin . psi .* Ċ import Ġorg . jetbrains . kotlin . psi . psi Util . is TopLevel Kt Or Java Member Ċ import Ġorg . jetbrains . kotlin . resolve . jvm . annotations . JVM _ OVERLOAD S _ FQ _ NAME Ċ Ċ class ĠKotlin Compiler Ref Helper Ġ: ĠLanguage Compiler Ref Adapter . External Language Helper () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget Affected File Types (): ĠSet < FileType > Ġ= Ġset Of ( Kotlin FileType . INSTANCE ) ĊĠĠĠ Ġoverride Ġfun Ġas Compiler Ref ( element : ĠPsi Element , Ġnames : ĠName Enumerator ): ĠCompiler Ref ? Ġ= Ġnull ĊĠĠĠ Ġoverride Ġfun Ġas Compiler Refs ( element : ĠPsi Element , Ġnames : ĠName Enumerator ): ĠList < Compiler Ref >? Ġ= ĊĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġoriginal Element Ġ= Ġelement . un wrapped ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠK t Class Or Object Ġ-> Ġoriginal Element . as Compiler Ref ( names )?. let (:: listOf ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠK t Constructor < *> Ġ-> Ġoriginal Element . as Compiler Ref ( names )?. let (:: listOf ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠK t Callable Declaration Ġ-> Ġoriginal Element . take If Ġ{ Ġit . is TopLevel Kt Or Java Member () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . containing Kt File ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . java File Facade Fq Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . asString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġqualifier Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( original Element ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠK t Named Function Ġ-> Ġoriginal Element . as Compiler Ref ( qual ifier , Ġnames ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠK t Property Ġ-> Ġoriginal Element . as Compiler Ref ( qual ifier , Ġnames ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠK t Class Or Object . as Compiler Ref ( names : ĠName Enumerator ): ĠCompiler Ref ? Ġ= Ġj vm Fq Name ĊĠĠĠĠĠĠĠ Ġ? . let ( names :: try Enumerate ) ĊĠĠĠĠĠĠĠ Ġ? . let ( Compiler Ref :: Java Compiler Class Ref ) ĊĊĠĠĠ Ġprivate Ġfun ĠK t Constructor <* >. as Compiler Ref ( names : ĠName Enumerator ): ĠCompiler Ref ? Ġ= Ġget Containing Class Or Object (). jvm Fq Name ĊĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġqualifier Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCompiler Ref . Java Compiler Method Ref ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnames . try Enumerate ( qual ifier ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnames . try Enumerate ("< init > "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Parameters . size , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠK t Named Function . as Compiler Ref ( qual ifier : ĠString , Ġnames : ĠName Enumerator ): ĠList < Compiler Ref > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġqualifier Id Ġ= Ġnames . try Enumerate ( qual ifier ) ĊĠĠĠĠĠĠĠ Ġval Ġname Id Ġ= Ġnames . try Enumerate ( jvm Name Ġ?: Ġname ) ĊĠĠĠĠĠĠĠ Ġval ĠnumberOf Arguments Ġ= ĠnumberOf Arguments ( count Receiver Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġif Ġ( find Annotation ( JVM _ OVERLOAD S _ FQ _ NAME . short Name (). asString ()) Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠCompiler Ref . Java Compiler Method Ref ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġqualifier Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠnumberOf Arguments , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). let (:: listOf ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠnumberOf Arguments . minus ( value Parameters . count ( Kt Parameter :: has DefaultValue )). range To ( numberOf Arguments ). map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCompiler Ref . Java Compiler Method Ref ( qual ifier Id , Ġname Id , Ġit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠK t Property . as Compiler Ref ( qual ifier : ĠString , Ġnames : ĠName Enumerator ): ĠList < Compiler Ref >? Ġ= Ġname ?. let Ġ{ ĠpropertyName Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġqualifier Id Ġ= Ġnames . try Enumerate ( qual ifier ) ĊĠĠĠĠĠĠĠ Ġif Ġ( has Modifier ( Kt Tokens . CONST _ KEYWORD )) Ġreturn @ let ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCompiler Ref . Java Compiler Field Ref ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġqualifier Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠJ vm Name Ġfor Ġconstants Ġisn 't Ġsupported ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnames . try Enumerate ( propertyName ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval ĠnumberOf Arguments Ġ= ĠnumberOf Arguments ( count Receiver Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġval Ġgetter Ġ= ĠCompiler Ref . Java Compiler Method Ref ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġqualifier Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnames . try Enumerate ( jvm Getter Name Ġ?: ĠJ vm Ab i . getter Name ( propertyName )), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠnumberOf Arguments , ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsetter Ġ= Ġif Ġ( is Var ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCompiler Ref . Java Compiler Method Ref ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġqualifier Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnames . try Enumerate ( jvm Setter Name Ġ?: ĠJ vm Ab i . setter Name ( propertyName )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠnumberOf Arguments Ġ+ Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĊĠĠĠĠĠĠĠ ĠlistOf NotNull ( getter , Ġsetter ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Hierarchy Restricted To Library Scope ( ĊĠĠĠĠĠĠĠ Ġbase Ref : ĠCompiler Ref , ĊĠĠĠĠĠĠĠ Ġbase Psi : ĠPsi Element , ĊĠĠĠĠĠĠĠ Ġnames : ĠName Enumerator , ĊĠĠĠĠĠĠĠ Ġlibrary Scope : ĠGlobal Search Scope ĊĠĠĠ Ġ): ĠList < Compiler Ref > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġoverridden Ġ= Ġmutable ListOf < Compiler Ref >() ĊĠĠĠĠĠĠĠ Ġval Ġprocessor Ġ= ĠProcessor Ġ{ Ġpsi Class : ĠPsi Class Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpsi Class . take Unless Ġ{ Ġit . has Modifier Property ( Psi Modifier . PRIVATE ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġrun Read Action Ġ{ Ġit . qualified Name Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġnames . try Enumerate ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġoverridden . add ( base Ref . override ( it )) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠH ierarchy Search Request ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoriginal Element Ġ= Ġbase Psi , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Scope Ġ= Ġlibrary Scope , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Dee ply Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġ). search In her itors (). forEach ( processor ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġoverridden ĊĠĠĠ Ġ} Ċ } Ċ