Workaround for generalized configuration classes in 191

This commit is contained in:
Nikolay Krasko
2018-10-17 18:59:32 +03:00
parent 8d48f9d719
commit e86b1f2761
6 changed files with 54 additions and 5 deletions
+2
View File
@@ -109,6 +109,8 @@
<Problem reference="com.intellij.notification.NotificationAction#create" reason="Absent in 173." />
<Problem reference="com.intellij.util.JdomKt#element" reason="Removed in 191" />
<Problem reference="com.intellij.execution.JavaRunConfigurationExtensionManager#getInstance" reason="Can't be used in Kotlin, because method was replaced with property after J2K in 191. Use JavaRunConfigurationExtensionManagerUtil instead." />
<Problem reference="com.intellij.execution.configurations.RunConfigurationBase" reason="Generalized in 191. Use RunConfigurationBaseAny instead in signatures." />
<Problem reference="com.intellij.execution.configurations.ModuleBasedConfiguration" reason="Generalized in 191. Use ModuleBasedConfigurationElement instead." />
</list>
</option>
</inspection_tool>
@@ -20,7 +20,6 @@ import com.intellij.coverage.CoverageSuitesBundle
import com.intellij.coverage.JavaCoverageAnnotator
import com.intellij.coverage.JavaCoverageEngineExtension
import com.intellij.coverage.PackageAnnotator
import com.intellij.execution.configurations.RunConfigurationBase
import com.intellij.openapi.diagnostic.Logger
import com.intellij.openapi.module.ModuleUtilCore
import com.intellij.openapi.roots.CompilerModuleExtension
@@ -35,13 +34,14 @@ import com.intellij.psi.PsiNamedElement
import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil
import org.jetbrains.kotlin.idea.core.isInTestSourceContentKotlinAware
import org.jetbrains.kotlin.idea.run.KotlinRunConfiguration
import org.jetbrains.kotlin.idea.run.RunConfigurationBaseAny
import org.jetbrains.kotlin.idea.util.application.runReadAction
import org.jetbrains.kotlin.psi.KtClassOrObject
import org.jetbrains.kotlin.psi.KtFile
import java.io.File
class KotlinCoverageExtension : JavaCoverageEngineExtension() {
override fun isApplicableTo(conf: RunConfigurationBase?): Boolean = conf is KotlinRunConfiguration
override fun isApplicableTo(conf: RunConfigurationBaseAny?): Boolean = conf is KotlinRunConfiguration
override fun suggestQualifiedName(sourceFile: PsiFile, classes: Array<out PsiClass>, names: MutableSet<String>): Boolean {
if (sourceFile is KtFile) {
@@ -20,7 +20,6 @@ import com.intellij.execution.CommonJavaRunConfigurationParameters
import com.intellij.execution.ExternalizablePath
import com.intellij.execution.configurations.ConfigurationFactory
import com.intellij.execution.configurations.JavaRunConfigurationModule
import com.intellij.execution.configurations.ModuleBasedConfiguration
import com.intellij.execution.configurations.RefactoringListenerProvider
@Suppress("PropertyName", "MemberVisibilityCanBePrivate")
@@ -30,7 +29,7 @@ abstract class JetRunConfiguration(
runConfigurationModule: JavaRunConfigurationModule,
factory: ConfigurationFactory
) :
ModuleBasedConfiguration<JavaRunConfigurationModule>(name, runConfigurationModule, factory),
ModuleBasedConfigurationElement<JavaRunConfigurationModule>(name, runConfigurationModule, factory),
CommonJavaRunConfigurationParameters,
RefactoringListenerProvider {
@@ -59,7 +59,7 @@ class KotlinJUnitRunConfigurationProducer : RunConfigurationProducer<JUnitConfig
if (vmParameters != null && configuration.vmParameters != vmParameters) return false
val template = RunManager.getInstance(configuration.project).getConfigurationTemplate(configurationFactory)
val predefinedModule = (template.configuration as ModuleBasedConfiguration<*>).configurationModule.module
val predefinedModule = (template.configuration as ModuleBasedConfigurationAny).configurationModule.module
val configurationModule = configuration.configurationModule.module
return configurationModule == context.location?.module?.asJvmModule() || configurationModule == predefinedModule
}
@@ -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.
*/
@file:Suppress("IncompatibleAPI")
package org.jetbrains.kotlin.idea.run
import com.intellij.execution.configurations.ModuleBasedConfiguration
import com.intellij.execution.configurations.RunConfigurationBase
import org.jdom.Element
// Generalized in 191
// BUNCH: 191
typealias RunConfigurationBaseAny = RunConfigurationBase
// Generalized in 191
// BUNCH: 191
typealias ModuleBasedConfigurationAny = ModuleBasedConfiguration<*>
// Generalized in 191
// BUNCH: 191
typealias ModuleBasedConfigurationElement<T> = ModuleBasedConfiguration<T>
@@ -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.
*/
@file:Suppress("IncompatibleAPI")
package org.jetbrains.kotlin.idea.run
import com.intellij.execution.configurations.ModuleBasedConfiguration
import com.intellij.execution.configurations.RunConfigurationBase
import org.jdom.Element
// Generalized in 191
// BUNCH: 191
typealias RunConfigurationBaseAny = RunConfigurationBase<*>
// Generalized in 191
// BUNCH: 191
typealias ModuleBasedConfigurationAny = ModuleBasedConfiguration<*, *>
// Generalized in 191
// BUNCH: 191
typealias ModuleBasedConfigurationElement<T> = ModuleBasedConfiguration<T, Element>