/* Ċ Ġ* Ġ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 . backend . jvm . serialization Ċ Ċ import Ġorg . jetbrains . kotlin . backend . common . serialization . m angle . Special Declaration Type Ċ import Ġorg . jetbrains . kotlin . backend . common . serialization . signature . Id Signature Descriptor Ċ import Ġorg . jetbrains . kotlin . descriptors .* Ċ import Ġorg . jetbrains . kotlin . incremental . components . No Lookup Location Ċ import Ġorg . jetbrains . kotlin . ir . util . Id Signature Ċ import Ġorg . jetbrains . kotlin . ir . util . Kotlin M ang ler Ċ import Ġorg . jetbrains . kotlin . load . java . descriptors . Java For Kotlin Override Property Descriptor Ċ import Ġorg . jetbrains . kotlin . name . Fq Name Ċ import Ġorg . jetbrains . kotlin . resolve . descriptor Util . fq Name Unsafe Ċ import Ġorg . jetbrains . kotlin . resolve . descriptor Util . over ridden Tree As Sequence Ċ import Ġorg . jetbrains . kotlin . synt hetic . Synt hetic Java Property Descriptor Ċ import Ġorg . jetbrains . kotlin . types . type Util . contains Ċ import Ġorg . jetbrains . kotlin . utils . addTo Std lib . cast Ċ Ċ class ĠJ vm Id Signature Descriptor ( m ang ler : ĠKotlin M ang ler . Descriptor M ang ler ) Ġ: ĠId Signature Descriptor ( m ang ler ) Ġ{ ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠJ vm Descriptor Based Signature Builder ( type : ĠSpecial Declaration Type ) Ġ: ĊĠĠĠĠĠĠĠ ĠDescriptor Based Signature Builder ( type ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġcurrent File Signature : ĠId Signature . File Signature ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġextern ally Given File Signature Ġ?: Ġstored File Signature ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġplatform Specific Function ( descriptor : ĠFunction Descriptor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkeep Track Of Overrides For Po ss ibly Cl ashing Fake Override ( descriptor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompute Stored File Signature ( descriptor ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġplatform Specific Class ( descriptor : ĠClass Descriptor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompute Stored File Signature ( descriptor ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġplatform Specific Property ( descriptor : ĠProperty Descriptor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSee ĠK T - 3 1 6 4 6 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Special Java Property ( descriptor Ġis ĠJava For Kotlin Override Property Descriptor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Synt hetic Java Property ( descriptor Ġis ĠSynt hetic Java Property Descriptor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkeep Track Of Overrides For Po ss ibly Cl ashing Fake Override ( descriptor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompute Stored File Signature ( descriptor ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġplatform Specific Getter ( descriptor : ĠProperty Getter Descriptor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkeep Track Of Overrides For Po ss ibly Cl ashing Fake Override ( descriptor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompute Stored File Signature ( descriptor ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġplatform Specific Setter ( descriptor : ĠProperty Setter Descriptor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkeep Track Of Overrides For Po ss ibly Cl ashing Fake Override ( descriptor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompute Stored File Signature ( descriptor ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġplatform Specific Alias ( descriptor : ĠType Alias Descriptor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompute Stored File Signature ( descriptor ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġplatform Specific Module ( descriptor : ĠModule Descriptor ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġkeep Track Of Overrides For Po ss ibly Cl ashing Fake Override ( descriptor : ĠCallable Member Descriptor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( descriptor . kind Ġ!= ĠCallable Member Descriptor . Kind . FA KE _ OVERRIDE ) Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontaining Class Ġ= Ġdescriptor . containing Declaration Ġas ? ĠClass Descriptor Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpossibly Cl ashing Members Ġ= Ġwhen Ġ( descriptor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠProperty Accessor Descriptor Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontaining Class . un subst it uted Member Scope ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Cont ributed Variables ( descriptor . corre sponding Property . name , ĠNo Lookup Location . FROM _ BACKEND ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠProperty Descriptor Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontaining Class . un subst it uted Member Scope ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Cont ributed Variables ( descriptor . name , ĠNo Lookup Location . FROM _ BACKEND ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFunction Descriptor Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontaining Class . un subst it uted Member Scope ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Cont ributed Functions ( descriptor . name , ĠNo Lookup Location . FROM _ BACKEND ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠAssertionError (" Unexpected ĠCallable Member Descriptor : Ġ$ descriptor ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( possibly Cl ashing Members . size Ġ<= Ġ 1 ) Ġreturn ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcapturing Overrides Ġ= Ġdescriptor . over ridden Tree As Sequence ( true ). filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . kind Ġ!= ĠCallable Member Descriptor . Kind . FA KE _ OVERRIDE Ġ&& Ġis Capt uring Type Parameter ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. toList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( capt uring Overrides . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverridden Ġ= Ġcapturing Overrides . sorted By Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . containing Declaration . cast < Class Descriptor >(). fq Name Unsafe . asString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġis Capt uring Type Parameter ( member : ĠCallable Member Descriptor ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmember . extension Receiver Parameter ?. is Capt uring Type Parameter () Ġ== Ġtrue Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmember . value Parameters . any Ġ{ Ġit . is Capt uring Type Parameter () Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠParameter Descriptor . is Capt uring Type Parameter (): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype . contains Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdescriptor Ġ= Ġit . constructor . declaration Descriptor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescriptor Ġis ĠType Parameter Descriptor Ġ&& Ġdescriptor . containing Declaration Ġis ĠClass Descriptor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġcompute Stored File Signature ( descriptor : ĠDeclaration Descriptor With Source ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġis TopLevel Private Ġneeds Ġto Ġbe Ġalready Ġset . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is TopLevel Private Ġ&& Ġextern ally Given File Signature Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstored File Signature Ġ= ĠId Signature . File Signature ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescriptor . source . containing File , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescriptor . containing Package () Ġ?: ĠF q Name . ROOT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescriptor . source . containing File . name Ġ?: Ġ" unknown " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġstored File Signature : ĠId Signature . File Signature ? Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Signature Builder ( type : ĠSpecial Declaration Type ): ĠDescriptor Based Signature Builder Ġ= ĊĠĠĠĠĠĠĠ ĠJ vm Descriptor Based Signature Builder ( type ) ĊĊĠĠĠ Ġoverride Ġfun Ġwith File Signature ( file Signature : ĠId Signature . File Signature , Ġbody : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġextern ally Given File Signature Ġ= Ġfile Signature ĊĠĠĠĠĠĠĠ Ġbody () ĊĠĠĠĠĠĠĠ Ġextern ally Given File Signature Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġextern ally Given File Signature : ĠId Signature . File Signature ? Ġ= Ġnull Ċ } Ċ