having trouble with compilation, running task `bro...
# compose-web
a
having trouble with compilation, running task
browserRun
gives runtime error that
renderComposable
hasn't been replaced by the compose compiler. running
browserDevelopmentRun
gives compile error with assertion error(see the reply),
browserProductionRun
gives same assertion error
Copy code
e: java.lang.AssertionError: Assertion failed
	at org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.JsAstUtilsKt.translateCallArguments(jsAstUtils.kt:319)
	at org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.JsAstUtilsKt.translateCall(jsAstUtils.kt:107)
	at org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.IrElementToJsStatementTransformer.visitCall(IrElementToJsStatementTransformer.kt:117)
	at org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.IrElementToJsStatementTransformer.visitCall(IrElementToJsStatementTransformer.kt:18)
	at org.jetbrains.kotlin.ir.expressions.impl.IrCallImpl.accept(IrCallImpl.kt:47)
	at org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.IrElementToJsStatementTransformer.visitBlockBody(IrElementToJsStatementTransformer.kt:28)
	at org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.IrElementToJsStatementTransformer.visitBlockBody(IrElementToJsStatementTransformer.kt:18)
	at org.jetbrains.kotlin.ir.expressions.IrBlockBody.accept(IrBody.kt:54)
	at org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.JsAstUtilsKt.translateFunction(jsAstUtils.kt:65)
	at org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.IrFunctionToJsTransformer.visitSimpleFunction(IrFunctionToJsTransformer.kt:26)
	at org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.IrFunctionToJsTransformer.visitSimpleFunction(IrFunctionToJsTransformer.kt:14)
	at org.jetbrains.kotlin.ir.declarations.IrSimpleFunction.accept(IrSimpleFunction.kt:28)
	at org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.JsClassGenerator.generateMemberFunction(JsClassGenerator.kt:154)
	at org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.JsClassGenerator.generate(JsClassGenerator.kt:81)
	at org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.IrDeclarationToJsTransformer.visitClass(IrDeclarationToJsTransformer.kt:28)
	at org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.IrDeclarationToJsTransformer.visitClass(IrDeclarationToJsTransformer.kt:12)
	at org.jetbrains.kotlin.ir.declarations.IrClass.accept(IrClass.kt:55)
	at org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.IrFileToJsTransformer.visitFile(IrFileToJsTransformer.kt:19)
	at org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.IrFileToJsTransformer.visitFile(IrFileToJsTransformer.kt:13)
	at org.jetbrains.kotlin.ir.declarations.impl.IrFileImpl.accept(IrFileImpl.kt:81)
	at org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.IrModuleToJsTransformer.generateModuleBody(IrModuleToJsTransformer.kt:257)
	at org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.IrModuleToJsTransformer.generateWrappedModuleBody2(IrModuleToJsTransformer.kt:150)
	at org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.IrModuleToJsTransformer.generateWrappedModuleBody(IrModuleToJsTransformer.kt:110)
	at org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.IrModuleToJsTransformer.generateModule(IrModuleToJsTransformer.kt:61)
	at org.jetbrains.kotlin.ir.backend.js.CompilerKt.compile(compiler.kt:123)
	at org.jetbrains.kotlin.ir.backend.js.CompilerKt.compile$default(compiler.kt:36)
	at org.jetbrains.kotlin.cli.js.K2JsIrCompiler.doExecute(K2JsIrCompiler.kt:256)
	at org.jetbrains.kotlin.cli.js.K2JSCompiler.doExecute(K2JSCompiler.java:182)
	at org.jetbrains.kotlin.cli.js.K2JSCompiler.doExecute(K2JSCompiler.java:75)
	at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:90)
	at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:44)
	at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:98)
compose version
1.0.0-alpha2
Copy code
fun main() {
    window.onload = {
        renderComposable(document.body!!) {
            Style(Styles)
            Button(onClick = {println(it)}) { Text("")}
        }
    }
}
u
@Arslan Armanuly which Button are you using? Is it something from the html API?
a
No, common one here are imports
Copy code
import kotlinx.browser.document
import kotlinx.browser.window
import org.jetbrains.compose.common.material.Button
import org.jetbrains.compose.common.material.Text
import org.jetbrains.compose.web.css.Style
import org.jetbrains.compose.web.renderComposable
import org.jetbrains.compose.web.ui.Styles
u
@Arslan Armanuly the code below works for me. What happens when you don't mount Styles? (this is the only difference - since I don't know what is in Styles - I just remove that line)
Copy code
import kotlinx.browser.document
import kotlinx.browser.window
import org.jetbrains.compose.common.material.Button
import org.jetbrains.compose.web.dom.Text
import org.jetbrains.compose.web.renderComposable

fun main() {
    window.onload = {
        renderComposable(document.body!!) {
            Button(onClick = { println(it) }) { Text("HEY I AM A BUTTON!!!") }
        }
    }
}
Also - which browser it is? Also, just to be sure, here's my config for compose:
Copy code
plugins {
    kotlin("multiplatform") version "1.5.21"
    id("org.jetbrains.compose") version "1.0.0-alpha2"
}
a
i guess something is wrong with my build config
Copy code
plugins {
    kotlin("js") version "1.5.21"
    id("org.jetbrains.compose") version "1.0.0-alpha2"
}

repositories {
    mavenCentral()
    google()
    maven { url = uri("<https://maven.pkg.jetbrains.space/public/p/compose/dev>") }
}

dependencies {
    implementation(project(":common"))
    implementation(compose.web.core)
    implementation(compose.web.widgets)
}

kotlin {
    js(IR) {
        binaries.executable()
        browser()
    }
}
i have common module with just one composable that i don't use
still getting the error with just copy paste of your code though
tried removing the dependency with the common module and adding compose.runtime but it didn't help
solved the issue by converting module from js only to multiplatform
do you know where issue might come from?
u
@Arslan Armanuly I've tried with following build.gradle.kts file and it's still working for me:
Copy code
plugins {
    kotlin("js") version "1.5.21"
    id("org.jetbrains.compose") version "1.0.0-alpha2"
}

repositories {
    mavenCentral()
    google()
    maven { url = uri("<https://maven.pkg.jetbrains.space/public/p/compose/dev>") }
}

dependencies {
    implementation(compose.web.core)
    implementation(compose.web.widgets)
}

kotlin {
    js(IR) {
        binaries.executable()
        browser()
    }
}
if it is possible it would be great if you'll push minimal example as github repo
cause of course I'm more than interested in getting to the cause of you troubles
I hate hidden bugs )
a
o
Compose plugin is enabled for kotlin/js targets only when used within multiplatform. That is intentional. Related issues was discussed here https://github.com/JetBrains/compose-jb/issues/658
😞 1