[MPP] Don't apply common parts of IDE import resolution for JVM+Android

- Don't resolve common parts of MPP libraries
- Filter out kotlin-stdlib-common

KT-56453

(cherry picked from commit 1b8c517e1eb340656bacb6edec900454b36946cb)
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImportFactory.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImportFactory.kt
index aa89279..b68657d 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImportFactory.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImportFactory.kt
@@ -67,7 +67,7 @@
 
         registerDependencyResolver(
             resolver = IdeTransformedMetadataDependencyResolver,
-            constraint = !SourceSetConstraint.isLeaf,
+            constraint = !SourceSetConstraint.isLeaf and !SourceSetConstraint.isJvmAndAndroid,
             phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
             level = IdeMultiplatformImport.DependencyResolutionLevel.Default
         )
@@ -150,7 +150,8 @@
 
         registerDependencyTransformer(
             transformer = IdePlatformStdlibCommonDependencyFilter,
-            constraint = SourceSetConstraint.isSinglePlatformType and !SourceSetConstraint.isSharedNative,
+            constraint = SourceSetConstraint.isSinglePlatformType and !SourceSetConstraint.isSharedNative
+                    or SourceSetConstraint.isJvmAndAndroid,
             phase = IdeMultiplatformImport.DependencyTransformationPhase.DependencyFilteringPhase,
         )
 
diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/dependencyResolutionTests/tcs/IdeTransformedMetadataDependencyResolverTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/dependencyResolutionTests/tcs/IdeTransformedMetadataDependencyResolverTest.kt
index 610be4a..3f01239 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/dependencyResolutionTests/tcs/IdeTransformedMetadataDependencyResolverTest.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/dependencyResolutionTests/tcs/IdeTransformedMetadataDependencyResolverTest.kt
@@ -8,14 +8,18 @@
 package org.jetbrains.kotlin.gradle.dependencyResolutionTests.tcs
 
 import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
+import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinBinaryDependency
 import org.jetbrains.kotlin.gradle.idea.testFixtures.tcs.assertMatches
 import org.jetbrains.kotlin.gradle.idea.testFixtures.tcs.binaryCoordinates
 import org.jetbrains.kotlin.gradle.dependencyResolutionTests.kpm.mavenCentralCacheRedirector
+import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
 import org.jetbrains.kotlin.gradle.plugin.ide.dependencyResolvers.IdeTransformedMetadataDependencyResolver
 import org.jetbrains.kotlin.gradle.util.buildProject
 import org.jetbrains.kotlin.gradle.util.enableDefaultStdlibDependency
 import org.jetbrains.kotlin.gradle.util.enableDependencyVerification
 import org.jetbrains.kotlin.gradle.util.applyMultiplatformPlugin
+import org.jetbrains.kotlin.gradle.plugin.ide.kotlinIdeMultiplatformImport
+import org.jetbrains.kotlin.gradle.util.*
 import org.junit.Test
 
 class IdeTransformedMetadataDependencyResolverTest {
@@ -68,4 +72,50 @@
                 binaryCoordinates("com.arkivanov.essenty:instance-keeper:0.4.2:commonMain")
             )
     }
-}
\ No newline at end of file
+
+    @Test
+    fun `test OKIO in JVM + Android project`() {
+        val project = buildProject {
+            enableDependencyVerification(false)
+            applyMultiplatformPlugin()
+            repositories.mavenLocal()
+            repositories.mavenCentralCacheRedirector()
+            repositories.google()
+            androidLibrary {
+                compileSdkVersion = "android-31"
+            }
+        }
+        val kotlin = project.multiplatformExtension
+
+        kotlin.jvm()
+        kotlin.android()
+
+        val commonMain = kotlin.sourceSets.getByName("commonMain")
+        val commonTest = kotlin.sourceSets.getByName("commonTest")
+
+        commonMain.dependencies {
+            implementation("com.squareup.okio:okio:3.2.0")
+        }
+
+        project.evaluate()
+
+        fun KotlinSourceSet.binaryDependencies() =
+            project.kotlinIdeMultiplatformImport.resolveDependencies(this).filterIsInstance<IdeaKotlinBinaryDependency>()
+
+        commonMain.binaryDependencies().assertMatches(
+            binaryCoordinates("com.squareup.okio:okio-jvm:3.2.0"),
+            binaryCoordinates("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.20"),
+            binaryCoordinates("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.20"),
+            binaryCoordinates("org.jetbrains.kotlin:kotlin-stdlib:1.6.20"),
+            binaryCoordinates("org.jetbrains:annotations:13.0"),
+        )
+
+        commonTest.binaryDependencies().assertMatches(
+            binaryCoordinates("com.squareup.okio:okio-jvm:3.2.0"),
+            binaryCoordinates("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.20"),
+            binaryCoordinates("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.20"),
+            binaryCoordinates("org.jetbrains.kotlin:kotlin-stdlib:1.6.20"),
+            binaryCoordinates("org.jetbrains:annotations:13.0"),
+        )
+    }
+}