Invert LanguageFeature responsible for warning on coroutines

The problem was that LanguageVersionSettingsImpl.DEFAULT did not have
"WarnOnCoroutines" as a feature and so it was manually added to the settings,
but only in two places: in the compiler and in the IDE
This commit is contained in:
Alexander Udalov
2017-02-16 18:41:23 +03:00
parent e3dab96715
commit a9678010a8
11 changed files with 38 additions and 33 deletions
@@ -25,6 +25,7 @@ import org.jetbrains.kotlin.analyzer.common.DefaultAnalyzerFacade
import org.jetbrains.kotlin.cli.jvm.compiler.CliLightClassGenerationSupport
import org.jetbrains.kotlin.cli.jvm.compiler.JvmPackagePartProvider
import org.jetbrains.kotlin.config.LanguageVersionSettings
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
import org.jetbrains.kotlin.config.languageVersionSettings
import org.jetbrains.kotlin.container.get
import org.jetbrains.kotlin.context.ModuleContext
@@ -63,6 +64,7 @@ import org.jetbrains.kotlin.test.util.DescriptorValidator
import org.jetbrains.kotlin.test.util.RecursiveDescriptorComparator
import org.jetbrains.kotlin.test.util.RecursiveDescriptorComparator.RECURSIVE
import org.jetbrains.kotlin.test.util.RecursiveDescriptorComparator.RECURSIVE_ALL
import org.jetbrains.kotlin.utils.keysToMap
import org.junit.Assert
import java.io.File
import java.util.*
@@ -198,7 +200,7 @@ abstract class AbstractDiagnosticsTest : BaseDiagnosticsTest() {
// To be overridden by diagnostic-like tests.
}
private fun loadLanguageVersionSettings(module: List<TestFile>): LanguageVersionSettings? {
private fun loadLanguageVersionSettings(module: List<TestFile>): LanguageVersionSettings {
var result: LanguageVersionSettings? = null
for (file in module) {
val current = file.customLanguageVersionSettings
@@ -213,7 +215,11 @@ abstract class AbstractDiagnosticsTest : BaseDiagnosticsTest() {
}
}
return result
return result ?: BaseDiagnosticsTest.DiagnosticTestLanguageVersionSettings(
BaseDiagnosticsTest.DEFAULT_DIAGNOSTIC_TESTS_FEATURES.keysToMap { true },
LanguageVersionSettingsImpl.DEFAULT.apiVersion,
LanguageVersionSettingsImpl.DEFAULT.languageVersion
)
}
private fun checkDynamicCallDescriptors(expectedFile: File, testFiles: List<TestFile>) {
@@ -253,19 +259,15 @@ abstract class AbstractDiagnosticsTest : BaseDiagnosticsTest() {
moduleContext: ModuleContext,
files: List<KtFile>,
moduleTrace: BindingTrace,
languageVersionSettings: LanguageVersionSettings?,
languageVersionSettings: LanguageVersionSettings,
separateModules: Boolean
): AnalysisResult {
@Suppress("NAME_SHADOWING")
var files = files
val configuration =
if (languageVersionSettings != null)
environment.configuration.copy().apply {
this.languageVersionSettings = languageVersionSettings
}
else
environment.configuration
val configuration = environment.configuration.copy().apply {
this.languageVersionSettings = languageVersionSettings
}
// New JavaDescriptorResolver is created for each module, which is good because it emulates different Java libraries for each module,
// albeit with same class names
@@ -286,6 +286,10 @@ abstract class BaseDiagnosticsTest : KotlinMultiFileTestWithJava<TestModule, Tes
val LANGUAGE_VERSION = "LANGUAGE_VERSION"
private val LANGUAGE_PATTERN = Pattern.compile("([\\+\\-])(\\w+)\\s*")
val DEFAULT_DIAGNOSTIC_TESTS_FEATURES = listOf(
LanguageFeature.DoNotWarnOnCoroutines
)
val API_VERSION_DIRECTIVE = "API_VERSION"
val CHECK_TYPE_DIRECTIVE = "CHECK_TYPE"