/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 8 ĠJetBrains Ġs . r . o . Ġ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 . backend . kon an . ir as descriptors Ċ Ċ import Ġorg . jetbrains . kotlin . backend . common . at Most One Ċ import Ġorg . jetbrains . kotlin . backend . kon an . descriptors . kon an Backing Field Ċ import Ġorg . jetbrains . kotlin . backend . kon an . descriptors . is Interface Ċ import Ġorg . jetbrains . kotlin . builtins . Kotlin Built Ins Ċ import Ġorg . jetbrains . kotlin . descriptors . Class Kind Ċ import Ġorg . jetbrains . kotlin . descriptors . Modal ity Ċ import Ġorg . jetbrains . kotlin . descriptors . Vis ibilities Ċ import Ġorg . jetbrains . kotlin . ir . declarations .* Ċ import Ġorg . jetbrains . kotlin . ir . declarations . impl . Ir Field Impl Ċ import Ġorg . jetbrains . kotlin . ir . expressions .* Ċ import Ġorg . jetbrains . kotlin . ir . symbols . Ir Class Symbol Ċ import Ġorg . jetbrains . kotlin . ir . types .* Ċ import Ġorg . jetbrains . kotlin . ir . util . explicit Parameters Ċ import Ġorg . jetbrains . kotlin . name . Fq Name Ċ import Ġorg . jetbrains . kotlin . name . Name Ċ import Ġorg . jetbrains . kotlin . serialization . de serialization . descriptors . Deserial ized Property Descriptor Ċ Ċ val ĠIr Constructor . construct ed Class Ġget () Ġ= Ġthis . parent Ġas ĠIr Class Ċ Ċ val Ġ< T Ġ: ĠIr Declaration > ĠT . original Ġget () Ġ= Ġthis Ċ val ĠIr Declaration . containing Declaration Ġget () Ġ= Ġthis . parent Ċ Ċ val ĠIr Declaration Parent . fq Name Safe : ĠF q Name Ġget () Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠ Ġis ĠIr Package Fragment Ġ-> Ġthis . fq Name ĊĠĠĠ Ġis ĠIr Declaration Ġ-> Ġthis . parent . fq Name Safe . child ( this . name ) ĊĊĠĠĠ Ġelse Ġ-> Ġerror ( this ) Ċ } Ċ Ċ val ĠIr Declaration . name : ĠName ĊĠĠĠ Ġget () Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠIr Simple Function Ġ-> Ġthis . name ĊĠĠĠĠĠĠĠ Ġis ĠIr Class Ġ-> Ġthis . name ĊĠĠĠĠĠĠĠ Ġis ĠIr Enum Entry Ġ-> Ġthis . name ĊĠĠĠĠĠĠĠ Ġis ĠIr Property Ġ-> Ġthis . name ĊĠĠĠĠĠĠĠ Ġis ĠIr Local Deleg ated Property Ġ-> Ġthis . name ĊĠĠĠĠĠĠĠ Ġis ĠIr Field Ġ-> Ġthis . name ĊĠĠĠĠĠĠĠ Ġis ĠIr Variable Ġ-> Ġthis . name ĊĠĠĠĠĠĠĠ Ġis ĠIr Constructor Ġ-> ĠSPECIAL _ INIT _ NAME ĊĠĠĠĠĠĠĠ Ġis ĠIr Value Parameter Ġ-> Ġthis . name ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġerror ( this ) ĊĠĠĠ Ġ} Ċ Ċ private Ġval ĠSPECIAL _ INIT _ NAME Ġ= ĠName . special ("< init >") Ċ Ċ val ĠIr Field . fq Name Safe : ĠF q Name Ġget () Ġ= Ġthis . parent . fq Name Safe . child ( this . name ) Ċ Ċ /** Ċ Ġ* Ġ@ return Ġn atur ally - ordered Ġlist Ġof Ġall Ġparameters Ġavailable Ġinside Ġthe Ġfunction Ġbody . Ċ Ġ*/ Ċ val ĠIr Function . all Parameters : ĠList < Ir Value Parameter > ĊĠĠĠ Ġget () Ġ= Ġif Ġ( this Ġis ĠIr Constructor ) Ġ{ ĊĠĠĠĠĠĠĠ ĠlistOf ( this . construct ed Class . this Receiver ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġerror ( this . descriptor ) ĊĠĠĠĠĠĠĠ Ġ) Ġ+ Ġexplicit Parameters ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġexplicit Parameters ĊĠĠĠ Ġ} Ċ Ċ val ĠIr Value Parameter . is Var arg Ġget () Ġ= Ġthis . var arg ElementType Ġ!= Ġnull Ċ Ċ val ĠIr Function . is Suspend Ġget () Ġ= Ġthis Ġis ĠIr Simple Function Ġ&& Ġthis . is Suspend Ċ Ċ fun ĠIr Class . is Unit () Ġ= Ġthis . fq Name Safe Ġ== ĠKotlin Built Ins . FQ _ NAMES . unit . to Safe () Ċ Ċ fun ĠIr Class . is Kotlin Array () Ġ= Ġthis . fq Name Safe Ġ== ĠKotlin Built Ins . FQ _ NAMES . array . to Safe () Ċ Ċ val ĠIr Class . super Classes Ġget () Ġ= Ġthis . super Types . map Ġ{ Ġit . classifier OrFail Ġas ĠIr Class Symbol Ġ} Ċ fun ĠIr Class . get Super Class Not Any () Ġ= Ġthis . super Classes . map Ġ{ Ġit . owner Ġ}. at Most One Ġ{ Ġ! it . is Interface Ġ&& Ġ! it . is Any () Ġ} Ċ Ċ fun ĠIr Class . is Any () Ġ= Ġthis . fq Name Safe Ġ== ĠKotlin Built Ins . FQ _ NAMES . any . to Safe () Ċ fun ĠIr Class . is Nothing () Ġ= Ġthis . fq Name Safe Ġ== ĠKotlin Built Ins . FQ _ NAMES . nothing . to Safe () Ċ Ċ fun ĠIr Class . get Super Interfaces () Ġ= Ġthis . super Classes . map Ġ{ Ġit . owner Ġ}. filter Ġ{ Ġit . is Interface Ġ} Ċ Ċ val ĠIr Property . kon an Backing Field : ĠIr Field ? ĊĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠ Ġassert ( this . is Real ) ĊĠĠĠĠĠĠĠ Ġthis . back ing Field ?. let Ġ{ Ġreturn Ġit Ġ} ĊĊĠĠĠĠĠĠĠ Ġ( this . descriptor Ġas ? ĠDeserial ized Property Descriptor )?. kon an Backing Field ?. let Ġ{ Ġbacking FieldDescriptor Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠIr Field Impl ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . start Offset , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . end Offset , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIr Declaration Origin . PROPERTY _ BACK ING _ FIELD , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbacking FieldDescriptor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . getter !!. returnType ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . parent Ġ= Ġthis . parent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . back ing Field Ġ= Ġresult ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} Ċ Ċ val ĠIr Field . containing Class Ġget () Ġ= Ġthis . parent Ġas ? ĠIr Class Ċ Ċ val ĠIr Function . is Real Ġget () Ġ= Ġthis . origin Ġ!= ĠIr Declaration Origin . FA KE _ OVERRIDE Ċ Ċ // ĠNote : Ġpsi 2 ir Ġdoesn 't Ġset Ġ` origin Ġ= ĠFA KE _ OVERRIDE ` Ġfor Ġfields Ġand Ġproperties Ġyet . Ċ val ĠIr Property . is Real : ĠBoolean Ġget () Ġ= Ġthis . descriptor . kind . is Real Ċ val ĠIr Field . is Real : ĠBoolean Ġget () Ġ= Ġthis . descriptor . kind . is Real Ċ Ċ val ĠIr Simple Function . is Over rid able : ĠBoolean ĊĠĠĠ Ġget () Ġ= Ġvisibility Ġ!= ĠVis ibilities . PRIVATE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġmod ality Ġ!= ĠMod ality . FINAL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġ( parent Ġas ? ĠIr Class )?. is Final Class Ġ!= Ġtrue Ċ Ċ val ĠIr Function . is Over rid able Ġget () Ġ= Ġthis Ġis ĠIr Simple Function Ġ&& Ġthis . is Over rid able Ċ Ċ val ĠIr Function . is Over rid able Or Overrides ĊĠĠĠ Ġget () Ġ= Ġthis Ġis ĠIr Simple Function Ġ&& Ġ( this . is Over rid able Ġ|| Ġthis . over ridden Symbols . isNotEmpty ()) Ċ Ċ val ĠIr Class . is Final Class : ĠBoolean ĊĠĠĠ Ġget () Ġ= Ġmod ality Ġ== ĠMod ality . FINAL Ġ&& Ġkind Ġ!= ĠClass Kind . ENUM _ CLASS Ċ Ċ fun ĠIr Simple Function . overrides ( other : ĠIr Simple Function ): ĠBoolean Ġ{ ĊĠĠĠ Ġif Ġ( this Ġ== Ġother ) Ġreturn Ġtrue ĊĊĠĠĠ Ġthis . over ridden Symbols . forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( it . owner . overrides ( other )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġfalse Ċ } Ċ Ċ fun ĠIr Class . is Special Class With No Sup ert ypes () Ġ= Ġthis . is Any () Ġ|| Ġthis . is Nothing () Ċ Ċ internal Ġval ĠIr Value Parameter . is Value Parameter Ġget () Ġ= Ġthis . index Ġ>= Ġ 0 Ċ Ċ private Ġval ĠIr Call . annotation Class ĊĠĠĠ Ġget () Ġ= Ġ( this . symbol . owner Ġas ĠIr Constructor ). construct ed Class Ċ Ċ fun ĠList < Ir Call >. has Annotation ( fq Name : ĠF q Name ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġthis . any Ġ{ Ġit . annotation Class . fq Name Safe Ġ== Ġfq Name Ġ} Ċ Ċ fun ĠIr Annotation Container . has Annotation ( fq Name : ĠF q Name ) Ġ= ĊĠĠĠĠĠĠĠ Ġthis . annotations . has Annotation ( fq Name ) Ċ Ċ fun ĠList < Ir Call >. find Annotation ( fq Name : ĠF q Name ): ĠIr Call ? Ġ= Ġthis . first OrNull Ġ{ ĊĠĠĠ Ġit . annotation Class . fq Name Safe Ġ== Ġfq Name Ċ } Ċ