/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 6 Ġ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 . ir . descriptors Ċ Ċ import Ġorg . jetbrains . kotlin . builtins . Kotlin Built Ins Ċ import Ġorg . jetbrains . kotlin . descriptors .* Ċ import Ġorg . jetbrains . kotlin . descriptors . annotations . Annotations Ċ import Ġorg . jetbrains . kotlin . descriptors . impl . Simple Function Descriptor Impl Ċ import Ġorg . jetbrains . kotlin . descriptors . impl . Type Parameter Descriptor Impl Ċ import Ġorg . jetbrains . kotlin . descriptors . impl . Value Parameter Descriptor Impl Ċ import Ġorg . jetbrains . kotlin . ir . declarations . Ir Declaration Origin Ċ import Ġorg . jetbrains . kotlin . ir . declarations . Ir Simple Function Ċ import Ġorg . jetbrains . kotlin . ir . declarations . impl . Ir External Package Fragment Impl Ċ import Ġorg . jetbrains . kotlin . ir . symbols . impl . Ir External Package Fragment Symbol Impl Ċ import Ġorg . jetbrains . kotlin . ir . util . Declaration Stub Generator Ċ import Ġorg . jetbrains . kotlin . ir . util . Symbol Table Ċ import Ġorg . jetbrains . kotlin . name . Fq Name Ċ import Ġorg . jetbrains . kotlin . name . Name Ċ import Ġorg . jetbrains . kotlin . types . Kotlin Type Ċ import Ġorg . jetbrains . kotlin . types . Kotlin Type Factory Ċ import Ġorg . jetbrains . kotlin . types . Variance Ċ Ċ class ĠIr Built Ins ( val Ġbuilt Ins : ĠKotlin Built Ins ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġpackage Fragment Ġ= ĠIr Built ins Package Fragment Descriptor Impl ( built Ins . built Ins Module , ĠK OT LIN _ INTERNAL _ IR _ FQ N ) ĊĠĠĠ Ġval Ġir Built Ins External Package Fragment Ġ= ĠIr External Package Fragment Impl ( Ir External Package Fragment Symbol Impl ( package Fragment )) ĊĊĠĠĠ Ġprivate Ġval Ġstub Builder Ġ= ĠDeclaration Stub Generator ( Symbol Table (), ĠIr Declaration Origin . IR _ BUIL T INS _ ST UB ) ĊĊĠĠĠ Ġprivate Ġfun Ġdefine Operator ( name : ĠString , ĠreturnType : ĠKotlin Type , Ġvalue Parameter Types : ĠList < Kotlin Type >): ĠIr Simple Function Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġoperator Descriptor Ġ= ĠIr Simple Builtin Operator Descriptor Impl ( package Fragment , ĠName . identifier ( name ), ĠreturnType ) ĊĠĠĠĠĠĠĠ Ġfor Ġ(( i , Ġvalue ParameterType ) Ġin Ġvalue Parameter Types . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoperator Descriptor . add Value Parameter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIr Builtin Value Parameter Descriptor Impl ( operator Descriptor , ĠName . identifier (" arg $ i "), Ġi , Ġvalue ParameterType ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġadd Stub To Package Fragment ( operator Descriptor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Stub To Package Fragment ( descriptor : ĠSimple Function Descriptor ): ĠIr Simple Function Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġir Simple Function Ġ= Ġstub Builder . generate Function Stub ( descriptor ) ĊĠĠĠĠĠĠĠ Ġir Built Ins External Package Fragment . declarations . add ( ir Simple Function ) ĊĠĠĠĠĠĠĠ Ġreturn Ġir Simple Function ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ< T Ġ: ĠSimple Function Descriptor > ĠT . add Stub (): ĠIr Simple Function Ġ= ĊĠĠĠĠĠĠĠ Ġadd Stub To Package Fragment ( this ) ĊĊĠĠĠ Ġval Ġbool Ġ= Ġbuilt Ins . boolean Type ĊĠĠĠ Ġval Ġany Ġ= Ġbuilt Ins . any Type ĊĠĠĠ Ġval Ġany N Ġ= Ġbuilt Ins . nullable Any Type ĊĠĠĠ Ġval Ġint Ġ= Ġbuilt Ins . int Type ĊĠĠĠ Ġval Ġnothing Ġ= Ġbuilt Ins . nothing Type ĊĠĠĠ Ġval Ġunit Ġ= Ġbuilt Ins . unit Type ĊĠĠĠ Ġval Ġstring Ġ= Ġbuilt Ins . string Type ĊĊĠĠĠ Ġval Ġeq eq eq Fun Ġ= Ġdefine Operator (" EQ EQ EQ ", Ġbool , ĠlistOf ( any N , Ġany N )) ĊĠĠĠ Ġval Ġeq eq Fun Ġ= Ġdefine Operator (" EQ EQ ", Ġbool , ĠlistOf ( any N , Ġany N )) ĊĠĠĠ Ġval Ġlt 0 Fun Ġ= Ġdefine Operator (" LT 0 ", Ġbool , ĠlistOf ( int )) ĊĠĠĠ Ġval Ġl te q 0 Fun Ġ= Ġdefine Operator (" LTE Q 0 ", Ġbool , ĠlistOf ( int )) ĊĠĠĠ Ġval Ġgt 0 Fun Ġ= Ġdefine Operator (" GT 0 ", Ġbool , ĠlistOf ( int )) ĊĠĠĠ Ġval Ġg te q 0 Fun Ġ= Ġdefine Operator (" G TE Q 0 ", Ġbool , ĠlistOf ( int )) ĊĠĠĠ Ġval Ġthrow N pe Fun Ġ= Ġdefine Operator (" THROW _ N PE ", Ġnothing , ĠlistOf ()) ĊĠĠĠ Ġval Ġboolean Not Fun Ġ= Ġdefine Operator (" NOT ", Ġbool , ĠlistOf ( bool )) ĊĠĠĠ Ġval Ġno When Branch Matched Exception Fun Ġ= Ġdefine Operator (" no When Branch Matched Exception ", Ġunit , ĠlistOf ()) ĊĊĠĠĠ Ġval Ġeq eq eq Ġ= Ġeq eq eq Fun . descriptor ĊĠĠĠ Ġval Ġeq eq Ġ= Ġeq eq Fun . descriptor ĊĠĠĠ Ġval Ġlt 0 Ġ= Ġlt 0 Fun . descriptor ĊĠĠĠ Ġval Ġl te q 0 Ġ= Ġl te q 0 Fun . descriptor ĊĠĠĠ Ġval Ġgt 0 Ġ= Ġgt 0 Fun . descriptor ĊĠĠĠ Ġval Ġg te q 0 Ġ= Ġg te q 0 Fun . descriptor ĊĠĠĠ Ġval Ġthrow N pe Ġ= Ġthrow N pe Fun . descriptor ĊĠĠĠ Ġval Ġboolean Not Ġ= Ġboolean Not Fun . descriptor ĊĠĠĠ Ġval Ġno When Branch Matched Exception Ġ= Ġno When Branch Matched Exception Fun . descriptor ĊĊĠĠĠ Ġval Ġeq eq eq Symbol Ġ= Ġeq eq eq Fun . symbol ĊĠĠĠ Ġval Ġeq eq Symbol Ġ= Ġeq eq Fun . symbol ĊĠĠĠ Ġval Ġlt 0 Symbol Ġ= Ġlt 0 Fun . symbol ĊĠĠĠ Ġval Ġl te q 0 Symbol Ġ= Ġl te q 0 Fun . symbol ĊĠĠĠ Ġval Ġgt 0 Symbol Ġ= Ġgt 0 Fun . symbol ĊĠĠĠ Ġval Ġg te q 0 Symbol Ġ= Ġg te q 0 Fun . symbol ĊĠĠĠ Ġval Ġthrow N pe Symbol Ġ= Ġthrow N pe Fun . symbol ĊĠĠĠ Ġval Ġboolean Not Symbol Ġ= Ġboolean Not Fun . symbol ĊĠĠĠ Ġval Ġno When Branch Matched Exception Symbol Ġ= Ġno When Branch Matched Exception Fun . symbol ĊĊĠĠĠ Ġval Ġenum ValueOf Fun Ġ= Ġcreate Enum ValueOf Fun () ĊĠĠĠ Ġval Ġenum ValueOf Ġ= Ġenum ValueOf Fun . descriptor ĊĠĠĠ Ġval Ġenum ValueOf Symbol Ġ= Ġenum ValueOf Fun . symbol ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Enum ValueOf Fun (): ĠIr Simple Function Ġ= ĊĠĠĠĠĠĠĠ ĠSimple Function Descriptor Impl . create ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Fragment , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAn notations . EMPTY , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠName . identifier (" enum ValueOf "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCallable Member Descriptor . Kind . SYN TH ES IZED , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSource Element . NO _ SOURCE ĊĠĠĠĠĠĠĠ Ġ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Parameter T Ġ= ĠType Parameter Descriptor Impl . create WithDefault Bound ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĠAn notations . EMPTY , Ġtrue , ĠVari ance . IN VARIANT , ĠName . identifier (" T "), Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue ParameterName Ġ= ĠValue Parameter Descriptor Impl ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , Ġnull , Ġ 0 , ĠAn notations . EMPTY , ĠName . identifier (" name "), Ġbuilt Ins . string Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse , Ġfalse , Ġfalse , Ġnull , ĠSource Element . NO _ SOURCE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠreturnType Ġ= ĠKotlin Type Factory . simple Type ( Annotations . EMPTY , Ġtype Parameter T . type Constructor , ĠlistOf (), Ġfalse ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinitialize ( null , Ġnull , ĠlistOf ( type Parameter T ), ĠlistOf ( value ParameterName ), ĠreturnType , ĠMod ality . FINAL , ĠVis ibilities . PUBLIC ) ĊĠĠĠĠĠĠĠ Ġ}. add Stub () ĊĊĠĠĠ Ġval Ġdata Class Array Member HashCode Fun Ġ= Ġdefine Operator (" data Class Array Member HashCode ", Ġint , ĠlistOf ( any )) ĊĠĠĠ Ġval Ġdata Class Array Member HashCode Ġ= Ġdata Class Array Member HashCode Fun . descriptor ĊĠĠĠ Ġval Ġdata Class Array Member HashCode Symbol Ġ= Ġdata Class Array Member HashCode Fun . symbol ĊĊĠĠĠ Ġval Ġdata Class Array Member ToString Fun Ġ= Ġdefine Operator (" data Class Array Member ToString ", Ġstring , ĠlistOf ( any N )) ĊĠĠĠ Ġval Ġdata Class Array Member ToString Ġ= Ġdata Class Array Member ToString Fun . descriptor ĊĠĠĠ Ġval Ġdata Class Array Member ToString Symbol Ġ= Ġdata Class Array Member ToString Fun . symbol ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠK OT LIN _ INTERNAL _ IR _ FQ N Ġ= ĠF q Name (" kotlin . internal . ir ") ĊĠĠĠ Ġ} Ċ } Ċ