| // DUMP_IR | |
| // MODULE: lib | |
| // MODULE_KIND: LibraryBinary | |
| // FILE: PopupRenderer.kt | |
| import androidx.compose.foundation.background | |
| import androidx.compose.foundation.layout.padding | |
| import androidx.compose.foundation.shape.RoundedCornerShape | |
| import androidx.compose.runtime.Composable | |
| import androidx.compose.runtime.ProvidableCompositionLocal | |
| import androidx.compose.runtime.staticCompositionLocalOf | |
| import androidx.compose.ui.Modifier | |
| import androidx.compose.ui.graphics.Color | |
| import androidx.compose.ui.input.key.KeyEvent | |
| import androidx.compose.ui.unit.dp | |
| interface PopupRenderer { | |
| // Notice that the declaration with default parameters is crashing the plugin | |
| // While the one without default parameters works fine | |
| @Composable | |
| fun Popup( | |
| onDismissRequest: (() -> Unit)? = null, | |
| onPreviewKeyEvent: ((KeyEvent) -> Boolean)? = null, | |
| onKeyEvent: ((KeyEvent) -> Boolean)? = null, | |
| content: @Composable () -> Unit, | |
| ) | |
| } | |
| private object DefaultPopupRenderer : PopupRenderer { | |
| @Composable | |
| override fun Popup( | |
| onDismissRequest: (() -> Unit)?, | |
| onPreviewKeyEvent: ((KeyEvent) -> Boolean)?, | |
| onKeyEvent: ((KeyEvent) -> Boolean)?, | |
| content: @Composable () -> Unit, | |
| ) { | |
| } | |
| } | |
| val LocalPopupRenderer: ProvidableCompositionLocal<PopupRenderer> = | |
| staticCompositionLocalOf { DefaultPopupRenderer } | |
| // MODULE: main(lib) | |
| // FILE: main.kt | |
| import androidx.compose.runtime.Composable | |
| import androidx.compose.ui.input.key.KeyEvent | |
| import androidx.compose.foundation.text.BasicText | |
| private object AlternativeDesktopPopupRenderer : PopupRenderer { | |
| @Composable | |
| override fun Popup( | |
| onDismissRequest: (() -> Unit)?, | |
| onPreviewKeyEvent: ((KeyEvent) -> Boolean)?, | |
| onKeyEvent: ((KeyEvent) -> Boolean)?, | |
| content: @Composable () -> Unit, | |
| ) { | |
| BasicText("Test") | |
| } | |
| } |