Reputation: 627
I am doing a multiplatform project.
A part of my gradle file looks like this
...
kotlin {
jvm()
jvm("api")
js()
mingwX64("mingw")
sourceSets {
...
val jvmMain by getting {
dependencies {
implementation ("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
}
}
val jvmTest by getting {
dependencies {
implementation ("org.jetbrains.kotlin:kotlin-test")
implementation ("org.jetbrains.kotlin:kotlin-test-junit")
}
}
val apiMain by getting {
dependencies {
dependsOn(jvmMain)
}
}
val jsMain by getting {
dependencies {
implementation ("org.jetbrains.kotlin:kotlin-stdlib-js")
}
}
...
}
}
Now in the commonsMain sources I get an IDE error (red underline) that says "expected class Sample has no actual declaration in apiMain", but apiMain depends on jvmMain which has the actual declaration.
I don't think I need an actual declaration in apiMain since I already have one in jvm.
Should I take a different approach in setting-up my source sets?
Anyway the project compiles fine and I can run apiMain, but the IDE error really annoys me.
Upvotes: 8
Views: 7760
Reputation: 1060
In my case, it turns out that something in my ".idea" folder had gotten corrupted. I closed Android Studio, deleted that directory from the root of my project and then reopened the project. The .idea file was automatically re-created and my problem was gone.
I figured this out because creating a new KMM app using the wizard didn't have the same error that I was seeing with expect/actual classes.
Upvotes: 2
Reputation: 5495
They should be under the same package name.
Also check if your package name is the same as the one you get the error
expected class Sample has no actual declaration in apiMain
You need to have the package apiMain.
In my case I had
And I had to create both folders in resources
Upvotes: 3
Reputation: 3664
This is a known IDE bug. See YouTrack ticket here.
For now, you can use @Suppress("NO_ACTUAL_FOR_EXPECT")
to get rid of the warning in your IDE. I wouldn't really recommend it though, because you'll get a runtime crash instead of a compile-time error if you're missing any actual
implementations.
Upvotes: 15