diff --git a/idea/idea-android/src/org/jetbrains/kotlin/android/AndroidGradleOrderEnumerationHandler.kt b/idea/idea-android/src/org/jetbrains/kotlin/android/KotlinAndroidGradleOrderEnumerationHandler.kt similarity index 82% rename from idea/idea-android/src/org/jetbrains/kotlin/android/AndroidGradleOrderEnumerationHandler.kt rename to idea/idea-android/src/org/jetbrains/kotlin/android/KotlinAndroidGradleOrderEnumerationHandler.kt index ce0a4f73fb3..d97efe36318 100644 --- a/idea/idea-android/src/org/jetbrains/kotlin/android/AndroidGradleOrderEnumerationHandler.kt +++ b/idea/idea-android/src/org/jetbrains/kotlin/android/KotlinAndroidGradleOrderEnumerationHandler.kt @@ -11,13 +11,12 @@ import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil import com.intellij.openapi.module.Module import com.intellij.openapi.module.ModuleManager import com.intellij.openapi.roots.ModuleRootModel +import com.intellij.openapi.roots.OrderEnumerationHandler import com.intellij.openapi.roots.OrderRootType import com.intellij.openapi.vfs.VfsUtilCore -import org.jetbrains.kotlin.config.KotlinFacetSettingsProvider +import org.jetbrains.kotlin.idea.caches.project.isMPPModule import org.jetbrains.kotlin.idea.core.isAndroidModule import org.jetbrains.kotlin.idea.facet.KotlinFacet -import org.jetbrains.kotlin.platform.impl.isCommon -import org.jetbrains.plugins.gradle.execution.GradleOrderEnumeratorHandler import org.jetbrains.plugins.gradle.model.ExternalSourceDirectorySet import org.jetbrains.plugins.gradle.service.project.data.ExternalProjectDataCache import org.jetbrains.plugins.gradle.util.GradleConstants @@ -33,9 +32,7 @@ import java.io.File Everything works for Java-only projects because there's only a single classes directory, but Kotlin Gradle plugin adds a separate output directory, and it's not attached by default. */ -class AndroidGradleOrderEnumerationHandler(module: Module) : GradleOrderEnumeratorHandler(module) { - override fun shouldProcessDependenciesRecursively() = false - +class KotlinAndroidGradleOrderEnumerationHandler(private val module: Module) : OrderEnumerationHandler() { override fun addCustomModuleRoots( type: OrderRootType, rootModel: ModuleRootModel, @@ -85,17 +82,11 @@ class AndroidGradleOrderEnumerationHandler(module: Module) : GradleOrderEnumerat return true } - class FactoryImpl : Factory() { + class FactoryImpl : OrderEnumerationHandler.Factory() { override fun isApplicable(module: Module): Boolean { - return ExternalSystemApiUtil.isExternalSystemAwareModule(GradleConstants.SYSTEM_ID, module) - && !module.isMultiplatformModule() + return ExternalSystemApiUtil.isExternalSystemAwareModule(GradleConstants.SYSTEM_ID, module) && !module.isMPPModule } - override fun createHandler(module: Module) = AndroidGradleOrderEnumerationHandler(module) + override fun createHandler(module: Module) = KotlinAndroidGradleOrderEnumerationHandler(module) } -} - -private fun Module.isMultiplatformModule(): Boolean { - val settings = KotlinFacetSettingsProvider.getInstance(project).getInitializedSettings(this) - return settings.platform.isCommon || settings.implementedModuleNames.isNotEmpty() } \ No newline at end of file diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/gradle/execution/KotlinGradleOrderEnumerationHandler.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/gradle/execution/KotlinGradleOrderEnumerationHandler.kt new file mode 100644 index 00000000000..1a08cd01e9a --- /dev/null +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/gradle/execution/KotlinGradleOrderEnumerationHandler.kt @@ -0,0 +1,24 @@ +/* + * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.idea.gradle.execution + +import com.intellij.openapi.module.Module +import org.jetbrains.kotlin.idea.caches.project.isMPPModule +import org.jetbrains.plugins.gradle.execution.GradleOrderEnumeratorHandler + +open class KotlinGradleOrderEnumerationHandler(module: Module) : GradleOrderEnumeratorHandler(module) { + override fun shouldIncludeTestsFromDependentModulesToTestClasspath(): Boolean { + return true + } + + open class Factory : GradleOrderEnumeratorHandler.FactoryImpl() { + override fun isApplicable(module: Module): Boolean { + return module.isMPPModule + } + + override fun createHandler(module: Module) = KotlinGradleOrderEnumerationHandler(module) + } +} diff --git a/idea/src/META-INF/gradle-java.xml b/idea/src/META-INF/gradle-java.xml index 5936460b1a9..d3ad59251fc 100644 --- a/idea/src/META-INF/gradle-java.xml +++ b/idea/src/META-INF/gradle-java.xml @@ -61,8 +61,7 @@ - - + diff --git a/idea/src/META-INF/gradle-java.xml.as33 b/idea/src/META-INF/gradle-java.xml.as33 index 6a7accc698c..c617a7ac134 100644 --- a/idea/src/META-INF/gradle-java.xml.as33 +++ b/idea/src/META-INF/gradle-java.xml.as33 @@ -60,6 +60,7 @@ + diff --git a/idea/src/META-INF/gradle.xml b/idea/src/META-INF/gradle.xml index 1e7b4cc61c5..e2983b8934f 100644 --- a/idea/src/META-INF/gradle.xml +++ b/idea/src/META-INF/gradle.xml @@ -11,6 +11,10 @@ + + + + diff --git a/idea/src/META-INF/gradle.xml.181 b/idea/src/META-INF/gradle.xml.181 index 8f275e70720..7b9319b737d 100644 --- a/idea/src/META-INF/gradle.xml.181 +++ b/idea/src/META-INF/gradle.xml.181 @@ -70,7 +70,7 @@ - +