evant / kotlin-inject

Dependency injection lib for kotlin
Apache License 2.0
1.14k stars 51 forks source link

Failure to build KMP JS Target with KSP 1.9.20-1.0.14 #319

Closed AlexBurdu closed 7 months ago

AlexBurdu commented 7 months ago

Updated Kotlin to 1.9.2 and KSP to 1.9.20-1.0.14 recently and the JS target in a KMP project is now failing with the below stacktrace. It only fails for the JS target; the other targets build fine if I remove JS.

e: java.lang.AssertionError: Rewrite at slice LEXICAL_SCOPE key: ANNOTATION_ENTRY old value: org.jetbrains.kotlin.resolve.scopes.LexicalScope$Base@52de31fa@1390293498 new value: org.jetbrains.kotlin.resolve.scopes.LexicalScope$Base@3e8875f7@1049130487
<File name: KotlinInjectExample.kt, Physical: true>
<ELEMENT>@Component</ELEMENT>
abstract class AppComponent {
  abstract val repo: Repository

  @Provides
  protected fun jsonParser(): JsonParser = RealJsonParser()

  protected val RealHttp.bind: Http
    @Provides get() = this

  companion object
}
    at org.jetbrains.kotlin.com.intellij.openapi.diagnostic.DefaultLogger.error(DefaultLogger.java:54)
    at org.jetbrains.kotlin.com.intellij.openapi.diagnostic.Logger.error(Logger.java:182)
    at org.jetbrains.kotlin.util.slicedMap.Slices.logErrorAboutRewritingNonEqualObjects(Slices.java:158)
    at org.jetbrains.kotlin.util.slicedMap.Slices.access$000(Slices.java:30)
    at org.jetbrains.kotlin.util.slicedMap.Slices$1.processRewrite(Slices.java:42)
    at org.jetbrains.kotlin.util.slicedMap.SlicedMapImpl.put(SlicedMapImpl.java:65)
    at org.jetbrains.kotlin.resolve.BindingTraceContext.record(BindingTraceContext.java:150)
    at org.jetbrains.kotlin.storage.LockBasedLazyResolveStorageManager$LockProtectedTrace$record$1.invoke(LockBasedLazyResolveStorageManager.kt:70)
    at org.jetbrains.kotlin.storage.LockBasedLazyResolveStorageManager$LockProtectedTrace$record$1.invoke(LockBasedLazyResolveStorageManager.kt:70)
    at org.jetbrains.kotlin.storage.LockBasedStorageManager.compute(LockBasedStorageManager.java:290)
    at org.jetbrains.kotlin.storage.LockBasedLazyResolveStorageManager$LockProtectedTrace.record(LockBasedLazyResolveStorageManager.kt:70)
    at org.jetbrains.kotlin.resolve.calls.CallResolver.resolveCallForConstructor(CallResolver.java:380)
    at org.jetbrains.kotlin.resolve.calls.CallResolver.resolveFunctionCall(CallResolver.java:334)
    at org.jetbrains.kotlin.resolve.calls.CallResolver.resolveFunctionCall(CallResolver.java:303)
    at org.jetbrains.kotlin.resolve.AnnotationResolverImpl.resolveAnnotationCall(AnnotationResolverImpl.java:167)
    at com.google.devtools.ksp.symbol.impl.binary.KSAnnotationDescriptorImplKt.getValueArguments(KSAnnotationDescriptorImpl.kt:200)
    at com.google.devtools.ksp.symbol.impl.binary.KSAnnotationDescriptorImplKt.createKSValueArguments(KSAnnotationDescriptorImpl.kt:237)
    at com.google.devtools.ksp.symbol.impl.kotlin.KSAnnotationImpl$arguments$2.invoke(KSAnnotationImpl.kt:83)
    at com.google.devtools.ksp.symbol.impl.kotlin.KSAnnotationImpl$arguments$2.invoke(KSAnnotationImpl.kt:82)
    at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
    at com.google.devtools.ksp.symbol.impl.kotlin.KSAnnotationImpl.getArguments(KSAnnotationImpl.kt:82)
    at com.google.devtools.ksp.visitor.KSValidateVisitor.visitAnnotation(KSValidateVisitor.kt:50)
    at com.google.devtools.ksp.visitor.KSValidateVisitor.visitAnnotation(KSValidateVisitor.kt:5)
    at com.google.devtools.ksp.symbol.impl.kotlin.KSAnnotationImpl.accept(KSAnnotationImpl.kt:110)
    at com.google.devtools.ksp.visitor.KSValidateVisitor.visitAnnotated(KSValidateVisitor.kt:40)
    at com.google.devtools.ksp.visitor.KSValidateVisitor.visitDeclaration(KSValidateVisitor.kt:23)
    at com.google.devtools.ksp.visitor.KSValidateVisitor.visitClassDeclaration(KSValidateVisitor.kt:67)
    at com.google.devtools.ksp.visitor.KSValidateVisitor.visitClassDeclaration(KSValidateVisitor.kt:5)
    at com.google.devtools.ksp.symbol.impl.kotlin.KSClassDeclarationImpl.accept(KSClassDeclarationImpl.kt:135)
    at me.tatarka.inject.compiler.ksp.InjectProcessor.validate(InjectProcessor.kt:84)
    at me.tatarka.inject.compiler.ksp.InjectProcessor.process(InjectProcessor.kt:51)
    at com.google.devtools.ksp.AbstractKotlinSymbolProcessingExtension$doAnalysis$8$1.invoke(KotlinSymbolProcessingExtension.kt:305)
    at com.google.devtools.ksp.AbstractKotlinSymbolProcessingExtension$doAnalysis$8$1.invoke(KotlinSymbolProcessingExtension.kt:303)
    at com.google.devtools.ksp.AbstractKotlinSymbolProcessingExtension.handleException(KotlinSymbolProcessingExtension.kt:409)
    at com.google.devtools.ksp.AbstractKotlinSymbolProcessingExtension.doAnalysis(KotlinSymbolProcessingExtension.kt:303)
    at org.jetbrains.kotlin.js.analyze.AbstractTopDownAnalyzerFacadeForWeb.analyzeFilesWithGivenTrace(TopDownAnalyzerFacadeForJS.kt:142)
    at org.jetbrains.kotlin.js.analyze.AbstractTopDownAnalyzerFacadeForWeb.analyzeFiles(TopDownAnalyzerFacadeForJS.kt:94)
    at org.jetbrains.kotlin.ir.backend.js.ModulesStructure$runAnalysis$1.invoke(klib.kt:534)
    at org.jetbrains.kotlin.ir.backend.js.ModulesStructure$runAnalysis$1.invoke(klib.kt:533)
    at org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport.analyzeAndReport(AnalyzerWithCompilerReport.kt:115)
    at org.jetbrains.kotlin.ir.backend.js.ModulesStructure.runAnalysis(klib.kt:533)
    at org.jetbrains.kotlin.ir.backend.js.PrepareAnalyzedSourceModuleKt.prepareAnalyzedSourceModule(prepareAnalyzedSourceModule.kt:30)
    at org.jetbrains.kotlin.ir.backend.js.PrepareAnalyzedSourceModuleKt.prepareAnalyzedSourceModule$default(prepareAnalyzedSourceModule.kt:17)
    at org.jetbrains.kotlin.cli.js.K2JsIrCompiler.processSourceModule(K2JsIrCompiler.kt:427)
    at org.jetbrains.kotlin.cli.js.K2JsIrCompiler.doExecute(K2JsIrCompiler.kt:273)
    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)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:360)
    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:712)
    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:399)
    at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:704)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.Throwable: Rewrite at slice LEXICAL_SCOPE key: ANNOTATION_ENTRY old value: org.jetbrains.kotlin.resolve.scopes.LexicalScope$Base@52de31fa@1390293498 new value: org.jetbrains.kotlin.resolve.scopes.LexicalScope$Base@3e8875f7@1049130487
<File name: KotlinInjectExample.kt, Physical: true>
<ELEMENT>@Component</ELEMENT>
abstract class AppComponent {
  abstract val repo: Repository

  @Provides
  protected fun jsonParser(): JsonParser = RealJsonParser()

  protected val RealHttp.bind: Http
    @Provides get() = this

  companion object
}
    ... 67 more

java.lang.AssertionError: Rewrite at slice LEXICAL_SCOPE key: ANNOTATION_ENTRY old value: org.jetbrains.kotlin.resolve.scopes.LexicalScope$Base@52de31fa@1390293498 new value: org.jetbrains.kotlin.resolve.scopes.LexicalScope$Base@3e8875f7@1049130487
<File name: KotlinInjectExample.kt, Physical: true>
<ELEMENT>@Component</ELEMENT>
abstract class AppComponent {
  abstract val repo: Repository

  @Provides
  protected fun jsonParser(): JsonParser = RealJsonParser()

  protected val RealHttp.bind: Http
    @Provides get() = this

  companion object
}
    at org.jetbrains.kotlin.com.intellij.openapi.diagnostic.DefaultLogger.error(DefaultLogger.java:54)
    at org.jetbrains.kotlin.com.intellij.openapi.diagnostic.Logger.error(Logger.java:182)
    at org.jetbrains.kotlin.util.slicedMap.Slices.logErrorAboutRewritingNonEqualObjects(Slices.java:158)
    at org.jetbrains.kotlin.util.slicedMap.Slices.access$000(Slices.java:30)
    at org.jetbrains.kotlin.util.slicedMap.Slices$1.processRewrite(Slices.java:42)
    at org.jetbrains.kotlin.util.slicedMap.SlicedMapImpl.put(SlicedMapImpl.java:65)
    at org.jetbrains.kotlin.resolve.BindingTraceContext.record(BindingTraceContext.java:150)
    at org.jetbrains.kotlin.storage.LockBasedLazyResolveStorageManager$LockProtectedTrace$record$1.invoke(LockBasedLazyResolveStorageManager.kt:70)
    at org.jetbrains.kotlin.storage.LockBasedLazyResolveStorageManager$LockProtectedTrace$record$1.invoke(LockBasedLazyResolveStorageManager.kt:70)
    at org.jetbrains.kotlin.storage.LockBasedStorageManager.compute(LockBasedStorageManager.java:290)
    at org.jetbrains.kotlin.storage.LockBasedLazyResolveStorageManager$LockProtectedTrace.record(LockBasedLazyResolveStorageManager.kt:70)
    at org.jetbrains.kotlin.resolve.calls.CallResolver.resolveCallForConstructor(CallResolver.java:380)
    at org.jetbrains.kotlin.resolve.calls.CallResolver.resolveFunctionCall(CallResolver.java:334)
    at org.jetbrains.kotlin.resolve.calls.CallResolver.resolveFunctionCall(CallResolver.java:303)
    at org.jetbrains.kotlin.resolve.AnnotationResolverImpl.resolveAnnotationCall(AnnotationResolverImpl.java:167)
    at com.google.devtools.ksp.symbol.impl.binary.KSAnnotationDescriptorImplKt.getValueArguments(KSAnnotationDescriptorImpl.kt:200)
    at com.google.devtools.ksp.symbol.impl.binary.KSAnnotationDescriptorImplKt.createKSValueArguments(KSAnnotationDescriptorImpl.kt:237)
    at com.google.devtools.ksp.symbol.impl.kotlin.KSAnnotationImpl$arguments$2.invoke(KSAnnotationImpl.kt:83)
    at com.google.devtools.ksp.symbol.impl.kotlin.KSAnnotationImpl$arguments$2.invoke(KSAnnotationImpl.kt:82)
    at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
    at com.google.devtools.ksp.symbol.impl.kotlin.KSAnnotationImpl.getArguments(KSAnnotationImpl.kt:82)
    at com.google.devtools.ksp.visitor.KSValidateVisitor.visitAnnotation(KSValidateVisitor.kt:50)
    at com.google.devtools.ksp.visitor.KSValidateVisitor.visitAnnotation(KSValidateVisitor.kt:5)
    at com.google.devtools.ksp.symbol.impl.kotlin.KSAnnotationImpl.accept(KSAnnotationImpl.kt:110)
    at com.google.devtools.ksp.visitor.KSValidateVisitor.visitAnnotated(KSValidateVisitor.kt:40)
    at com.google.devtools.ksp.visitor.KSValidateVisitor.visitDeclaration(KSValidateVisitor.kt:23)
    at com.google.devtools.ksp.visitor.KSValidateVisitor.visitClassDeclaration(KSValidateVisitor.kt:67)
    at com.google.devtools.ksp.visitor.KSValidateVisitor.visitClassDeclaration(KSValidateVisitor.kt:5)
    at com.google.devtools.ksp.symbol.impl.kotlin.KSClassDeclarationImpl.accept(KSClassDeclarationImpl.kt:135)
    at me.tatarka.inject.compiler.ksp.InjectProcessor.validate(InjectProcessor.kt:84)
    at me.tatarka.inject.compiler.ksp.InjectProcessor.process(InjectProcessor.kt:51)
    at com.google.devtools.ksp.AbstractKotlinSymbolProcessingExtension$doAnalysis$8$1.invoke(KotlinSymbolProcessingExtension.kt:305)
    at com.google.devtools.ksp.AbstractKotlinSymbolProcessingExtension$doAnalysis$8$1.invoke(KotlinSymbolProcessingExtension.kt:303)
    at com.google.devtools.ksp.AbstractKotlinSymbolProcessingExtension.handleException(KotlinSymbolProcessingExtension.kt:409)
    at com.google.devtools.ksp.AbstractKotlinSymbolProcessingExtension.doAnalysis(KotlinSymbolProcessingExtension.kt:303)
    at org.jetbrains.kotlin.js.analyze.AbstractTopDownAnalyzerFacadeForWeb.analyzeFilesWithGivenTrace(TopDownAnalyzerFacadeForJS.kt:142)
    at org.jetbrains.kotlin.js.analyze.AbstractTopDownAnalyzerFacadeForWeb.analyzeFiles(TopDownAnalyzerFacadeForJS.kt:94)
    at org.jetbrains.kotlin.ir.backend.js.ModulesStructure$runAnalysis$1.invoke(klib.kt:534)
    at org.jetbrains.kotlin.ir.backend.js.ModulesStructure$runAnalysis$1.invoke(klib.kt:533)
    at org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport.analyzeAndReport(AnalyzerWithCompilerReport.kt:115)
    at org.jetbrains.kotlin.ir.backend.js.ModulesStructure.runAnalysis(klib.kt:533)
    at org.jetbrains.kotlin.ir.backend.js.PrepareAnalyzedSourceModuleKt.prepareAnalyzedSourceModule(prepareAnalyzedSourceModule.kt:30)
    at org.jetbrains.kotlin.ir.backend.js.PrepareAnalyzedSourceModuleKt.prepareAnalyzedSourceModule$default(prepareAnalyzedSourceModule.kt:17)
    at org.jetbrains.kotlin.cli.js.K2JsIrCompiler.processSourceModule(K2JsIrCompiler.kt:427)
    at org.jetbrains.kotlin.cli.js.K2JsIrCompiler.doExecute(K2JsIrCompiler.kt:273)
    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)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:360)
    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:712)
    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:399)
    at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:704)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.Throwable: Rewrite at slice LEXICAL_SCOPE key: ANNOTATION_ENTRY old value: org.jetbrains.kotlin.resolve.scopes.LexicalScope$Base@52de31fa@1390293498 new value: org.jetbrains.kotlin.resolve.scopes.LexicalScope$Base@3e8875f7@1049130487
<File name: KotlinInjectExample.kt, Physical: true>
<ELEMENT>@Component</ELEMENT>
abstract class AppComponent {
  abstract val repo: Repository

  @Provides
  protected fun jsonParser(): JsonParser = RealJsonParser()

  protected val RealHttp.bind: Http
    @Provides get() = this

  companion object
}
    ... 67 more

The class it tries to generate is pretty basic, as this is just a POC to integrate Kotlin Inject:

@Component
abstract class AppComponent {
  abstract val repo: Repository

  @Provides
  protected fun jsonParser(): JsonParser = RealJsonParser()

  protected val RealHttp.bind: Http
    @Provides get() = this

  companion object
}

interface Http

interface JsonParser

class RealJsonParser : JsonParser

@Inject
class RealHttp : Http

@Inject
class Api(private val http: Http, private val jsonParser: JsonParser)

@Inject
class Repository(private val api: Api)

Module build.gradle.kts file:

import org.gradle.configurationcache.extensions.capitalized
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType

plugins {
  kotlin("multiplatform")
  kotlin("native.cocoapods")
  id("org.jetbrains.compose")
  id("com.google.devtools.ksp") version "1.9.20-1.0.14"
  id("app.cash.sqldelight") version "2.0.0"
  id("com.android.library")
}

kotlin {
  // Add Android target platform
  android()

  // Add iOS target platforms
  iosX64()
  iosArm64()
  iosSimulatorArm64()

  // Add JS target platform
  js(IR).browser()

  // Add JVM target platform
  jvm("jvm") {
    jvmToolchain(17)
  }

  cocoapods {
    version = "1.0.0"
    summary = "Some description for the Shared Module"
    homepage = "Link to the Shared Module homepage"
    ios.deploymentTarget = "14.1"
    podfile = project.file("../iosApp/Podfile")
    framework {
      baseName = "main"
      isStatic = true
    }
  }

  sourceSets {
    val commonMain by getting {
      kotlin.apply {
        srcDir("commonMain")
        resources.srcDir("commonMain/resources")
      }

      dependencies {
        implementation(project(":kotlin:net:burdu:libs:repository:_gradle_gen:repository"))
        implementation("org.jetbrains.compose.animation:animation:1.5.10")
        implementation("org.jetbrains.compose.components:components-resources:1.5.10")
        implementation("org.jetbrains.compose.foundation:foundation:1.5.10")
        implementation("org.jetbrains.compose.material:material:1.5.10")
        implementation("org.jetbrains.compose.runtime:runtime:1.5.10")
        implementation("org.jetbrains.compose.ui:ui:1.5.10")
        implementation("me.tatarka.inject:kotlin-inject-runtime:0.6.3")
      }
    }

    val commonTest by getting {
      kotlin.apply {
        srcDir("commonTest")
      }
    }

    // Add Android source sets
    val androidMain by getting {
      kotlin.apply {
        srcDir("androidMain")
      }
    }

    // Add Android instrumentation tests source sets
    val androidInstrumentedTest by getting {
      kotlin.apply {
        srcDir("androidTest")
      }
    }

    // Add iOS source sets
    val iosX64Main by getting
    val iosArm64Main by getting
    val iosSimulatorArm64Main by getting
    val iosMain by creating {
      dependsOn(commonMain)
      iosX64Main.dependsOn(this)
      iosArm64Main.dependsOn(this)
      iosSimulatorArm64Main.dependsOn(this)
    }

    // Add JS source sets
    val jsMain by getting {
      kotlin.apply {
        srcDir("jsMain")
      }
      dependencies {
        implementation("org.jetbrains.compose.html:html-core:1.5.10")
      }
    }

    val jsTest by getting {
      kotlin.apply {
        srcDir("jsTest")
      }
    }

    // Add JVM source sets
    val jvmMain by getting {
      kotlin.apply {
        srcDir("jvmMain")
      }
      dependencies {

        implementation("org.jetbrains.compose.ui:ui-tooling-preview:1.5.10")
      }
    }

    val jvmTest by getting {
      kotlin.apply {
        srcDir("jvmTest")
      }
    }
  }

}

// Add Android extension block
android {
  sourceSets["main"].apply {
    kotlin.srcDirs("androidMain")
    manifest.srcFile("androidMain/AndroidManifest.xml")
    res.srcDirs("androidMain/res")
    resources.srcDirs("commonMain/resources")
  }

  namespace = "com.my.app"
  defaultConfig {
    minSdk = 28
    targetSdk = 34
  }
  compileSdk = 34

  compileOptions {
    sourceCompatibility = JavaVersion.VERSION_17
    targetCompatibility = JavaVersion.VERSION_17
  }

  kotlin {
    jvmToolchain(17)
  }
}

ksp {
  arg("me.tatarka.inject.generateCompanionExtensions", "true")
}

dependencies {
  kotlin.targets.asSequence().filter { target ->
      // Don't add KSP for common target, only final platforms
      target.platformType != KotlinPlatformType.common
    }.forEach { target ->
      add(
        "ksp${target.targetName.capitalized()}",
        "me.tatarka.inject:kotlin-inject-compiler-ksp:0.6.3"
      )
    }
}
sqldelight {
  databases {
    create("Database") {
      packageName.set("com.my.app")
    }
  }
}
AlexBurdu commented 7 months ago

Similar to issue #316 this builds just fine with KSP 1.9.10-1.0.13

evant commented 7 months ago

This one actually looks like a bug in ksp itself, you may want to file there directly

AlexBurdu commented 7 months ago

looks like it just got resolved a few hours ago: https://github.com/google/ksp/issues/1591

evant commented 7 months ago

ksp fix has been released https://github.com/google/ksp/releases/tag/1.9.21-1.0.15