/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* Ġ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 Ġandroidx . compose . compiler . plugins . kotlin . lower Ċ Ċ import Ġandroidx . compose . compiler . plugins . kotlin . Compose Fq Names Ċ import Ġorg . jetbrains . kotlin . backend . common . Ir Element Transformer Void WithContext Ċ import Ġorg . jetbrains . kotlin . backend . common . extensions . Ir Plugin Context Ċ import Ġorg . jetbrains . kotlin . descriptors . Modal ity Ċ import Ġorg . jetbrains . kotlin . ir . declarations . Ir Module Fragment Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Expression Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Function Expression Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Type Operator Ċ import Ġorg . jetbrains . kotlin . ir . expressions . Ir Type Operator Call Ċ import Ġorg . jetbrains . kotlin . ir . types . class OrNull Ċ import Ġorg . jetbrains . kotlin . ir . util . functions Ċ import Ġorg . jetbrains . kotlin . ir . util . has Annotation Ċ import Ġorg . jetbrains . kotlin . ir . util . is Lambda Ċ import Ġorg . jetbrains . kotlin . ir . visitor s . transform Children Void Ċ Ċ @ Suppress (" PRE _ RELEASE _ CLASS ") Ċ class ĠComp osable Fun Interface Lower ing ( private Ġval Ġcontext : ĠIr Plugin Context ) Ġ: ĊĠĠĠ ĠIr Element Transformer Void WithContext (), ĊĠĠĠ ĠModule Lower ing Pass Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġlower ( module : ĠIr Module Fragment ) Ġ= Ġmodule . transform Children Void ( this ) ĊĊĠĠĠ Ġprivate Ġfun Ġis Composable Fun Interface Conversion ( expression : ĠIr Type Operator Call ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġargument Ġ= Ġexpression . argument ĊĠĠĠĠĠĠĠ Ġval Ġoperator Ġ= Ġexpression . operator ĊĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġexpression . type Operand ĊĠĠĠĠĠĠĠ Ġval Ġfunction Class Ġ= Ġtype . class OrNull ĊĠĠĠĠĠĠĠ Ġreturn Ġoperator Ġ== ĠIr Type Operator . SAM _ CONVERSION Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument Ġis ĠIr Function Expression Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument . origin . is Lambda Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfunction Class Ġ!= Ġnull Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfunction Class . functions . single Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . owner . modal ity Ġ== ĠMod ality . AB STR ACT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. owner . annotations . has Annotation ( Compose Fq Names . Composable ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Type Operator ( expression : ĠIr Type Operator Call ): ĠIr Expression Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Composable Fun Interface Conversion ( expression )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġargument Ġ= Ġexpression . argument . transform ( this , Ġnull ) Ġas ĠIr Function Expression ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsuper Type Ġ= Ġexpression . type Operand ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠsuperClass Ġ= Ġsuper Type . class OrNull Ġ?: Ġerror (" Expected Ġnon - null Ġclass ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠFunction Reference Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsuperClass , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Declaration Parent !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Scope !!. scope . scope Owner Symbol , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . ir Built Ins ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). build () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . visit Type Operator ( expression ) ĊĠĠĠ Ġ} Ċ } Ċ