/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 5 ĠJetBrains Ġs . r . o . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . kotlin . serialization . js Ċ Ċ import Ġorg . jetbrains . kotlin . descriptors . Declaration Descriptor Ċ import Ġorg . jetbrains . kotlin . descriptors . Module Descriptor Ċ import Ġorg . jetbrains . kotlin . descriptors . Package Fragment Descriptor Ċ import Ġorg . jetbrains . kotlin . descriptors . annotations . Annotation Descriptor Ċ import Ġorg . jetbrains . kotlin . name . Fq Name Ċ import Ġorg . jetbrains . kotlin . name . Name Ċ import Ġorg . jetbrains . kotlin . protobuf . CodedInputStream Ċ import Ġorg . jetbrains . kotlin . resolve . Descriptor Utils Ċ import Ġorg . jetbrains . kotlin . serialization . Proto Buf Ċ import Ġorg . jetbrains . kotlin . serialization . de serialization . Annotation Deserializer Ċ import Ġorg . jetbrains . kotlin . serialization . de serialization . Deserial ized Package Fragment Ċ import Ġorg . jetbrains . kotlin . serialization . de serialization . Name Resolver Impl Ċ import Ġorg . jetbrains . kotlin . serialization . de serialization . descriptors . Deserial ized Class Descriptor Ċ import Ġorg . jetbrains . kotlin . serialization . de serialization . descriptors . Deserial ized Package Member Scope Ċ import Ġorg . jetbrains . kotlin . serialization . de serialization . descriptors . Deserial ized Property Descriptor Ċ import Ġorg . jetbrains . kotlin . serialization . de serialization . descriptors . Deserial ized Simple Function Descriptor Ċ import Ġorg . jetbrains . kotlin . storage . Storage Manager Ċ import Ġjava . io . InputStream Ċ Ċ class ĠKotlin Javascript Package Fragment ( ĊĠĠĠĠĠĠĠ Ġfq Name : ĠF q Name , ĊĠĠĠĠĠĠĠ Ġstorage Manager : ĠStorage Manager , ĊĠĠĠĠĠĠĠ Ġmodule : ĠModule Descriptor , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġload Resource : Ġ( path : ĠString ) Ġ-> ĠInputStream ? Ċ ) Ġ: ĠDeserial ized Package Fragment ( fq Name , Ġstorage Manager , Ġmodule ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġname Resolver Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Resource S ure ( Kotlin Javascript Serialized Resource Paths . getString Table FilePath ( fq Name )). use Ġ{ Ġstream Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠName Resolver Impl . read ( stream ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġfile Map : ĠMap < Int , ĠFile Holder > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġload Resource ( Kotlin Javascript Serialized Resource Paths . getFile List FilePath ( fq Name )) ?. use Ġ{ Ġraw Input Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Ġ= ĠCode d InputStream . newInstance ( raw Input ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfiles Proto Ġ= ĠJs Proto Buf . Files . parseFrom ( input ). file OrBuilder List ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfiles Proto . associate Ġ{ Ġit . id Ġto ĠFile Holder ( it . annotation List ) Ġ} ĊĠĠĠĠĠĠĠ Ġ}. or Empty () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġannotation Deserializer : ĠAnnotation Deserializer Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠAnnotation Deserializer ( module , Ġcomponents . not Found Classes ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġclass Data Finder Ġ= ĠKotlin Javascript Class Data Finder ( name Resolver , Ġload Resource ) ĊĊĠĠĠ Ġoverride Ġfun Ġcompute Member Scope (): ĠDeserial ized Package Member Scope Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Resource S ure ( Kotlin Javascript Serialized Resource Paths . get Package FilePath ( fq Name )). use Ġ{ Ġpackage Stream Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpackage Proto Ġ= ĠProto Buf . Package . parseFrom ( package Stream , ĠJs Serializer Protocol . extension Registry ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDeserial ized Package Member Scope ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , Ġpackage Proto , Ġname Resolver , Ġcontainer Source Ġ= Ġnull , Ġcomponents Ġ= Ġcomponents , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠclassNames Ġ= Ġ{ Ġload ClassNames () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload ClassNames (): ĠCollection < Name > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Resource S ure ( Kotlin Javascript Serialized Resource Paths . get Classes In Package FilePath ( fq Name )). use Ġ{ Ġclasses Stream Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclasses Proto Ġ= ĠJs Proto Buf . Classes . parseFrom ( classes Stream , ĠJs Serializer Protocol . extension Registry ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclasses Proto . className List ?. map Ġ{ Ġid Ġ-> Ġname Resolver . getName ( id ) Ġ} Ġ?: ĠlistOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Resource S ure ( path : ĠString ): ĠInputStream Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Resource ( path ) Ġ?: Ġthrow ĠIllegalStateException (" Resource Ġnot Ġfound Ġin Ġclasspath : Ġ$ path ") ĊĊĠĠĠ Ġfun Ġget Containing File Annotations ( descriptor : ĠDeclaration Descriptor ): ĠList < Annotation Descriptor > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Descriptor Utils . getParent OfType ( descriptor , ĠPackage Fragment Descriptor :: class . java ) Ġ!= Ġthis ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Provided Ġdescriptor Ġ$ descriptor Ġdoes Ġnot Ġbelong Ġto Ġthis Ġpackage Ġ$ this ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġfile Id Ġ= Ġwhen Ġ( descriptor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDeserial ized Class Descriptor Ġ-> Ġdescriptor . class Proto . getExtension ( Js Proto Buf . class Containing File Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDeserial ized Simple Function Descriptor Ġ-> Ġdescriptor . proto . getExtension ( Js Proto Buf . function Containing File Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDeserial ized Property Descriptor Ġ-> Ġdescriptor . proto . getExtension ( Js Proto Buf . property Containing File Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġfile Id ?. let Ġ{ Ġfile Map [ it ] Ġ} ?. annotations . or Empty () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠFile Holder ( val Ġannotations Proto : ĠList < Proto Buf . Annotation >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġannotations : ĠList < Annotation Descriptor > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġannotations Proto . map Ġ{ Ġannotation Deserializer . deserialize Annotation ( it , Ġname Resolver ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ