/* Ċ Ġ* Ġ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 . ir . backend . js . utils Ċ Ċ import Ġorg . jetbrains . kotlin . ir . backend . js . Js Common Inline Classes Utils Ċ import Ġorg . jetbrains . kotlin . ir . backend . js . Js Ir Backend Context Ċ import Ġorg . jetbrains . kotlin . ir . declarations . Ir Class Ċ import Ġorg . jetbrains . kotlin . ir . symbols . Ir Simple Function Symbol Ċ import Ġorg . jetbrains . kotlin . ir . types . Id Signature Values Ċ import Ġorg . jetbrains . kotlin . ir . types . Ir Simple Type Ċ import Ġorg . jetbrains . kotlin . ir . types . Ir Type Ċ import Ġorg . jetbrains . kotlin . ir . types . is Marked Nullable Ċ Ċ class ĠJs Inline Classes Utils ( val Ġcontext : ĠJs Ir Backend Context ) Ġ: ĠJs Common Inline Classes Utils Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget In lined Class ( type : ĠIr Type ): ĠIr Class ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( type Ġis ĠIr Simple Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġer ased Ġ= Ġerase ( type ) Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Class Inline Like ( er ased )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( type . is Marked Nullable ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠfieldType : ĠIr Type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġfield In lined Class Ġ= Ġer ased ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfieldType Ġ= Ġget Inline Class Under lying Type ( field In lined Class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( fieldType . is Marked Nullable ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield In lined Class Ġ= Ġget In lined Class ( fieldType ) Ġ?: Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġer ased ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠChar Ġis Ġdeclared Ġas Ġa Ġregular Ġclass , Ġbut Ġwe Ġwant Ġto Ġtreat Ġit Ġas Ġan Ġinline Ġclass . ĊĠĠĠ Ġ// ĠWe Ġcan 't Ġdeclare Ġit Ġas Ġan Ġinline / value Ġclass Ġfor Ġcompatibility Ġreasons . ĊĠĠĠ Ġ// ĠFor Ġexample , Ġapplying Ġthe Ġ=== Ġoperator Ġwill Ġstop Ġworking Ġif ĠChar Ġbecomes Ġan Ġinline Ġclass . ĊĠĠĠ Ġoverride Ġfun Ġis Class Inline Like ( klass : ĠIr Class ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġsuper . is Class Inline Like ( klass ) Ġ|| Ġklass . symbol . signature Ġ== ĠId Signature Values ._ char ĊĊĠĠĠ Ġoverride Ġval Ġbox Intr insic : ĠIr Simple Function Symbol ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġcontext . intr insics . js Box Intr insic ĊĊĠĠĠ Ġoverride Ġval Ġun box Intr insic : ĠIr Simple Function Symbol ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġcontext . intr insics . js Un box Intr insic Ċ } Ċ