/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 9 Ġ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 . backend . jvm . lower Ċ Ċ import Ġorg . jetbrains . kotlin . backend . common . File Lower ing Pass Ċ import Ġorg . jetbrains . kotlin . backend . common . ph aser . make Ir Module Phase Ċ import Ġorg . jetbrains . kotlin . backend . jvm . Jvm Backend Context Ċ import Ġorg . jetbrains . kotlin . backend . jvm . ir . is Inline Function Call Ċ import Ġorg . jetbrains . kotlin . backend . jvm . is Mult if ile Bridge Ċ import Ġorg . jetbrains . kotlin . ir . declarations . Ir File Ċ import Ġorg . jetbrains . kotlin . ir . declarations . Ir Function Ċ import Ġorg . jetbrains . kotlin . ir . declarations . Ir Simple Function Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Call Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Expression Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Type Operator Ċ import Ġorg . jetbrains . kotlin . ir . expressions . impl . Ir Call Impl Ċ import Ġorg . jetbrains . kotlin . ir . expressions . impl . Ir Type Operator Call Impl Ċ import Ġorg . jetbrains . kotlin . ir . util . copy Type And Value Arguments From Ċ import Ġorg . jetbrains . kotlin . ir . util . default Type Ċ import Ġorg . jetbrains . kotlin . ir . util . parent As Class Ċ import Ġorg . jetbrains . kotlin . ir . util . resolve Fake Override Ċ import Ġorg . jetbrains . kotlin . ir . visitor s . Ir Element Transformer Void Ċ Ċ internal Ġval Ġresolve Inline Calls Phase Ġ= Ġmake Ir Module Phase ( ĊĠĠĠ Ġ:: Resolve Inline Calls , ĊĠĠĠ Ġname Ġ= Ġ" Resolve Inline Calls ", ĊĠĠĠ Ġdescription Ġ= Ġ" Static ally Ġresolve Ġcalls Ġto Ġinline Ġmethods Ġto Ġparticular Ġimplementations " Ċ ) Ċ Ċ class ĠResolve Inline Calls ( val Ġcontext : ĠJ vm Backend Context ) Ġ: ĠIr Element Transformer Void (), ĠFile Lower ing Pass Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġlower ( ir File : ĠIr File ) Ġ= Ġir File . transform Children Void () ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Call ( expression : ĠIr Call ): ĠIr Expression Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! expression . symbol . owner . is Inline Function Call ( context )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . visit Call ( expression ) ĊĠĠĠĠĠĠĠ Ġval Ġmaybe Fake Override Of Multi File Bridge Ġ= Ġexpression . symbol . owner Ġas ? ĠIr Simple Function ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn Ġsuper . visit Call ( expression ) ĊĠĠĠĠĠĠĠ Ġval Ġresolved Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmaybe Fake Override Of Multi File Bridge . resolve Multi File Facade Member () Ġ?: Ġmaybe Fake Override Of Multi File Bridge . resolve Fake Override () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn Ġsuper . visit Call ( expression ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . visit Call ( with ( expression ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIr Call Impl ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Offset , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Offset , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresolved . symbol , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpression . type Arguments Count , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpression . value Arguments Count , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpression . origin , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper Qualifier Symbol ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcopy Type And Value Arguments From ( expression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdispatch Receiver ?. let Ġ{ Ġreceiver Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreceiver Type Ġ= Ġresolved . parent As Class . default Type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdispatch Receiver Ġ= ĠIr Type Operator Call Impl ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreceiver . start Offset , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreceiver . end Offset , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreceiver Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIr Type Operator . IMP LICIT _ CAST , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreceiver Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreceiver ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠIr Function . resolve Multi File Facade Member (): ĠIr Simple Function ? Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( is Mult if ile Bridge ()) Ġcontext . mult if ile Facade Member To Part Member [ this ] Ġelse Ġnull Ċ } Ċ