sqldelight: In Kotlin 1.8.0-RC, the sqldelight plugin generates sources for all KMP, leading to a `Redeclaration` error.
SQLDelight Version
1.5.4
Operating System
MacOS Ventura, 13.0.1, M1
Gradle Version
7.6
Kotlin Version
1.8.0-RC
Dialect
SQLite
AGP Version
7.2.0
Describe the Bug
To reproduce, create a KMP project with an android
and an ios
target, with one shared
module.
Running the ./gradlew generateSqlDelightInterface
generates the required classes for all the targets, which leads to Redeclaration
errors when you try to compile (e.g., ./gradlew compileKotlinIosSimulatorArm64)
Stacktrace
2022-12-14T14:06:35.071+0100 [ERROR] [system.err] e: file:///Users/stefanthaler/Spikes/kmp-sqldelight/shared/build/generated/sqldelight/code/Player/commonCommonMain/test/HockeyPlayer.kt:6:19 Redeclaration: HockeyPlayer
2022-12-14T14:06:35.071+0100 [ERROR] [system.err] e: file:///Users/stefanthaler/Spikes/kmp-sqldelight/shared/build/generated/sqldelight/code/Player/commonCommonMain/test/Player.kt:8:18 Redeclaration: Player
2022-12-14T14:06:35.071+0100 [ERROR] [system.err] e: file:///Users/stefanthaler/Spikes/kmp-sqldelight/shared/build/generated/sqldelight/code/Player/commonCommonMain/test/Player.kt:13:29 Overload resolution ambiguity:
2022-12-14T14:06:35.071+0100 [ERROR] [system.err] internal val KClass<Player>.schema: SqlDriver.Schema defined in test.shared in file PlayerImpl.kt
2022-12-14T14:06:35.071+0100 [ERROR] [system.err] internal val KClass<Player>.schema: SqlDriver.Schema defined in test.shared in file PlayerImpl.kt
2022-12-14T14:06:35.071+0100 [ERROR] [system.err] internal val KClass<Player>.schema: SqlDriver.Schema defined in test.shared in file PlayerImpl.kt
2022-12-14T14:06:35.071+0100 [ERROR] [system.err] e: file:///Users/stefanthaler/Spikes/kmp-sqldelight/shared/build/generated/sqldelight/code/Player/commonCommonMain/test/Player.kt:15:75 Overload resolution ambiguity:
2022-12-14T14:06:35.071+0100 [ERROR] [system.err] internal fun KClass<Player>.newInstance(driver: SqlDriver): Player defined in test.shared in file PlayerImpl.kt
2022-12-14T14:06:35.071+0100 [ERROR] [system.err] internal fun KClass<Player>.newInstance(driver: SqlDriver): Player defined in test.shared in file PlayerImpl.kt
2022-12-14T14:06:35.071+0100 [ERROR] [system.err] internal fun KClass<Player>.newInstance(driver: SqlDriver): Player defined in test.shared in file PlayerImpl.kt
2022-12-14T14:06:35.071+0100 [ERROR] [system.err] e: file:///Users/stefanthaler/Spikes/kmp-sqldelight/shared/build/generated/sqldelight/code/Player/commonCommonMain/test/PlayerQueries.kt:5:18 Redeclaration: PlayerQueries
2022-12-14T14:06:35.071+0100 [ERROR] [system.err] e: file:///Users/stefanthaler/Spikes/kmp-sqldelight/shared/build/generated/sqldelight/code/Player/commonCommonMain/test/shared/PlayerImpl.kt:11:29 Conflicting declarations: internal val KClass<Player>.schema: SqlDriver.Schema, internal val KClass<Player>.schema: SqlDriver.Schema, internal val KClass<Player>.schema: SqlDriver.Schema
2022-12-14T14:06:35.071+0100 [ERROR] [system.err] e: file:///Users/stefanthaler/Spikes/kmp-sqldelight/shared/build/generated/sqldelight/code/Player/commonCommonMain/test/shared/PlayerImpl.kt:14:1 Conflicting overloads: internal fun KClass<Player>.newInstance(driver: SqlDriver): Player defined in test.shared in file PlayerImpl.kt, internal fun KClass<Player>.newInstance(driver: SqlDriver): Player defined in test.shared in file PlayerImpl.kt, internal fun KClass<Player>.newInstance(driver: SqlDriver): Player defined in test.shared in file PlayerImpl.kt
2022-12-14T14:06:35.071+0100 [ERROR] [system.err] e: file:///Users/stefanthaler/Spikes/kmp-sqldelight/shared/build/generated/sqldelight/code/Player/commonCommonMain/test/shared/PlayerImpl.kt:16:15 Redeclaration: PlayerImpl
2022-12-14T14:06:35.071+0100 [ERROR] [system.err] e: file:///Users/stefanthaler/Spikes/kmp-sqldelight/shared/build/generated/sqldelight/code/Player/commonCommonMain/test/shared/PlayerImpl.kt:48:15 Redeclaration: PlayerQueriesImpl
2022-12-14T14:06:35.071+0100 [ERROR] [system.err] e: file:///Users/stefanthaler/Spikes/kmp-sqldelight/shared/build/generated/sqldelight/code/Player/commonIosMain/test/HockeyPlayer.kt:6:19 Redeclaration: HockeyPlayer
2022-12-14T14:06:35.071+0100 [ERROR] [system.err] e: file:///Users/stefanthaler/Spikes/kmp-sqldelight/shared/build/generated/sqldelight/code/Player/commonIosMain/test/Player.kt:8:18 Redeclaration: Player
2022-12-14T14:06:35.071+0100 [ERROR] [system.err] e: file:///Users/stefanthaler/Spikes/kmp-sqldelight/shared/build/generated/sqldelight/code/Player/commonIosMain/test/Player.kt:13:29 Overload resolution ambiguity:
2022-12-14T14:06:35.071+0100 [ERROR] [system.err] internal val KClass<Player>.schema: SqlDriver.Schema defined in test.shared in file PlayerImpl.kt
2022-12-14T14:06:35.072+0100 [ERROR] [system.err] internal val KClass<Player>.schema: SqlDriver.Schema defined in test.shared in file PlayerImpl.kt
2022-12-14T14:06:35.072+0100 [ERROR] [system.err] internal val KClass<Player>.schema: SqlDriver.Schema defined in test.shared in file PlayerImpl.kt
2022-12-14T14:06:35.072+0100 [ERROR] [system.err] e: file:///Users/stefanthaler/Spikes/kmp-sqldelight/shared/build/generated/sqldelight/code/Player/commonIosMain/test/Player.kt:15:75 Overload resolution ambiguity:
2022-12-14T14:06:35.072+0100 [ERROR] [system.err] internal fun KClass<Player>.newInstance(driver: SqlDriver): Player defined in test.shared in file PlayerImpl.kt
2022-12-14T14:06:35.072+0100 [ERROR] [system.err] internal fun KClass<Player>.newInstance(driver: SqlDriver): Player defined in test.shared in file PlayerImpl.kt
2022-12-14T14:06:35.072+0100 [ERROR] [system.err] internal fun KClass<Player>.newInstance(driver: SqlDriver): Player defined in test.shared in file PlayerImpl.kt
2022-12-14T14:06:35.072+0100 [ERROR] [system.err] e: file:///Users/stefanthaler/Spikes/kmp-sqldelight/shared/build/generated/sqldelight/code/Player/commonIosMain/test/PlayerQueries.kt:5:18 Redeclaration: PlayerQueries
2022-12-14T14:06:35.072+0100 [ERROR] [system.err] e: file:///Users/stefanthaler/Spikes/kmp-sqldelight/shared/build/generated/sqldelight/code/Player/commonIosMain/test/shared/PlayerImpl.kt:11:29 Conflicting declarations: internal val KClass<Player>.schema: SqlDriver.Schema, internal val KClass<Player>.schema: SqlDriver.Schema, internal val KClass<Player>.schema: SqlDriver.Schema
2022-12-14T14:06:35.072+0100 [ERROR] [system.err] e: file:///Users/stefanthaler/Spikes/kmp-sqldelight/shared/build/generated/sqldelight/code/Player/commonIosMain/test/shared/PlayerImpl.kt:12:11 Cannot access 'PlayerImpl': it is private in file
2022-12-14T14:06:35.072+0100 [ERROR] [system.err] e: file:///Users/stefanthaler/Spikes/kmp-sqldelight/shared/build/generated/sqldelight/code/Player/commonIosMain/test/shared/PlayerImpl.kt:12:22 Cannot access 'PlayerImpl': it is private in file
2022-12-14T14:06:35.072+0100 [ERROR] [system.err] e: file:///Users/stefanthaler/Spikes/kmp-sqldelight/shared/build/generated/sqldelight/code/Player/commonIosMain/test/shared/PlayerImpl.kt:14:1 Conflicting overloads: internal fun KClass<Player>.newInstance(driver: SqlDriver): Player defined in test.shared in file PlayerImpl.kt, internal fun KClass<Player>.newInstance(driver: SqlDriver): Player defined in test.shared in file PlayerImpl.kt, internal fun KClass<Player>.newInstance(driver: SqlDriver): Player defined in test.shared in file PlayerImpl.kt
2022-12-14T14:06:35.072+0100 [ERROR] [system.err] e: file:///Users/stefanthaler/Spikes/kmp-sqldelight/shared/build/generated/sqldelight/code/Player/commonIosMain/test/shared/PlayerImpl.kt:14:70 Cannot access 'PlayerImpl': it is private in file
2022-12-14T14:06:35.072+0100 [ERROR] [system.err] e: file:///Users/stefanthaler/Spikes/kmp-sqldelight/shared/build/generated/sqldelight/code/Player/commonIosMain/test/shared/PlayerImpl.kt:16:15 Redeclaration: PlayerImpl
2022-12-14T14:06:35.072+0100 [ERROR] [system.err] e: file:///Users/stefanthaler/Spikes/kmp-sqldelight/shared/build/generated/sqldelight/code/Player/commonIosMain/test/shared/PlayerImpl.kt:19:38 Cannot access 'PlayerQueriesImpl': it is private in file
2022-12-14T14:06:35.072+0100 [ERROR] [system.err] e: file:///Users/stefanthaler/Spikes/kmp-sqldelight/shared/build/generated/sqldelight/code/Player/commonIosMain/test/shared/PlayerImpl.kt:19:58 Cannot access 'PlayerQueriesImpl': it is private in file
2022-12-14T14:06:35.072+0100 [ERROR] [system.err] e: file:///Users/stefanthaler/Spikes/kmp-sqldelight/shared/build/generated/sqldelight/code/Player/commonIosMain/test/shared/PlayerImpl.kt:48:15 Redeclaration: PlayerQueriesImpl
2022-12-14T14:06:35.072+0100 [ERROR] [system.err] e: file:///Users/stefanthaler/Spikes/kmp-sqldelight/shared/build/generated/sqldelight/code/Player/commonIosMain/test/shared/PlayerImpl.kt:49:25 Cannot access 'PlayerImpl': it is private in file
2022-12-14T14:06:35.072+0100 [ERROR] [system.err] e: file:///Users/stefanthaler/Spikes/kmp-sqldelight/shared/build/generated/sqldelight/code/Player/commonMain/test/HockeyPlayer.kt:6:19 Redeclaration: HockeyPlayer
2022-12-14T14:06:35.072+0100 [ERROR] [system.err] e: file:///Users/stefanthaler/Spikes/kmp-sqldelight/shared/build/generated/sqldelight/code/Player/commonMain/test/Player.kt:8:18 Redeclaration: Player
2022-12-14T14:06:35.072+0100 [ERROR] [system.err] e: file:///Users/stefanthaler/Spikes/kmp-sqldelight/shared/build/generated/sqldelight/code/Player/commonMain/test/Player.kt:13:29 Overload resolution ambiguity:
2022-12-14T14:06:35.072+0100 [ERROR] [system.err] internal val KClass<Player>.schema: SqlDriver.Schema defined in test.shared in file PlayerImpl.kt
2022-12-14T14:06:35.072+0100 [ERROR] [system.err] internal val KClass<Player>.schema: SqlDriver.Schema defined in test.shared in file PlayerImpl.kt
2022-12-14T14:06:35.072+0100 [ERROR] [system.err] internal val KClass<Player>.schema: SqlDriver.Schema defined in test.shared in file PlayerImpl.kt
2022-12-14T14:06:35.072+0100 [ERROR] [system.err] e: file:///Users/stefanthaler/Spikes/kmp-sqldelight/shared/build/generated/sqldelight/code/Player/commonMain/test/Player.kt:15:75 Overload resolution ambiguity:
2022-12-14T14:06:35.072+0100 [ERROR] [system.err] internal fun KClass<Player>.newInstance(driver: SqlDriver): Player defined in test.shared in file PlayerImpl.kt
2022-12-14T14:06:35.072+0100 [ERROR] [system.err] internal fun KClass<Player>.newInstance(driver: SqlDriver): Player defined in test.shared in file PlayerImpl.kt
2022-12-14T14:06:35.072+0100 [ERROR] [system.err] internal fun KClass<Player>.newInstance(driver: SqlDriver): Player defined in test.shared in file PlayerImpl.kt
2022-12-14T14:06:35.072+0100 [ERROR] [system.err] e: file:///Users/stefanthaler/Spikes/kmp-sqldelight/shared/build/generated/sqldelight/code/Player/commonMain/test/PlayerQueries.kt:5:18 Redeclaration: PlayerQueries
2022-12-14T14:06:35.073+0100 [ERROR] [system.err] e: file:///Users/stefanthaler/Spikes/kmp-sqldelight/shared/build/generated/sqldelight/code/Player/commonMain/test/shared/PlayerImpl.kt:11:29 Conflicting declarations: internal val KClass<Player>.schema: SqlDriver.Schema, internal val KClass<Player>.schema: SqlDriver.Schema, internal val KClass<Player>.schema: SqlDriver.Schema
2022-12-14T14:06:35.073+0100 [ERROR] [system.err] e: file:///Users/stefanthaler/Spikes/kmp-sqldelight/shared/build/generated/sqldelight/code/Player/commonMain/test/shared/PlayerImpl.kt:12:11 Cannot access 'PlayerImpl': it is private in file
2022-12-14T14:06:35.073+0100 [ERROR] [system.err] e: file:///Users/stefanthaler/Spikes/kmp-sqldelight/shared/build/generated/sqldelight/code/Player/commonMain/test/shared/PlayerImpl.kt:12:22 Cannot access 'PlayerImpl': it is private in file
2022-12-14T14:06:35.073+0100 [ERROR] [system.err] e: file:///Users/stefanthaler/Spikes/kmp-sqldelight/shared/build/generated/sqldelight/code/Player/commonMain/test/shared/PlayerImpl.kt:14:1 Conflicting overloads: internal fun KClass<Player>.newInstance(driver: SqlDriver): Player defined in test.shared in file PlayerImpl.kt, internal fun KClass<Player>.newInstance(driver: SqlDriver): Player defined in test.shared in file PlayerImpl.kt, internal fun KClass<Player>.newInstance(driver: SqlDriver): Player defined in test.shared in file PlayerImpl.kt
2022-12-14T14:06:35.073+0100 [ERROR] [system.err] e: file:///Users/stefanthaler/Spikes/kmp-sqldelight/shared/build/generated/sqldelight/code/Player/commonMain/test/shared/PlayerImpl.kt:14:70 Cannot access 'PlayerImpl': it is private in file
2022-12-14T14:06:35.073+0100 [ERROR] [system.err] e: file:///Users/stefanthaler/Spikes/kmp-sqldelight/shared/build/generated/sqldelight/code/Player/commonMain/test/shared/PlayerImpl.kt:16:15 Redeclaration: PlayerImpl
2022-12-14T14:06:35.073+0100 [ERROR] [system.err] e: file:///Users/stefanthaler/Spikes/kmp-sqldelight/shared/build/generated/sqldelight/code/Player/commonMain/test/shared/PlayerImpl.kt:19:38 Cannot access 'PlayerQueriesImpl': it is private in file
2022-12-14T14:06:35.073+0100 [ERROR] [system.err] e: file:///Users/stefanthaler/Spikes/kmp-sqldelight/shared/build/generated/sqldelight/code/Player/commonMain/test/shared/PlayerImpl.kt:19:58 Cannot access 'PlayerQueriesImpl': it is private in file
2022-12-14T14:06:35.073+0100 [ERROR] [system.err] e: file:///Users/stefanthaler/Spikes/kmp-sqldelight/shared/build/generated/sqldelight/code/Player/commonMain/test/shared/PlayerImpl.kt:48:15 Redeclaration: PlayerQueriesImpl
2022-12-14T14:06:35.073+0100 [ERROR] [system.err] e: file:///Users/stefanthaler/Spikes/kmp-sqldelight/shared/build/generated/sqldelight/code/Player/commonMain/test/shared/PlayerImpl.kt:49:25 Cannot access 'PlayerImpl': it is private in file
2022-12-14T14:06:35.073+0100 [DEBU
Gradle Build Script
plugins {
kotlin("multiplatform")
kotlin("native.cocoapods")
id("com.android.library")
id("com.squareup.sqldelight")
}
kotlin {
android()
iosX64()
iosArm64()
iosSimulatorArm64()
cocoapods {
summary = "Some description for the Shared Module"
homepage = "Link to the Shared Module homepage"
version = "1.0"
ios.deploymentTarget = "14.1"
framework {
baseName = "shared"
}
}
sourceSets {
val commonMain by getting
val commonTest by getting {
dependencies {
implementation(kotlin("test"))
}
}
val androidMain by getting {
dependsOn(commonMain)
dependencies {
implementation("com.squareup.sqldelight:android-driver:1.5.4")
}
}
val androidTest by getting
val iosX64Main by getting
val iosArm64Main by getting
val iosSimulatorArm64Main by getting
val iosMain by creating {
dependsOn(commonMain)
dependencies {
implementation("com.squareup.sqldelight:native-driver:1.5.4")
}
iosX64Main.dependsOn(this)
iosArm64Main.dependsOn(this)
iosSimulatorArm64Main.dependsOn(this)
}
val iosX64Test by getting
val iosArm64Test by getting
val iosSimulatorArm64Test by getting
val iosTest by creating {
dependsOn(commonTest)
iosX64Test.dependsOn(this)
iosArm64Test.dependsOn(this)
iosSimulatorArm64Test.dependsOn(this)
}
}
}
android {
namespace = "net.thalerit.kmp_sqldelight_18"
compileSdk = 33
defaultConfig {
minSdk = 24
targetSdk = 33
}
}
sqldelight {
database("Player") {
packageName = "test"
}
linkSqlite = true
}
About this issue
- Original URL
- State: closed
- Created 2 years ago
- Comments: 18
I just ran into this issue myself, and it turned out that I had forgotten to update the SqlDelight plugin version number, while updating all of the dependencies to the desired 1.5.5.
As soon as I updated the plugin version to match it, everything worked fine again. Maybe this will help someone, I found my way here through search engine.
Sorry @ln-12, I can’t give you an eta because I don’t know the schedule.
Then please add a reproducer.