/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 2 0 Ġ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 . descriptors . common izer . utils Ċ Ċ import Ġorg . jetbrains . kotlin . name . Name Ċ import Ġorg . jetbrains . kotlin . resolve . constants .* Ċ Ċ internal Ġfun Ġcheck Constant Supported In Common ization ( ĊĠĠĠ Ġconstant Value : ĠConstant Value <* >, ĊĠĠĠ Ġconstant Name : ĠName ? Ġ= Ġnull , ĊĠĠĠ Ġowner : ĠAny , ĊĠĠĠ Ġallow Annotation Values : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ ĠonError : Ġ( String ) Ġ-> ĠNothing Ġ= Ġ:: error Ċ ) Ġ{ ĊĠĠĠ Ġcheck Constant Supported In Common ization ( ĊĠĠĠĠĠĠĠ Ġconstant Value Ġ= Ġconstant Value , ĊĠĠĠĠĠĠĠ Ġlocation Ġ= Ġ{ Ġ"${ owner :: class . java }, Ġ$ owner " Ġ+ Ġconstant Name ?. asString ()?. let Ġ{ Ġ" [$ it ]" Ġ} Ġ}, ĊĠĠĠĠĠĠĠ Ġallow Annotation Values Ġ= Ġallow Annotation Values , ĊĠĠĠĠĠĠĠ ĠonError Ġ= ĠonError ĊĠĠĠ Ġ) Ċ } Ċ Ċ private Ġfun Ġcheck Constant Supported In Common ization ( ĊĠĠĠ Ġconstant Value : ĠConstant Value <* >, ĊĠĠĠ Ġlocation : Ġ() Ġ-> ĠString , ĊĠĠĠ Ġallow Annotation Values : ĠBoolean , ĊĠĠĠ ĠonError : Ġ( String ) Ġ-> ĠNothing Ċ ) Ġ{ ĊĠĠĠ Ġ@ Suppress (" Trailing Comma ") ĊĠĠĠ Ġwhen Ġ( constant Value ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠString Value , ĊĠĠĠĠĠĠĠ Ġis ĠInteger Value Constant <* >, ĊĠĠĠĠĠĠĠ Ġis ĠUnsigned Value Constant <* >, ĊĠĠĠĠĠĠĠ Ġis ĠBoolean Value , ĊĠĠĠĠĠĠĠ Ġis ĠNull Value , ĊĠĠĠĠĠĠĠ Ġis ĠDouble Value , ĊĠĠĠĠĠĠĠ Ġis ĠFloat Value , ĊĠĠĠĠĠĠĠ Ġis ĠEnum Value Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ// ĠOK ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġis ĠAnnotation Value Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( allow Annotation Values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( constant Value . value . fq Name ?. is Under Standard Kotlin Packages Ġ!= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonError (" Only Ġ${ constant Value :: class . java } Ġconst Ġvalues Ġfrom ĠKotlin Ġstandard Ġpackages Ġare Ġsupported , Ġ$ constant Value Ġat Ġ${ location () }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ// ĠOK ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ// Ġelse Ġfail Ġ( see Ġbelow ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġis ĠArray Value Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconstant Value . value . forEach Indexed Ġ{ Ġindex , Ġinner Constant Value Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Constant Supported In Common ization ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstant Value Ġ= Ġinner Constant Value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Ġ= Ġ{ Ġ"${ location ()} [$ index ]" Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġallow Annotation Values Ġ= Ġallow Annotation Values , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonError Ġ= ĠonError ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ// ĠOK ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠonError (" Unsupported Ġconst Ġvalue Ġtype : Ġ${ constant Value :: class . java }, Ġ$ constant Value Ġat Ġ${ location () }") Ċ } ĊĊ