Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"java.lang.IllegalStateException: Couldn't find implementation for..." when app tries to use lib composables (plus generics?) #1333

Open
bitspittle opened this issue Oct 30, 2021 · 0 comments
Assignees
Labels
compiler Compiler plugin related web

Comments

@bitspittle
Copy link

bitspittle commented Oct 30, 2021

Please see the associated repository which includes a minimal sample that you can clone and then compile to reproduce:

https://github.com/bitspittle/bugreports/tree/jb-compose-compiler-app-lib

Note the weird branch. You might clone it using the following command:

 $ git clone --branch jb-compose-compiler-app-lib https://github.com/bitspittle/bugreports.git bug-1333

This may be a web only issue, I'm not sure. But I ran into it using Web Compose, so my repro sample is web code. But I wouldn't be surprised if this happens more generally than just web.

When you compile (./gradlew compileKotlinJs), you should get an exception stack like:

e: java.lang.IllegalStateException: Couldn't find implementation for toModifier                                                                               
        at androidx.compose.compiler.plugins.kotlin.lower.decoys.DecoyTransformBase$DefaultImpls.getComposableForDecoy(DecoyTransformBase.kt:134)             
        at androidx.compose.compiler.plugins.kotlin.lower.decoys.SubstituteDecoyCallsTransformer.getComposableForDecoy(SubstituteDecoyCallsTransformer.kt:49) 
        at androidx.compose.compiler.plugins.kotlin.lower.decoys.SubstituteDecoyCallsTransformer.visitSimpleFunction(SubstituteDecoyCallsTransformer.kt:113)  
        at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitSimpleFunction(IrElementTransformerVoid.kt:73)                                      
        at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitSimpleFunction(IrElementTransformerVoid.kt:24)                                      
        at org.jetbrains.kotlin.ir.declarations.IrSimpleFunction.accept(IrSimpleFunction.kt:28)                                                               
        at org.jetbrains.kotlin.ir.IrElement$DefaultImpls.transform(IrElement.kt:32)                                                                          
        at org.jetbrains.kotlin.ir.IrElementBase.transform(IrElementBase.kt:19)                                                                               
        at org.jetbrains.kotlin.ir.util.TransformKt.transformInPlace(transform.kt:35)                                                                         
        at org.jetbrains.kotlin.ir.declarations.IrClass.transformChildren(IrClass.kt:66)                                                                      
        at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitDeclaration(IrElementTransformerVoid.kt:57)                                         
        at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitClass(IrElementTransformerVoid.kt:66)                                               
        at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitClass(IrElementTransformerVoid.kt:67)                                               
        at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitClass(IrElementTransformerVoid.kt:24)                                               
        at org.jetbrains.kotlin.ir.declarations.IrClass.accept(IrClass.kt:55)                                                                                 
        at org.jetbrains.kotlin.ir.IrElement$DefaultImpls.transform(IrElement.kt:32)                                                                          
        at org.jetbrains.kotlin.ir.IrElementBase.transform(IrElementBase.kt:19)                                                                               
        at org.jetbrains.kotlin.ir.declarations.impl.IrFileImpl.transformChildren(IrFileImpl.kt:89)                                                           
        at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitPackageFragment(IrElementTransformerVoid.kt:41)                                     
        at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitFile(IrElementTransformerVoid.kt:47)                                                
        at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitFile(IrElementTransformerVoid.kt:48)                                                
        at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitFile(IrElementTransformerVoid.kt:24)
        at org.jetbrains.kotlin.ir.declarations.impl.IrFileImpl.accept(IrFileImpl.kt:81)
        at org.jetbrains.kotlin.ir.declarations.IrFile.transform(IrFile.kt:52)
        at org.jetbrains.kotlin.ir.declarations.impl.IrModuleFragmentImpl.transformChildren(IrModuleFragmentImpl.kt:45)
        at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoidKt.transformChildrenVoid(IrElementTransformerVoid.kt:330)
        at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.transformChildrenVoid(IrElementTransformerVoid.kt:325)
        at androidx.compose.compiler.plugins.kotlin.lower.decoys.SubstituteDecoyCallsTransformer.lower(SubstituteDecoyCallsTransformer.kt:64)
        at androidx.compose.compiler.plugins.kotlin.ComposeIrGenerationExtension.generate(ComposeIrGenerationExtension.kt:139)
        at org.jetbrains.kotlin.ir.backend.js.KlibKt.generateModuleFragmentWithPlugins$lambda-20(klib.kt:402)
        at org.jetbrains.kotlin.psi2ir.Psi2IrTranslator.generateModuleFragment(Psi2IrTranslator.kt:89)
        at org.jetbrains.kotlin.ir.backend.js.KlibKt.generateModuleFragmentWithPlugins(klib.kt:407)
        at org.jetbrains.kotlin.ir.backend.js.KlibKt.generateKLib(klib.kt:172)
        at org.jetbrains.kotlin.cli.js.K2JsIrCompiler.doExecute(K2JsIrCompiler.kt:243)
        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:92)
        at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:44)
        at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:98)
        at org.jetbrains.kotlin.incremental.IncrementalJsCompilerRunner.runCompiler(IncrementalJsCompilerRunner.kt:191)
        at org.jetbrains.kotlin.incremental.IncrementalJsCompilerRunner.runCompiler(IncrementalJsCompilerRunner.kt:77)
        at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileIncrementally(IncrementalCompilerRunner.kt:358)
        at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileIncrementally$default(IncrementalCompilerRunner.kt:300)
        at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileImpl$rebuild(IncrementalCompilerRunner.kt:119)
        at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileImpl(IncrementalCompilerRunner.kt:170)
        at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compile(IncrementalCompilerRunner.kt:81)
        at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compile$default(IncrementalCompilerRunner.kt:72)
        at org.jetbrains.kotlin.daemon.CompileServiceImplBase.execJsIncrementalCompiler(CompileServiceImpl.kt:550)
        at org.jetbrains.kotlin.daemon.CompileServiceImplBase.access$execJsIncrementalCompiler(CompileServiceImpl.kt:96)
        at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:1745)
        at jdk.internal.reflect.GeneratedMethodAccessor85.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:567)
        at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:357)
        at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:200)
        at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:197)
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:691)
        at java.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:196) 
        at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:587)
        at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:828)
        at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:705)
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
        at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:704)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
        at java.base/java.lang.Thread.run(Thread.java:831)
@bitspittle bitspittle changed the title "java.lang.IllegalStateException: Couldn't find implementation for..." when app tries to use lib code (w/ minimal sample included) java.lang.IllegalStateException: Couldn't find implementation for..." when app tries to use lib composables (plus generics?) Oct 30, 2021
@bitspittle bitspittle changed the title java.lang.IllegalStateException: Couldn't find implementation for..." when app tries to use lib composables (plus generics?) "java.lang.IllegalStateException: Couldn't find implementation for..." when app tries to use lib composables (plus generics?) Oct 30, 2021
@eymar eymar added compiler Compiler plugin related web labels Nov 1, 2021
@akurasov akurasov added this to the 1.0 milestone Nov 15, 2021
@igordmn igordmn removed this from the 1.0 milestone May 26, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
compiler Compiler plugin related web
Projects
None yet
Development

No branches or pull requests

4 participants