KMP-NativeCoroutines icon indicating copy to clipboard operation
KMP-NativeCoroutines copied to clipboard

IDE plugin compatibility issues

Open vanniktech opened this issue 6 months ago • 10 comments

The plugin is crashing with Android Studio:

Android Studio Meerkat Feature Drop | 2024.3.2
Build #AI-243.25659.59.2432.13423653, built on April 29, 2025
Runtime version: 21.0.6+-13368085-b895.109 aarch64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Toolkit: sun.lwawt.macosx.LWCToolkit
macOS 14.7.2
GC: G1 Young Generation, G1 Concurrent GC, G1 Old Generation
Memory: 8192M
Cores: 10
Metal Rendering is ON
Registry:
  debugger.new.tool.window.layout=true
  android.gradle.project.startup.activity.disabled=true
  ide.experimental.ui=true
Non-Bundled Plugins:
  com.rickclephas.kmp.nativecoroutines (1.0.0-ALPHA-42)
  com.squareup.sqldelight (2.1.0)

and then it breaks almost all of the editing functionality :/

Caused by: java.lang.ExceptionInInitializerError: Exception java.lang.NoSuchMethodError: 'org.jetbrains.kotlin.diagnostics.PositioningStrategy org.jetbrains.kotlin.diagnostics.PositioningStrategies.getDECLARATION_NAME()' [in thread "JobScheduler FJ pool 4/9"]
	at com.rickclephas.kmp.nativecoroutines.compiler.classic.diagnostics.KmpNativeCoroutinesErrors.<clinit>(KmpNativeCoroutinesErrors.kt:87)
	at com.rickclephas.kmp.nativecoroutines.idea.quickfixes.k1.KmpNativeCoroutinesQuickFixContributor.registerQuickFixes(KmpNativeCoroutinesQuickFixContributor.kt:46)
	at org.jetbrains.kotlin.idea.quickfix.QuickFixes.<init>(QuickFixes.kt:33)
	at com.intellij.platform.instanceContainer.instantiation.InstantiateKt.instantiate$lambda$0(instantiate.kt:46)
	at com.intellij.platform.instanceContainer.instantiation.InstantiateKt.instantiate$lambda$8$lambda$7(instantiate.kt:310)
	at com.intellij.platform.instanceContainer.instantiation.InstantiateKt.withStoredTemporaryContext(instantiate.kt:328)
	at com.intellij.platform.instanceContainer.instantiation.InstantiateKt.instantiate(instantiate.kt:309)
	at com.intellij.platform.instanceContainer.instantiation.InstantiateKt.instantiate(instantiate.kt:43)
	at com.intellij.serviceContainer.LightServiceInstanceSupport$LightServiceInstanceInitializer.createInstance(LightServiceInstanceSupport.kt:47)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder$initialize$1$1.invokeSuspend(LazyInstanceHolder.kt:163)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder$initialize$1$1.invoke(LazyInstanceHolder.kt)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder$initialize$1$1.invoke(LazyInstanceHolder.kt)
	at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:62)
	at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:163)
	at kotlinx.coroutines.BuildersKt.withContext(Unknown Source)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder$initialize$1.invokeSuspend(LazyInstanceHolder.kt:161)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder$initialize$1.invoke(LazyInstanceHolder.kt)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder$initialize$1.invoke(LazyInstanceHolder.kt)
	at kotlinx.coroutines.intrinsics.UndispatchedKt.startCoroutineUndispatched(Undispatched.kt:27)
	at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:90)
	at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:123)
	at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch(Builders.common.kt:52)
	at kotlinx.coroutines.BuildersKt.launch(Unknown Source)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder.initialize(LazyInstanceHolder.kt:146)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder.access$initialize(LazyInstanceHolder.kt:14)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder.tryInitialize(LazyInstanceHolder.kt:136)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder.getInstance(LazyInstanceHolder.kt:96)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder.getInstanceInCallerContext$suspendImpl(LazyInstanceHolder.kt:88)
	at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder.getInstanceInCallerContext(LazyInstanceHolder.kt)
	at com.intellij.serviceContainer.ComponentManagerImplKt$doGetOrCreateInstanceBlocking$1.invokeSuspend(ComponentManagerImpl.kt:1566)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104)
	at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:277)
	at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:111)
	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$BuildersKt__BuildersKt(Builders.kt:84)
	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:52)
	at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source)
	at com.intellij.serviceContainer.ComponentManagerImplKt.runBlockingInitialization$lambda$10(ComponentManagerImpl.kt:1684)
	at com.intellij.openapi.progress.ContextKt.prepareIndicatorThreadContext$lambda$5(context.kt:108)
	at com.intellij.openapi.progress.impl.CoreProgressManager.silenceGlobalIndicator(CoreProgressManager.java:1041)
	at com.intellij.openapi.progress.ContextKt.prepareIndicatorThreadContext(context.kt:106)
	at com.intellij.openapi.progress.ContextKt.prepareThreadContext(context.kt:77)
	at com.intellij.serviceContainer.ComponentManagerImplKt.runBlockingInitialization(ComponentManagerImpl.kt:1675)
	at com.intellij.serviceContainer.ComponentManagerImplKt.doGetOrCreateInstanceBlocking(ComponentManagerImpl.kt:1565)
	at com.intellij.serviceContainer.ComponentManagerImplKt.getOrCreateInstanceBlocking(ComponentManagerImpl.kt:1560)
	at com.intellij.serviceContainer.ComponentManagerImpl.doGetService(ComponentManagerImpl.kt:751)
	at com.intellij.serviceContainer.ComponentManagerImpl.getService(ComponentManagerImpl.kt:695)
	at org.jetbrains.kotlin.idea.quickfix.QuickFixes$Companion.getInstance(QuickFixes.kt:84)
	at org.jetbrains.kotlin.idea.base.fe10.codeInsight.Fe10QuickFixProviderImpl.createPostponedUnresolvedReferencesQuickFixes$lambda$2(Fe10QuickFixProviderImpl.kt:82)
	at org.jetbrains.kotlin.idea.base.fe10.codeInsight.Fe10QuickFixProviderImpl.createQuickFixes(Fe10QuickFixProviderImpl.kt:119)
	at org.jetbrains.kotlin.idea.base.fe10.codeInsight.Fe10QuickFixProviderImpl.createPostponedUnresolvedReferencesQuickFixes(Fe10QuickFixProviderImpl.kt:81)
	at org.jetbrains.kotlin.idea.highlighter.ElementAnnotator.registerDiagnosticsAnnotations(ElementAnnotator.kt:46)
	at org.jetbrains.kotlin.idea.highlighter.AbstractKotlinHighlightVisitor.annotateDiagnostic(AbstractKotlinHighlightVisitor.kt:200)
	at org.jetbrains.kotlin.idea.highlighter.AbstractKotlinHighlightVisitor.analyze$lambda$3(AbstractKotlinHighlightVisitor.kt:124)
	at org.jetbrains.kotlin.idea.caches.resolve.ResolutionUtils.analyzeWithAllCompilerChecks$lambda$0(ResolutionUtils.kt:170)
	at org.jetbrains.kotlin.idea.caches.resolve.PerFileAnalysisCache.performAnalyze$lambda$9(PerFileAnalysisCache.kt:150)
	at org.jetbrains.kotlin.idea.caches.resolve.PerFileAnalysisCache.performAnalyze$lambda$10(PerFileAnalysisCache.kt:154)
	at org.jetbrains.kotlin.resolve.diagnostics.MutableDiagnosticsWithSuppression.report(MutableDiagnosticsWithSuppression.kt:72)
	at org.jetbrains.kotlin.resolve.BindingTraceContext.report(BindingTraceContext.java:134)
	at org.jetbrains.kotlin.storage.LockBasedLazyResolveStorageManager$LockProtectedTrace.report$lambda$6(LockBasedLazyResolveStorageManager.kt:87)
	at org.jetbrains.kotlin.storage.LockBasedStorageManager.compute(LockBasedStorageManager.java:290)
	at org.jetbrains.kotlin.storage.LockBasedLazyResolveStorageManager$LockProtectedTrace.report(LockBasedLazyResolveStorageManager.kt:87)
	at org.jetbrains.kotlin.resolve.QualifiedExpressionResolver.storeResult(QualifiedExpressionResolver.kt:760)
	at org.jetbrains.kotlin.resolve.QualifiedExpressionResolver.resolveDescriptorForType(QualifiedExpressionResolver.kt:103)
	at org.jetbrains.kotlin.resolve.TypeResolver.resolveDescriptorForType(TypeResolver.kt:1053)
	at org.jetbrains.kotlin.resolve.TypeResolver$resolveTypeElement$1.visitUserType(TypeResolver.kt:259)
	at org.jetbrains.kotlin.psi.KtVisitorVoid.visitUserType(KtVisitorVoid.java:937)
	at org.jetbrains.kotlin.psi.KtVisitorVoid.visitUserType(KtVisitorVoid.java:21)
	at org.jetbrains.kotlin.psi.KtUserType.accept(KtUserType.java:42)
	at org.jetbrains.kotlin.psi.KtElementImplStub.accept(KtElementImplStub.java:49)
	at org.jetbrains.kotlin.resolve.TypeResolver.resolveTypeElement(TypeResolver.kt:257)
	at org.jetbrains.kotlin.resolve.TypeResolver.resolvePossiblyBareType(TypeResolver.kt:136)
	at org.jetbrains.kotlin.resolve.TypeResolver.resolveType(TypeResolver.kt:126)
	at org.jetbrains.kotlin.resolve.TypeResolver.resolveType(TypeResolver.kt:97)
	at org.jetbrains.kotlin.resolve.FunctionDescriptorResolver.resolveValueParameters(FunctionDescriptorResolver.kt:489)
	at org.jetbrains.kotlin.resolve.FunctionDescriptorResolver.createConstructorDescriptor(FunctionDescriptorResolver.kt:455)
	at org.jetbrains.kotlin.resolve.FunctionDescriptorResolver.resolvePrimaryConstructorDescriptor(FunctionDescriptorResolver.kt:392)
	at org.jetbrains.kotlin.resolve.lazy.descriptors.LazyClassMemberScope.resolvePrimaryConstructor(LazyClassMemberScope.kt:536)
	at org.jetbrains.kotlin.resolve.lazy.descriptors.LazyClassMemberScope.primaryConstructor$lambda$21(LazyClassMemberScope.kt:206)
	at org.jetbrains.kotlin.storage.LockBasedStorageManager$LockBasedLazyValue.invoke(LockBasedStorageManager.java:408)
	at org.jetbrains.kotlin.resolve.lazy.descriptors.LazyClassMemberScope.getPrimaryConstructor(LazyClassMemberScope.kt:524)
	at org.jetbrains.kotlin.resolve.lazy.descriptors.LazyClassMemberScope.createPropertiesFromPrimaryConstructorParameters(LazyClassMemberScope.kt:439)
	at org.jetbrains.kotlin.resolve.lazy.descriptors.LazyClassMemberScope.getNonDeclaredProperties(LazyClassMemberScope.kt:424)
	at org.jetbrains.kotlin.resolve.lazy.descriptors.AbstractLazyMemberScope.doGetProperties(AbstractLazyMemberScope.kt:150)
	at org.jetbrains.kotlin.resolve.lazy.descriptors.AbstractLazyMemberScope.propertyDescriptors$lambda$2(AbstractLazyMemberScope.kt:53)
	at org.jetbrains.kotlin.storage.LockBasedStorageManager$MapBasedMemoizedFunction.invoke(LockBasedStorageManager.java:578)
	at org.jetbrains.kotlin.storage.LockBasedStorageManager$MapBasedMemoizedFunctionToNotNull.invoke(LockBasedStorageManager.java:681)
	at org.jetbrains.kotlin.resolve.lazy.descriptors.AbstractLazyMemberScope.getContributedVariables(AbstractLazyMemberScope.kt:144)
	at org.jetbrains.kotlin.resolve.lazy.descriptors.LazyClassMemberScope.getContributedVariables(LazyClassMemberScope.kt:409)
	at org.jetbrains.kotlin.resolve.lazy.LazyDeclarationResolver$resolveToDescriptor$1.visitParameter(LazyDeclarationResolver.kt:139)
	at org.jetbrains.kotlin.resolve.lazy.LazyDeclarationResolver$resolveToDescriptor$1.visitParameter(LazyDeclarationResolver.kt:94)
	at org.jetbrains.kotlin.psi.KtParameter.accept(KtParameter.java:39)
	at org.jetbrains.kotlin.resolve.lazy.LazyDeclarationResolver.resolveToDescriptor(LazyDeclarationResolver.kt:94)
	at org.jetbrains.kotlin.resolve.lazy.LazyDeclarationResolver.resolveToDescriptor(LazyDeclarationResolver.kt:91)
	at org.jetbrains.kotlin.resolve.LazyTopDownAnalyzer$analyzeDeclarations$1.registerPrimaryConstructorParameters(LazyTopDownAnalyzer.kt:157)
	at org.jetbrains.kotlin.resolve.LazyTopDownAnalyzer$analyzeDeclarations$1.visitClass(LazyTopDownAnalyzer.kt:149)
	at org.jetbrains.kotlin.psi.KtVisitorVoid.visitClass(KtVisitorVoid.java:467)
	at org.jetbrains.kotlin.psi.KtVisitorVoid.visitClass(KtVisitorVoid.java:21)
	at org.jetbrains.kotlin.psi.KtClass.accept(KtClass.kt:22)
	at org.jetbrains.kotlin.psi.KtElementImplStub.accept(KtElementImplStub.java:49)
	at org.jetbrains.kotlin.resolve.ExceptionWrappingKtVisitorVoid.visitDeclaration(ExceptionWrappingKtVisitorVoid.kt:21)
	at org.jetbrains.kotlin.psi.KtVisitorVoid.visitDeclaration(KtVisitorVoid.java:461)
	at org.jetbrains.kotlin.psi.KtVisitorVoid.visitDeclaration(KtVisitorVoid.java:21)
	at org.jetbrains.kotlin.psi.KtVisitor.visitNamedDeclaration(KtVisitor.java:416)
	at org.jetbrains.kotlin.psi.KtVisitorVoid.visitNamedDeclaration(KtVisitorVoid.java:385)
	at org.jetbrains.kotlin.psi.KtVisitorVoid.visitNamedDeclaration(KtVisitorVoid.java:973)
	at org.jetbrains.kotlin.psi.KtVisitorVoid.visitNamedDeclaration(KtVisitorVoid.java:21)
	at org.jetbrains.kotlin.psi.KtVisitor.visitClassOrObject(KtVisitor.java:41)
	at org.jetbrains.kotlin.psi.KtVisitorVoid.visitClassOrObject(KtVisitorVoid.java:37)
	at org.jetbrains.kotlin.psi.KtVisitorVoid.visitClassOrObject(KtVisitorVoid.java:473)
	at org.jetbrains.kotlin.psi.KtVisitorVoid.visitClassOrObject(KtVisitorVoid.java:21)
	at org.jetbrains.kotlin.psi.KtVisitor.visitClass(KtVisitor.java:33)
	at org.jetbrains.kotlin.psi.KtVisitorVoid.visitClass(KtVisitorVoid.java:33)
	at org.jetbrains.kotlin.psi.KtVisitorVoid.visitClass(KtVisitorVoid.java:467)
	at org.jetbrains.kotlin.psi.KtVisitorVoid.visitClass(KtVisitorVoid.java:21)
	at org.jetbrains.kotlin.psi.KtClass.accept(KtClass.kt:22)
	at org.jetbrains.kotlin.psi.KtElementImplStub.accept(KtElementImplStub.java:49)
	at org.jetbrains.kotlin.resolve.LazyTopDownAnalyzer$analyzeDeclarations$1.registerDeclarations(LazyTopDownAnalyzer.kt:80)
	at org.jetbrains.kotlin.resolve.LazyTopDownAnalyzer$analyzeDeclarations$1.visitKtFile(LazyTopDownAnalyzer.kt:98)
	at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtFile(KtVisitorVoid.java:521)
	at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtFile(KtVisitorVoid.java:21)
	at org.jetbrains.kotlin.psi.KtFile.accept(KtFile.kt:41)
	at org.jetbrains.kotlin.psi.KtCommonFile.accept(KtCommonFile.kt:244)
	at org.jetbrains.kotlin.resolve.ExceptionWrappingKtVisitorVoid.visitElement(ExceptionWrappingKtVisitorVoid.kt:16)
	at com.intellij.psi.PsiElementVisitor.visitFile(PsiElementVisitor.java:51)
	at org.jetbrains.kotlin.psi.KtVisitor.visitKtFile(KtVisitor.java:73)
	at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtFile(KtVisitorVoid.java:69)
	at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtFile(KtVisitorVoid.java:521)
	at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtFile(KtVisitorVoid.java:21)
	at org.jetbrains.kotlin.psi.KtFile.accept(KtFile.kt:41)
	at org.jetbrains.kotlin.psi.KtCommonFile.accept(KtCommonFile.kt:244)
	at org.jetbrains.kotlin.resolve.LazyTopDownAnalyzer.analyzeDeclarations(LazyTopDownAnalyzer.kt:203)
	at org.jetbrains.kotlin.resolve.LazyTopDownAnalyzer.analyzeDeclarations$default(LazyTopDownAnalyzer.kt:58)
	at org.jetbrains.kotlin.idea.caches.resolve.KotlinResolveDataProvider.analyze(PerFileAnalysisCache.kt:643)
	at org.jetbrains.kotlin.idea.caches.resolve.PerFileAnalysisCache.analyze(PerFileAnalysisCache.kt:306)
	at org.jetbrains.kotlin.idea.caches.resolve.PerFileAnalysisCache.performAnalyze(PerFileAnalysisCache.kt:154)
	at org.jetbrains.kotlin.idea.caches.resolve.PerFileAnalysisCache.access$performAnalyze(PerFileAnalysisCache.kt:63)
	at org.jetbrains.kotlin.idea.caches.resolve.PerFileAnalysisCache.getAnalysisResults$kotlin_base_fe10_analysis(PerFileAnalysisCache.kt:138)
	at org.jetbrains.kotlin.idea.caches.resolve.ProjectResolutionFacade.analysisResultForElement(ProjectResolutionFacade.kt:253)
	at org.jetbrains.kotlin.idea.caches.resolve.ProjectResolutionFacade.getAnalysisResultsForElement$kotlin_base_fe10_analysis(ProjectResolutionFacade.kt:226)
	at org.jetbrains.kotlin.idea.caches.resolve.ModuleResolutionFacadeImpl.analyzeWithAllCompilerChecks$lambda$7(ModuleResolutionFacadeImpl.kt:79)
	at com.intellij.openapi.progress.impl.CancellationCheck.withCancellationCheck(CancellationCheck.kt:59)
	at com.intellij.openapi.progress.impl.CancellationCheck$Companion.runWithCancellationCheck(CancellationCheck.kt:105)
	at org.jetbrains.kotlin.idea.util.application.ApplicationUtilsKt.runWithCancellationCheck(ApplicationUtils.kt:64)
	at org.jetbrains.kotlin.idea.caches.resolve.ModuleResolutionFacadeImpl.analyzeWithAllCompilerChecks(ModuleResolutionFacadeImpl.kt:78)
	at org.jetbrains.kotlin.idea.caches.resolve.ResolutionFacadeWithDebugInfo.analyzeWithAllCompilerChecks(ResolutionFacadeWithDebugInfo.kt:58)
	at org.jetbrains.kotlin.idea.caches.resolve.ResolutionUtils.analyzeWithAllCompilerChecks(ResolutionUtils.kt:170)
	at org.jetbrains.kotlin.idea.highlighter.AbstractKotlinHighlightVisitor.analyze(AbstractKotlinHighlightVisitor.kt:117)
	at org.jetbrains.kotlin.idea.highlighter.AbstractKotlinHighlightVisitor.analyze(AbstractKotlinHighlightVisitor.kt:59)
	at com.intellij.codeInsight.daemon.impl.HighlightVisitorRunner.lambda$runVisitors$4(HighlightVisitorRunner.java:119)
	at com.intellij.concurrency.ApplierCompleter.processArrayItem(ApplierCompleter.java:126)
	at com.intellij.concurrency.ApplierCompleter.processArray(ApplierCompleter.java:207)
	at com.intellij.concurrency.ApplierCompleter.helpOthers(ApplierCompleter.java:227)
	at com.intellij.concurrency.ApplierCompleter.helpAll(ApplierCompleter.java:186)
	at com.intellij.concurrency.ApplierCompleter.lambda$exec$0(ApplierCompleter.java:116)
	at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.tryRunReadAction(AnyThreadWriteThreadingSupport.kt:351)
	at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:972)
	at com.intellij.concurrency.ApplierCompleter.lambda$wrapInReadActionAndIndicator$2(ApplierCompleter.java:158)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$14(CoreProgressManager.java:674)
	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:749)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:705)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:673)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:79)
	at com.intellij.concurrency.ApplierCompleter.wrapInReadActionAndIndicator(ApplierCompleter.java:169)
	at com.intellij.concurrency.ApplierCompleter.lambda$wrapAndRun$1(ApplierCompleter.java:150)
	at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.executeByImpatientReader(AnyThreadWriteThreadingSupport.kt:544)
	at com.intellij.openapi.application.impl.ApplicationImpl.executeByImpatientReader(ApplicationImpl.java:176)
	at com.intellij.concurrency.ApplierCompleter.wrapAndRun(ApplierCompleter.java:150)
	at com.intellij.concurrency.ApplierCompleter.exec(ApplierCompleter.java:118)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(Unknown Source)
	at java.base/java.util.concurrent.ForkJoinPool.scan(Unknown Source)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)

vanniktech avatar May 21 '25 17:05 vanniktech

I'm using the ALPHA-42 IDE plugin with ALPHA-43 runtime.

vanniktech avatar May 21 '25 17:05 vanniktech

Thanks for reporting this! Based on the stacktrace it looks like you don't have K2 mode enabled in Android Studio, correct? Do you have any issues with the plugin once K2 mode is enabled (Language & Frameworks > Kotlin > Enable K2 mode)?

rickclephas avatar May 21 '25 20:05 rickclephas

Ah I think I see what's happening here. There was a change in the Kotlin compiler that turned that property into a JVM property instead of a field. It's likely a mismatch between the Kotlin version that was used to build this AS version and the one used to build the IDE plugin.

Could you try version v1.0.0-ALPHA-40 of the IDE plugin instead?

rickclephas avatar May 21 '25 20:05 rickclephas

Based on the stacktrace it looks like you don't have K2 mode enabled in Android Studio, correct?

I read that many quick fixes etc from AS itself aren't supported and haven't been ported to K2, therefore still turned off. I can try it though if you want.

Could you try version v1.0.0-ALPHA-40 of the IDE plugin instead?

What would be the easiest version to test this?

vanniktech avatar May 21 '25 22:05 vanniktech

I read that many quick fixes etc from AS itself aren't supported and haven't been ported to K2, therefore still turned off. I can try it though if you want.

Ah that makes sense. The same error is likely also present in K2 mode, so no need to test it then.

What would be the easiest version to test this?

You can download v1.0.0-ALPHA-40 from the marketplace and install it from disk (plugins > settings icon > install plugin from disk). I can do some testing myself later today.

rickclephas avatar May 22 '25 06:05 rickclephas

I installed it. It does not crash, but I don't see any difference. Like there are no hints that I ought to add the return type:

Image

vanniktech avatar May 22 '25 07:05 vanniktech

Hmm that's interesting. I just tested this with a sample project and I am correctly seeing the warnings/errors and quickfixes.

  • Android Studio 2024.3.2 (AI-243.25659.59.2432.13423653)
  • K2 mode disabled in Android Studio
  • KMP-NativeCoroutines IDE plugin v1.0.0-ALPHA-40
  • Project using Kotlin 2.1.21
  • Project using KMP-NativeCoroutines v1.0.0-ALPHA-43

Is it just the explicit return type error that you aren't seeing / are you still seeing other warnings/errors? Anything special/different about your project/setup?

rickclephas avatar May 22 '25 17:05 rickclephas

Is it just the explicit return type error that you aren't seeing / are you still seeing other warnings/errors?

I'm not noticing any difference between having the plugin installed and having it not installed.

Anything special/different about your project/setup?

Not that I know. It's a massive project that contains around 20 apps with shared modules etc, but I'm not doing anything fancy.

vanniktech avatar May 23 '25 08:05 vanniktech

Ah go it. By default IntelliJ doesn't load third-party compiler plugins because of possible binary compatibility issues between the Kotlin versions used by the project and the IDE.

Third party compiler plugins can be loaded by disabling the following key in the registry (which was disabled in my test environment):

kotlin.k2.only.bundled.compiler.plugins.enabled

However that could possibly result in errors depending on the IDE and Kotlin versions in use. I'll take a look to see if there is a better way of handling this.

rickclephas avatar May 26 '25 16:05 rickclephas

New IDE specific versions will be available resolving the compatibility issues:

  • 1.0.0-ALPHA-43-idea-2024.3
  • 1.0.0-ALPHA-43-idea-2025.1

And for the EAP versions of 2025.2 there is 1.0.0-ALPHA-43-idea-2025.2-EAP-18003.27, available from the EAP channel.

Let me know if you are still having issues with one of those versions.

P.S. the plugin will now be enabled automatically in K2 mode as well, so simply installing it should be sufficient.

rickclephas avatar May 30 '25 13:05 rickclephas

I'm seeing something!

Image
Image

with:

Android Studio Narwhal | 2025.1.1 Build #AI-251.25410.109.2511.13665796, built on June 18, 2025 Runtime version: 21.0.6+-13391695-b895.109 aarch64 VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o. Toolkit: sun.lwawt.macosx.LWCToolkit macOS 14.7.2 GC: G1 Young Generation, G1 Concurrent GC, G1 Old Generation Memory: 8192M Cores: 10 Metal Rendering is ON Registry: debugger.new.tool.window.layout=true android.gradle.project.startup.activity.disabled=true ide.experimental.ui=true Non-Bundled Plugins: com.rickclephas.kmp.nativecoroutines (1.0.0-ALPHA-44-idea-2025.1) com.squareup.sqldelight (2.1.0)

vanniktech avatar Jun 30 '25 09:06 vanniktech

I'm seeing something!

Awesome! Going forward every minor IntelliJ release will get a special build of the IDE plugin. That will resolve all conflicts between the Kotlin compiler versions.

If you notice anything strange or broken please let me know.

rickclephas avatar Jun 30 '25 12:06 rickclephas