compose-multiplatform
compose-multiplatform copied to clipboard
Compose Compiler 1.5.12+ causes Only @HiddenFromObjC declaration can be a subtype of @HiddenFromObjC declaration
Describe the bug Using the compose compiler v1.5.12+ results in the following error when compiling for ios targets:
Only @HiddenFromObjC declaration can be a subtype of @HiddenFromObjC declaration
Affected platforms
- iOS
Versions
- Libraries:
- Compose Multiplatform version: 1.6.10-rc1 and 1.6.2
- Kotlin version: 1.9.23
- OS version(s) (required for Desktop and iOS issues): macOS 14.4.1
- OS architecture (x86 or arm64): arm64
To Reproduce Steps to reproduce the behavior:
- Run
./gradlew assembleon https://github.com/eygraber/vice/tree/renovate/kotlin-monorepo - See error
Expected behavior No error
Additional context The error is reported on this line:
public abstract class FlowSource<T> : ViceSource<T>
where ViceSource is:
public interface ViceSource<T> {
@Composable
public fun currentState(): T
}
Originally reported here because I thought it was an issue with Kotlin 1.9.24, but then I tested on Kotlin 1.9.23 with all compiler versions starting from 1.5.12 and was able to repro the issue.
the problem was in name clash (ViceSource class inherited hide annotation due to ViceSource composable function)
should be fixed in 1.5.13.2 for kotlin 1.9.23 & 1.5.13.3 for kotlin 1.9.24
Awesome thank you
hey @shishkin-pavel i am using kotlin rc3 and compose rc02 and facing this issue, what should i do to get rid of it?
Hi, @Kashif-E , make sure you updated compose compiler to version 1.5.13.2 (for kotlin 1.9.23) / 1.5.13.3 (kotlin 1.9.24) or updated Compose Multiplatform to version 1.6.10-rc02
@shishkin-pavel i am using kotlin 2.0.0-rc3 and compose 1.6.10-rc02
@Kashif-E could you share some reproducer? probably this is another similar problem
@shishkin-pavel I'm seeing this again in 1.6.10 with Kotlin 2.0.0 stable and the Compose compiler from the Kotlin plugin.
Here's the error on this PR updating to Kotlin 2.0 (I'm going to disable building ios now so it doesn't block me).
It's being reported on the first line here:
abstract class ImmichSessionPortal<K, V, I, C, E, S> : VirtuePortal<K, V, I, C, E, S, ImmichSessionComponent>()
where V : ViceView<I, S>, C : ViceCompositor<I, S>, E : ViceEffects {
abstract override val parentComponent: ImmichSessionComponent
abstract override val component: ImmichSessionPortalComponent<K, V, I, C, E, S>
}
interface ImmichSessionPortalComponent<K, V, I, C, E, S> :
VirtuePortalComponent<V, I, C, E, S, ImmichSessionComponent>
where V : ViceView<I, S>, C : ViceCompositor<I, S>, E : ViceEffects {
@get:Provides val route: K
}
@shishkin-pavel Can this get reopened? I'm now starting to see this in multiple libraries, and it's getting harder to keep disabling ios :grimacing:
In this case it was working fine with Kotlin 2.0.0 and CMP 1.6.10, but starting throwing the error on the first line here on this PR:
abstract class SampleDestination<V, I, C, S> : ViceDestination<V, I, C, DummyEffects, S>()
where V : ViceView<I, S>, C : ViceCompositor<I, S> {
override val effects = DummyEffects
@Composable final override fun OnBackPressedHandler(enabled: Boolean, onBackPressed: () -> Unit) {}
}
It seems to work if I add
@OptIn(ExperimentalObjCRefinement::class)
@HiddenFromObjC
to SampleDestination but I feel like that's just punting the problem down the road. I also don't have any of my code annotated with HiddenFromObjC so I'm not sure where this is coming from.
@eygraber sure, ill take a look at it today
@eygraber sorry for the delay. for Kotlin version 2, the publication of compose compiler artifact occurs simultaneously with the release of Kotlin compiler and the necessary changes have not yet made it into the release, but I hope that they will make it into the next one. probably it would make sense to close current issue only when they would be merged and new version of kotlin compiler and compose compiler woudl be published
@shishkin-pavel thanks, looking forward to the fix!
Should this be fixed in 2.0.10?
This is still failing with 2.0.10-RC
Please check the following ticket on YouTrack for follow-ups to this issue. GitHub issues will be closed in the coming weeks.