https://kotlinlang.org logo
#k2-early-adopters
Title
# k2-early-adopters
a

Andrey Tabakov

10/09/2023, 12:22 PM
I recently changed my project to 1.9.20-Beta2, attempted to start
compileProductionExecutableKotlinJs
gradle task, and then received this error (see comment for full stacktrace):
Copy code
java.lang.ClassCastException: class org.jetbrains.kotlin.ir.declarations.impl.IrTypeParameterImpl cannot be cast to class org.jetbrains.kotlin.ir.declarations.IrClass (org.jetbrains.kotlin.ir.declarations.impl.IrTypeParameterImpl and org.jetbrains.kotlin.ir.declarations.IrClass are in unnamed module of loader 'app')
it worked perfectly with 1.9.10, any workaround?
Copy code
java.lang.ClassCastException: class org.jetbrains.kotlin.ir.declarations.impl.IrTypeParameterImpl cannot be cast to class org.jetbrains.kotlin.ir.declarations.IrClass (org.jetbrains.kotlin.ir.declarations.impl.IrTypeParameterImpl and org.jetbrains.kotlin.ir.declarations.IrClass are in unnamed module of loader 'app')
	at org.jetbrains.kotlin.ir.backend.js.dce.JsUsefulDeclarationProcessor$bodyVisitor$1.visitCall(JsUsefulDeclarationProcessor.kt:74)
	at org.jetbrains.kotlin.ir.backend.js.dce.JsUsefulDeclarationProcessor$bodyVisitor$1.visitCall(JsUsefulDeclarationProcessor.kt:32)
	at org.jetbrains.kotlin.ir.expressions.IrCall.accept(IrCall.kt:26)
	at org.jetbrains.kotlin.ir.expressions.IrReturn.acceptChildren(IrReturn.kt:29)
	at org.jetbrains.kotlin.ir.backend.js.dce.UsefulDeclarationProcessor$BodyVisitorBase.visitElement(UsefulDeclarationProcessor.kt:43)
	at org.jetbrains.kotlin.ir.backend.js.dce.UsefulDeclarationProcessor$BodyVisitorBase.visitElement(UsefulDeclarationProcessor.kt:36)
	at org.jetbrains.kotlin.ir.visitors.IrElementVisitor$DefaultImpls.visitExpression(IrElementVisitor.kt:156)
	at org.jetbrains.kotlin.ir.backend.js.dce.UsefulDeclarationProcessor$BodyVisitorBase.visitExpression(UsefulDeclarationProcessor.kt:36)
	at org.jetbrains.kotlin.ir.backend.js.dce.UsefulDeclarationProcessor$BodyVisitorBase.visitExpression(UsefulDeclarationProcessor.kt:36)
	at org.jetbrains.kotlin.ir.visitors.IrElementVisitor$DefaultImpls.visitReturn(IrElementVisitor.kt:282)
	at org.jetbrains.kotlin.ir.backend.js.dce.UsefulDeclarationProcessor$BodyVisitorBase.visitReturn(UsefulDeclarationProcessor.kt:36)
	at org.jetbrains.kotlin.ir.backend.js.dce.UsefulDeclarationProcessor$BodyVisitorBase.visitReturn(UsefulDeclarationProcessor.kt:36)
	at org.jetbrains.kotlin.ir.expressions.IrReturn.accept(IrReturn.kt:26)
	at org.jetbrains.kotlin.ir.expressions.IrBlockBody.acceptChildren(IrBlockBody.kt:28)
	at org.jetbrains.kotlin.ir.backend.js.dce.UsefulDeclarationProcessor$BodyVisitorBase.visitElement(UsefulDeclarationProcessor.kt:43)
	at org.jetbrains.kotlin.ir.backend.js.dce.UsefulDeclarationProcessor$BodyVisitorBase.visitElement(UsefulDeclarationProcessor.kt:36)
	at org.jetbrains.kotlin.ir.visitors.IrElementVisitor$DefaultImpls.visitBody(IrElementVisitor.kt:159)
	at org.jetbrains.kotlin.ir.backend.js.dce.UsefulDeclarationProcessor$BodyVisitorBase.visitBody(UsefulDeclarationProcessor.kt:36)
	at org.jetbrains.kotlin.ir.backend.js.dce.UsefulDeclarationProcessor$BodyVisitorBase.visitBody(UsefulDeclarationProcessor.kt:36)
	at org.jetbrains.kotlin.ir.visitors.IrElementVisitor$DefaultImpls.visitBlockBody(IrElementVisitor.kt:163)
	at org.jetbrains.kotlin.ir.backend.js.dce.UsefulDeclarationProcessor$BodyVisitorBase.visitBlockBody(UsefulDeclarationProcessor.kt:36)
	at org.jetbrains.kotlin.ir.backend.js.dce.UsefulDeclarationProcessor$BodyVisitorBase.visitBlockBody(UsefulDeclarationProcessor.kt:36)
	at org.jetbrains.kotlin.ir.expressions.IrBlockBody.accept(IrBlockBody.kt:25)
	at org.jetbrains.kotlin.ir.backend.js.dce.UsefulDeclarationProcessor.collectDeclarations(UsefulDeclarationProcessor.kt:262)
	at org.jetbrains.kotlin.ir.backend.js.dce.DceKt.eliminateDeadDeclarations(Dce.kt:35)
	at org.jetbrains.kotlin.ir.backend.js.OptimizationsKt.optimizeProgramByIr(optimizations.kt:26)
	at org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.IrModuleToJsTransformer.makeJsCodeGenerator(IrModuleToJsTransformer.kt:201)
	at org.jetbrains.kotlin.cli.js.K2JsIrCompiler$Ir2JsTransformer.makeJsCodeGenerator(K2JsIrCompiler.kt:130)
	at org.jetbrains.kotlin.cli.js.K2JsIrCompiler$Ir2JsTransformer.compileAndTransformIrNew(K2JsIrCompiler.kt:134)
	at org.jetbrains.kotlin.cli.js.K2JsIrCompiler.doExecute(K2JsIrCompiler.kt:391)
	at org.jetbrains.kotlin.cli.js.K2JSCompiler.doExecute(K2JSCompiler.java:181)
	at org.jetbrains.kotlin.cli.js.K2JSCompiler.doExecute(K2JSCompiler.java:72)
	at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:104)
	at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:48)
	at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:101)
	at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:1523)
it fails even with:
Copy code
js(IR) {
    browser {
        dceTask{
            this.dceOptions.devMode = true
        }
    }
}
a

anton.bannykh

10/09/2023, 12:27 PM
cc @Artem Kobzar
i

Ilya Goncharov [JB]

10/09/2023, 12:38 PM
BTW,
dceTask
is senseless with IR compiler. It worked only with legacy compiler. For IR you can manage via
development
or
production
task,
production
task run with DCE and minification of member names
👌 1
a

andylamax

10/19/2023, 6:43 AM
@Ilya Goncharov [JB] does production run with DCE even for
binaries.libraries()
?
i

Ilya Goncharov [JB]

10/19/2023, 10:55 AM
@andylamax Yes, DCE works for all
compileProduction*KotlinJs
3 Views