/* Ċ Ġ* Ġ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 . ir . backend . js . lower Ċ Ċ import Ġorg . jetbrains . kotlin . ir . backend . js . Js Ir Backend Context Ċ import Ġorg . jetbrains . kotlin . ir . backend . js . Js Lower ed Declaration Origin Ċ import Ġorg . jetbrains . kotlin . ir . backend . js . utils . erase Gener ics Ċ import Ġorg . jetbrains . kotlin . ir . backend . js . utils . get Js Name Or Kotlin Name Ċ import Ġorg . jetbrains . kotlin . ir . backend . js . utils . has Stable Js Name Ċ import Ġorg . jetbrains . kotlin . ir . declarations . Ir Declaration Origin Ċ import Ġorg . jetbrains . kotlin . ir . declarations . Ir Simple Function Ċ import Ġorg . jetbrains . kotlin . ir . types . Ir Type Ċ import Ġorg . jetbrains . kotlin . ir . types . is Unit Ċ import Ġorg . jetbrains . kotlin . ir . util . render Ċ import Ġorg . jetbrains . kotlin . name . Name Ċ Ċ class ĠJs B rid ges Construction ( context : ĠJs Ir Backend Context ) Ġ: ĠB rid ges Construction < Js Ir Backend Context >( context ) Ġ{ ĊĊĠĠĠ Ġprivate Ġfun ĠIr Type . get Js In lined Class () Ġ= Ġcontext . inline Classes Utils . getIn lined Class ( this ) ĊĊĠĠĠ Ġoverride Ġfun Ġget Function Signature ( function : ĠIr Simple Function ): ĠJs Signature Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( function . has Stable Js Name ( context )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJs Stable Name Signature ( function . get Js Name Or Kotlin Name ()) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJs Non Stable Signature ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfunction . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfunction . extension Receiver Parameter ?. type ?. erase Gener ics ( context . ir Built Ins ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfunction . value Parameters . map Ġ{ Ġit . type . erase Gener ics ( context . ir Built Ins ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfunction . returnType . take If Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . get Js In lined Class () Ġ!= Ġnull Ġ|| Ġit . is Unit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ?. erase Gener ics ( context . ir Built Ins ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Bridge Origin ( bridge : ĠIr Simple Function ): ĠIr Declaration Origin Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( bridge . has Stable Js Name ( context )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJs Lower ed Declaration Origin . BR ID GE _ WITH _ ST ABLE _ NAME ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJs Lower ed Declaration Origin . BR ID GE _ WITHOUT _ ST ABLE _ NAME Ċ } Ċ Ċ interface ĠJs Signature Ġ{ ĊĠĠĠ Ġval Ġname : ĠName Ċ } Ċ Ċ data Ġclass ĠJs Non Stable Signature ( ĊĠĠĠ Ġoverride Ġval Ġname : ĠName , ĊĠĠĠ Ġval Ġextension Receiver Type : ĠIr Type ?, ĊĠĠĠ Ġval Ġvalue Parameters Type : ĠList < Ir Type >, ĊĠĠĠ Ġval ĠreturnType : ĠIr Type ?, Ċ ) Ġ: ĠJs Signature Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġer Ġ= Ġextension Receiver Type ?. let Ġ{ Ġ"( er : Ġ${ it . render () }) Ġ" Ġ} Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġval Ġparameters Ġ= Ġvalue Parameters Type . join ToString (", Ġ") Ġ{ Ġit . render () Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ" [$ er $ name ($ parameters ) Ġ-> Ġ${ returnType ?. let Ġ{ Ġ" Ġ-> Ġ${ it . render () }" Ġ} Ġ?: Ġ"" }] " ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠJs Stable Name Signature ( ĊĠĠĠ Ġoverride Ġval Ġname : ĠName , Ċ ) Ġ: ĠJs Signature Ċ