diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinNonJvmGutterConfigurator.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinNonJvmGutterConfigurator.kt index 0693cc04310..8681e81e87d 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinNonJvmGutterConfigurator.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinNonJvmGutterConfigurator.kt @@ -16,42 +16,44 @@ class KotlinNonJvmGutterConfigurator : AbstractProjectResolverExtension() { //language=Gradle """ ({ - def doIfInstance = { Task task, String fqn, Closure action -> - def taskSuperClass = task.class - while (taskSuperClass != Object.class) { - if (taskSuperClass.canonicalName == fqn) { - action() - - return - } else { - taskSuperClass = taskSuperClass.superclass - } - } - } - - gradle.afterProject { project -> - // Test task should have some parameters - // Create dummy task to consume outputs by Test task - project.tasks.create("nonJvmTestIdeSupportDummy") - - // IDEA now process filter parameters only for Test tasks - project.tasks.create('nonJvmTestIdeSupport', Test) { - testClassesDirs = project.tasks["nonJvmTestIdeSupportDummy"].outputs.files - classpath = project.tasks["nonJvmTestIdeSupportDummy"].outputs.files - } - - project.afterEvaluate { - project.tasks.each { Task task -> - doIfInstance(task, "org.jetbrains.kotlin.gradle.tasks.KotlinTest") { - task.dependsOn('nonJvmTestIdeSupport') + if (GradleVersion.current() >= GradleVersion.version("4.0")) { + def doIfInstance = { Task task, String fqn, Closure action -> + def taskSuperClass = task.class + while (taskSuperClass != Object.class) { + if (taskSuperClass.canonicalName == fqn) { + action() + + return + } else { + taskSuperClass = taskSuperClass.superclass } } } - } - - gradle.taskGraph.beforeTask { Task task -> - doIfInstance(task, "org.jetbrains.kotlin.gradle.tasks.KotlinTest") { - task.filter.includePatterns = task.project.tasks['nonJvmTestIdeSupport'].filter.includePatterns + + gradle.afterProject { project -> + // Test task should have some parameters + // Create dummy task to consume outputs by Test task + project.tasks.create("nonJvmTestIdeSupportDummy") + + // IDEA now process filter parameters only for Test tasks + project.tasks.create('nonJvmTestIdeSupport', Test) { + testClassesDirs = project.tasks["nonJvmTestIdeSupportDummy"].outputs.files + classpath = project.tasks["nonJvmTestIdeSupportDummy"].outputs.files + } + + project.afterEvaluate { + project.tasks.each { Task task -> + doIfInstance(task, "org.jetbrains.kotlin.gradle.tasks.KotlinTest") { + task.dependsOn('nonJvmTestIdeSupport') + } + } + } + } + + gradle.taskGraph.beforeTask { Task task -> + doIfInstance(task, "org.jetbrains.kotlin.gradle.tasks.KotlinTest") { + task.filter.includePatterns = task.project.tasks['nonJvmTestIdeSupport'].filter.includePatterns + } } } })()