/* Ċ Ġ* ĠCopyright Ġ 2 0 1 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 . backend . common . serialization . m angle . descriptor Ċ Ċ import Ġorg . jetbrains . kotlin . backend . common . serialization . m angle . Kotlin Export Checker Ċ import Ġorg . jetbrains . kotlin . backend . common . serialization . m angle . Special Declaration Type Ċ import Ġorg . jetbrains . kotlin . backend . common . serialization . m angle . published Api Annotation Ċ import Ġorg . jetbrains . kotlin . descriptors .* Ċ import Ġorg . jetbrains . kotlin . descriptors . annotations . Annotations Ċ import Ġorg . jetbrains . kotlin . name . Special Names Ċ Ċ abstract Ġclass ĠDescriptor Export Checker Visitor Ġ: ĠDeclaration Descriptor Visitor < Boolean , ĠSpecial Declaration Type >, ĊĠĠĠ ĠKotlin Export Checker < Declaration Descriptor > Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġcheck ( declaration : ĠDeclaration Descriptor , Ġtype : ĠSpecial Declaration Type ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdeclaration . accept ( this , Ġtype ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠDescriptor Visibility . is Public ly Visible (): ĠBoolean Ġ= Ġis Public API Ġ|| Ġthis Ġ=== ĠDescriptor Vis ibilities . INTERNAL ĊĊĠĠĠ Ġprivate Ġfun ĠDeclaration Descriptor Non Root . is Exported ( annotations : ĠAn notations , Ġvisibility : ĠDescriptor Visibility ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġspec ially Exported Ġ= Ġannotations . has Annotation ( published Api Annotation ) Ġ|| Ġis Platform Specific Exported () ĊĠĠĠĠĠĠĠ Ġval Ġself Exported Ġ= Ġspec ially Exported Ġ|| Ġvisibility Ġ== Ġnull Ġ|| Ġvisibility . is Public ly Visible () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġself Exported Ġ&& Ġcontaining Declaration . accept ( this @ Descriptor Export Checker Visitor , ĠSpecial Declaration Type . REG ULAR ) Ġ?: Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Package Fragment Descriptor ( descriptor : ĠPackage Fragment Descriptor , Ġdata : ĠSpecial Declaration Type ) Ġ= Ġtrue ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Package View Descriptor ( descriptor : ĠPackage View Descriptor , Ġdata : ĠSpecial Declaration Type ) Ġ= Ġtrue ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Variable Descriptor ( descriptor : ĠVariable Descriptor , Ġdata : ĠSpecial Declaration Type ) Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Function Descriptor ( descriptor : ĠFunction Descriptor , Ġdata : ĠSpecial Declaration Type ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdescriptor . run Ġ{ Ġis Exported ( annotations , Ġvisibility ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Type Parameter Descriptor ( descriptor : ĠType Parameter Descriptor , Ġdata : ĠSpecial Declaration Type ): ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Class Descriptor ( descriptor : ĠClass Descriptor , Ġdata : ĠSpecial Declaration Type ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( data Ġ== ĠSpecial Declaration Type . AN ON _ INIT ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( descriptor . name Ġ== ĠSpecial Names . NO _ NAME _ PROVIDED ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( descriptor . kind Ġ== ĠClass Kind . ENUM _ ENTRY Ġ&& Ġdata Ġ== ĠSpecial Declaration Type . REG ULAR ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn Ġdescriptor . run Ġ{ Ġis Exported ( annotations , Ġvisibility ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Type Alias Descriptor ( descriptor : ĠType Alias Descriptor , Ġdata : ĠSpecial Declaration Type ) Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( descriptor . containing Declaration Ġis ĠPackage Fragment Descriptor ) Ġtrue ĊĠĠĠĠĠĠĠ Ġelse Ġdescriptor . run Ġ{ Ġis Exported ( annotations , Ġvisibility ) Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Module Declaration ( descriptor : ĠModule Descriptor , Ġdata : ĠSpecial Declaration Type ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Constructor Descriptor ( constructor Descriptor : ĠConstructor Descriptor , Ġdata : ĠSpecial Declaration Type ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġklass Ġ= Ġconstructor Descriptor . construct ed Class ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( klass . kind . is Singleton ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġklass . accept ( this , ĠSpecial Declaration Type . REG ULAR ) ĊĠĠĠĠĠĠĠ Ġelse Ġconstructor Descriptor . run Ġ{ Ġis Exported ( annotations , Ġvisibility ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Script Descriptor ( script Descriptor : ĠScript Descriptor , Ġdata : ĠSpecial Declaration Type ): ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Property Descriptor ( descriptor : ĠProperty Descriptor , Ġdata : ĠSpecial Declaration Type ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvisibility Ġ= Ġif Ġ( data Ġ== ĠSpecial Declaration Type . BACK ING _ FIELD ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġdescriptor . visibility ĊĊĠĠĠĠĠĠĠ Ġreturn Ġdescriptor . run Ġ{ Ġis Exported ( annotations , Ġvisibility ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Value Parameter Descriptor ( descriptor : ĠValue Parameter Descriptor , Ġdata : ĠSpecial Declaration Type ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Property Getter Descriptor ( descriptor : ĠProperty Getter Descriptor , Ġdata : ĠSpecial Declaration Type ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdescriptor . run Ġ{ Ġis Exported ( corre sponding Property . annotations , Ġvisibility ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Property Setter Descriptor ( descriptor : ĠProperty Setter Descriptor , Ġdata : ĠSpecial Declaration Type ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdescriptor . run Ġ{ Ġis Exported ( corre sponding Property . annotations , Ġvisibility ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Receiver Parameter Descriptor ( descriptor : ĠReceiver Parameter Descriptor , Ġdata : ĠSpecial Declaration Type ) Ġ= Ġfalse Ċ Ċ } Ċ