From f658f03fa3cad60ba8850f6689ade8d6bfef034a Mon Sep 17 00:00:00 2001 From: Preetam Bhosle Date: Fri, 9 Oct 2026 17:27:53 +0530 Subject: [PATCH] fix(compiler-plugin): fix K2 story discovery and update test harness for Kotlin 2.3 - Update kotlinCompileTesting to 0.12.1 in libs.versions.toml to support CompilerPluginRegistrar.pluginId in Kotlin 2.3+. - Use safe cast for FirMetadataSource in AddCodeSnippetToStoriesLowering to prevent ClassCastException. - Match story property delegate by factory type directly instead of relying on IrDeclarationOrigin.PROPERTY_DELEGATE, which is not consistently present in K2. --- gradle/libs.versions.toml | 2 +- .../src/kotlin/StorytaleLoweringExtension.kt | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 2166bb3..6060b5a 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -5,7 +5,7 @@ android-compileSdk = "36" android-minSdk = "26" androidx-activityCompose = "1.12.2" assertj = "3.27.2" -kotlinCompileTesting = "0.11.0" +kotlinCompileTesting = "0.12.1" junitVersion = "4.13.2" storytale = "0.0.3+dev8" diff --git a/modules/compiler-plugin/src/kotlin/StorytaleLoweringExtension.kt b/modules/compiler-plugin/src/kotlin/StorytaleLoweringExtension.kt index 9d7613e..d09da60 100644 --- a/modules/compiler-plugin/src/kotlin/StorytaleLoweringExtension.kt +++ b/modules/compiler-plugin/src/kotlin/StorytaleLoweringExtension.kt @@ -10,7 +10,6 @@ import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.IrStatement import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET import org.jetbrains.kotlin.ir.declarations.IrDeclaration -import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin import org.jetbrains.kotlin.ir.declarations.IrFile import org.jetbrains.kotlin.ir.declarations.IrModuleFragment import org.jetbrains.kotlin.ir.declarations.IrProperty @@ -74,7 +73,7 @@ private class AddCodeSnippetToStoriesLowering(context: IrPluginContext) : BodyLo } private fun IrDeclaration.getFileSourceCode(): CharSequence? { - return (file.metadata as FirMetadataSource).fir.source.text + return (file.metadata as? FirMetadataSource)?.fir?.source?.text } } } @@ -134,11 +133,10 @@ private class MentionAllStoriesGettersInsideMainFunctionLowering( ) } + // In K2, delegate backing field origin may not be PROPERTY_DELEGATE; match factory type directly private fun IrProperty.isStory(factoryType: IrType) = isTopLevel && isDelegated && - backingField?.let { - it.origin == IrDeclarationOrigin.PROPERTY_DELEGATE && it.type == factoryType - } ?: false + backingField?.type == factoryType private fun IrSimpleFunction.isGeneratedMainViewController() = isTopLevel && visibility.isPublicAPI &&