/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 ĠFranc is ĠWang Ċ Ġ* Ċ Ġ* Ġ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 Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttps :// 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 Ġio . ver ik . compiler . transform . mid Ċ Ċ import Ġio . ver ik . compiler . ast . element . common . E Expression Ċ import Ġio . ver ik . compiler . ast . element . kt . EK t Call Expression Ċ import Ġio . ver ik . compiler . ast . element . kt . EK t Reference Expression Ċ import Ġio . ver ik . compiler . ast . element . kt . E String Template Expression Ċ import Ġio . ver ik . compiler . ast . element . sv . E Enum Ċ import Ġio . ver ik . compiler . ast . element . sv . E String Expression Ċ import Ġio . ver ik . compiler . ast . element . sv . ES v Enum Entry Ċ import Ġio . ver ik . compiler . ast . property . Expression String Entry Ċ import Ġio . ver ik . compiler . common . Project Stage Ċ import Ġio . ver ik . compiler . common . Tree Visitor Ċ import Ġio . ver ik . compiler . core . common . Core Ċ import Ġio . ver ik . compiler . main . Project Context Ċ Ċ object ĠEnum Name Transformer Stage Ġ: ĠProject Stage () Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġcheck Normalization Ġ= Ġtrue ĊĊĠĠĠ Ġoverride Ġfun Ġprocess ( project Context : ĠProject Context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġproject Context . project . accept ( Enum Name Transformer Visitor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġobject ĠEnum Name Transformer Visitor Ġ: ĠTree Visitor () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġtransform ( expression : ĠE Expression ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( expression . type . reference Ġis ĠE Enum ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( expression Ġis ĠE Kt Reference Expression Ġ&& Ġexpression . reference Ġis ĠES v Enum Entry ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstring Expression Ġ= ĠE String Expression ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpression . location , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpression . reference . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpression . replace ( string Expression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparent Ġ= Ġexpression . parent NotNull () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcall Expression Ġ= ĠE Kt Call Expression ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpression . location , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCore . Kt . C _ String . to Type (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCore . Sv . F _ name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpression , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarray ListOf (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarray ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent . replace Child As Expression Container ( expression , Ġcall Expression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit String Template Expression ( string Template Expression : ĠE String Template Expression ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . visit String Template Expression ( string Template Expression ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstring Template Expression . entries . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġis ĠExpression String Entry ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransform ( it . expression ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Kt Call Expression ( call Expression : ĠE Kt Call Expression ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . visit Kt Call Expression ( call Expression ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( call Expression . reference ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCore . Kt . Io . F _ print _ Any Ġ-> Ġtransform ( call Expression . value Arguments [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCore . Kt . Io . F _ println _ Any Ġ-> Ġtransform ( call Expression . value Arguments [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ