/* Ċ Ġ* Ġ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 . backend . common . Common Backend Context Ċ import Ġorg . jetbrains . kotlin . backend . common . Declaration Transformer Ċ import Ġorg . jetbrains . kotlin . ir . declarations .* Ċ import Ġorg . jetbrains . kotlin . ir . util . file Ċ import Ġorg . jetbrains . kotlin . ir . util . is Effect ively External Ċ Ċ // ĠMove Ġstatic Ġmember Ġdeclarations Ġfrom Ġclasses Ġto Ġtop Ġlevel Ċ class ĠStatic Members Lower ing ( val Ġcontext : ĠCommon Backend Context ) Ġ: ĠDeclaration Transformer Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġtransform Flat ( declaration : ĠIr Declaration ): ĠList < Ir Declaration >? Ġ{ ĊĠĠĠĠĠĠĠ Ġ( declaration . parent Ġas ? ĠIr Class )?. let Ġ{ Ġir Class Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Static Ġ= Ġwhen Ġ( declaration ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠIr Class Ġ-> Ġ! declaration . is Effect ively External () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠIr Simple Function Ġ-> Ġdeclaration . is Static Method Of Class Ġ&& Ġ! declaration . is Effect ively External () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠIr Field Ġ-> Ġdeclaration . is Static ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Static ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeclaration . parent Ġ= Ġir Class . file ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġir Class . file . declarations Ġ+= Ġdeclaration ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠlistOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} Ċ }