package Ġdev . z acs we ers . mos h ix . sealed . codegen . k sp Ċ Ċ import Ġcom . google . devtools . k sp . is Local Ċ import Ġcom . google . devtools . k sp . processing . Code Generator Ċ import Ġcom . google . devtools . k sp . processing . Dependencies Ċ import Ġcom . google . devtools . k sp . symbol . KS Class Declaration Ċ import Ġcom . google . devtools . k sp . symbol . KS Type Ċ import Ġcom . google . devtools . k sp . symbol . KS Type Parameter Ċ import Ġcom . google . devtools . k sp . symbol . KS Type Reference Ċ import Ġcom . google . devtools . k sp . symbol . Variance . CON TR AV ARI ANT Ċ import Ġcom . google . devtools . k sp . symbol . Variance . CO VARIANT Ċ import Ġcom . google . devtools . k sp . symbol . Variance . STAR Ċ import Ġcom . squareup . kotlin po et . ClassName Ċ import Ġcom . squareup . kotlin po et . File Spec Ċ import Ġcom . squareup . kotlin po et . K Modifier Ċ import Ġcom . squareup . kotlin po et . Parameterized TypeName . Companion . parameter ized By Ċ import Ġcom . squareup . kotlin po et . TypeName Ċ import Ġcom . squareup . kotlin po et . Type Variable Name Ċ import Ġjava . io . OutputStream Writer Ċ import Ġjava . nio . charset . StandardCharsets . UTF _ 8 Ċ import Ġcom . squareup . kotlin po et . STAR Ġas ĠK p Star Ċ Ċ internal Ġfun ĠK S Type . to TypeName (): ĠType Name Ġ{ ĊĠ Ġval Ġtype Ġ= Ġwhen Ġ( declaration ) Ġ{ ĊĠĠĠ Ġis ĠK S Class Declaration Ġ-> Ġ{ ĊĠĠĠĠĠ Ġ( declaration Ġas ĠK S Class Declaration ). to TypeName ( ĊĠĠĠĠĠĠĠ Ġarguments . map Ġ{ Ġit . type !!. resolve (). to TypeName () Ġ}) ĊĠĠĠ Ġ} ĊĠĠĠ Ġis ĠK S Type Parameter Ġ-> Ġ{ ĊĠĠĠĠĠ Ġ( declaration Ġas ĠK S Type Parameter ). to TypeName () ĊĠĠĠ Ġ} ĊĠĠĠ Ġelse Ġ-> Ġerror (" Unsupported Ġtype : Ġ$ declaration ") ĊĠ Ġ} ĊĊĠ Ġval Ġnullable Ġ= Ġmake Nullable () Ġ== Ġthis ĊĊĠ Ġreturn Ġtype . copy ( nullable Ġ= Ġnullable ) Ċ } Ċ Ċ internal Ġfun ĠK S Class Declaration . to TypeName ( ĊĠ Ġactual Type Args : ĠList < TypeName > Ġ= Ġtype Parameters . map Ġ{ Ġit . to TypeName () Ġ}, Ċ ): ĠType Name Ġ{ ĊĠ Ġval ĠclassName Ġ= Ġto ClassName () ĊĠ Ġreturn Ġif Ġ( type Parameters . isNotEmpty ()) Ġ{ ĊĠĠĠ ĠclassName . parameter ized By ( actual Type Args ) ĊĠ Ġ} Ġelse Ġ{ ĊĠĠĠ ĠclassName ĊĠ Ġ} Ċ } Ċ Ċ internal Ġfun ĠK S Class Declaration . to ClassName (): ĠClass Name Ġ{ ĊĠ Ġrequire (! is Local ()) Ġ{ ĊĠĠĠ Ġ" Local / anonymous Ġclasses Ġare Ġnot Ġsupported !" ĊĠ Ġ} ĊĠ Ġval Ġpkg Name Ġ= ĠpackageName . asString () ĊĠ Ġval Ġtypes String Ġ= Ġqualified Name !!. asString (). remove Prefix ("$ pkg Name .") ĊĊĠ Ġval Ġsimple Names Ġ= Ġtypes String ĊĠĠĠ Ġ. split (".") ĊĠ Ġreturn ĠClass Name ( pkg Name , Ġsimple Names ) Ċ } Ċ Ċ internal Ġfun ĠK S Type Parameter . to TypeName (): ĠType Name Ġ{ ĊĠ Ġif Ġ( variance Ġ== ĠST AR ) Ġreturn ĠK p Star ĊĠ Ġval Ġtype Var Name Ġ= Ġname . get ShortName () ĊĠ Ġval Ġtype Var Bounds Ġ= Ġbounds . map Ġ{ Ġit . to TypeName () Ġ} ĊĠ Ġval Ġtype Var Variance Ġ= Ġwhen Ġ( variance ) Ġ{ ĊĠĠĠ ĠCO VARIANT Ġ-> ĠK Modifier . IN ĊĠĠĠ ĠCON TR AV ARI ANT Ġ-> ĠK Modifier . OUT ĊĠĠĠ Ġelse Ġ-> Ġnull ĊĠ Ġ} ĊĠ Ġreturn ĠType Variable Name ( type Var Name , Ġbounds Ġ= Ġtype Var Bounds , Ġvariance Ġ= Ġtype Var Variance ) Ċ } Ċ Ċ internal Ġfun ĠK S Type Reference . to TypeName (): ĠType Name Ġ{ ĊĠ Ġval Ġtype Ġ= Ġresolve () ĊĠ Ġreturn Ġtype . to TypeName () Ċ } Ċ Ċ internal Ġfun ĠFile Spec . writeTo ( code Generator : ĠCode Generator ) Ġ{ ĊĠ Ġval Ġdependencies Ġ= ĠDependencies ( false , Ġ* origin ating KS Files (). to Typed Array ()) ĊĠ Ġval Ġfile Ġ= Ġcode Generator . createNew File ( dependencies , ĠpackageName , Ġname ) ĊĠ Ġ// ĠDon 't Ġuse ĠwriteTo ( file ) Ġbecause Ġthat Ġtries Ġto Ġhandle Ġdirectories Ġunder Ġthe Ġh ood ĊĠ ĠOutputStream Writer ( file , ĠUTF _ 8 ) ĊĠĠĠ Ġ. use (:: writeTo ) Ċ }