From d58d75c6efb8bc86ae4e56d2cae3fabe9610766b Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Tue, 14 Mar 2017 16:15:29 +0300 Subject: [PATCH] Refactor "do not check impl" flag for multi-platform projects Instead of LanguageFeature, make it an AnalysisFlag, which is more clear --- .../cli/src/org/jetbrains/kotlin/cli/common/CLICompiler.java | 4 +--- .../kotlin/resolve/checkers/HeaderImplDeclarationChecker.kt | 3 ++- .../util/src/org/jetbrains/kotlin/config/AnalysisFlags.kt | 3 +++ .../org/jetbrains/kotlin/config/LanguageVersionSettings.kt | 3 +-- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLICompiler.java b/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLICompiler.java index a7dc7fb00fe..daaec63a969 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLICompiler.java +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLICompiler.java @@ -270,9 +270,6 @@ public abstract class CLICompiler { if (arguments.multiPlatform) { extraLanguageFeatures.put(LanguageFeature.MultiPlatformProjects, LanguageFeature.State.ENABLED); } - if (arguments.noCheckImpl) { - extraLanguageFeatures.put(LanguageFeature.MultiPlatformDoNotCheckImpl, LanguageFeature.State.ENABLED); - } LanguageFeature.State coroutinesState = chooseCoroutinesApplicabilityLevel(configuration, arguments); if (coroutinesState != null) { @@ -282,6 +279,7 @@ public abstract class CLICompiler { LanguageVersionSettingsImpl settings = new LanguageVersionSettingsImpl(languageVersion, ApiVersion.createByLanguageVersion(apiVersion), extraLanguageFeatures); settings.switchFlag(AnalysisFlags.getSkipMetadataVersionCheck(), arguments.skipMetadataVersionCheck); + settings.switchFlag(AnalysisFlags.getMultiPlatformDoNotCheckImpl(), arguments.noCheckImpl); CommonConfigurationKeysKt.setLanguageVersionSettings(configuration, settings); } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/HeaderImplDeclarationChecker.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/HeaderImplDeclarationChecker.kt index 0e7c3ebd57f..22ed91754e3 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/HeaderImplDeclarationChecker.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/HeaderImplDeclarationChecker.kt @@ -17,6 +17,7 @@ package org.jetbrains.kotlin.resolve.checkers import org.jetbrains.kotlin.builtins.KotlinBuiltIns +import org.jetbrains.kotlin.config.AnalysisFlags import org.jetbrains.kotlin.config.LanguageFeature import org.jetbrains.kotlin.config.LanguageVersionSettings import org.jetbrains.kotlin.descriptors.* @@ -57,7 +58,7 @@ class HeaderImplDeclarationChecker(val moduleToCheck: ModuleDescriptor? = null) if (descriptor !is MemberDescriptor) return - val checkImpl = !languageVersionSettings.supportsFeature(LanguageFeature.MultiPlatformDoNotCheckImpl) + val checkImpl = !languageVersionSettings.isFlagEnabled(AnalysisFlags.multiPlatformDoNotCheckImpl) if (descriptor.isHeader && declaration.hasModifier(KtTokens.HEADER_KEYWORD)) { checkHeaderDeclarationHasImplementation(declaration, descriptor, diagnosticHolder, checkImpl) } diff --git a/compiler/util/src/org/jetbrains/kotlin/config/AnalysisFlags.kt b/compiler/util/src/org/jetbrains/kotlin/config/AnalysisFlags.kt index 7394d7bd6cb..0ec790f2355 100644 --- a/compiler/util/src/org/jetbrains/kotlin/config/AnalysisFlags.kt +++ b/compiler/util/src/org/jetbrains/kotlin/config/AnalysisFlags.kt @@ -39,4 +39,7 @@ private operator fun AnalysisFlag.Companion.provideDelegate(instance: Any?, prop object AnalysisFlags { @JvmStatic val skipMetadataVersionCheck by AnalysisFlag + + @JvmStatic + val multiPlatformDoNotCheckImpl by AnalysisFlag } diff --git a/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt b/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt index 37e8d6efd6f..5423b06fde0 100644 --- a/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt +++ b/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt @@ -52,8 +52,7 @@ enum class LanguageFeature( Coroutines(KOTLIN_1_1, ApiVersion.KOTLIN_1_1, "https://kotlinlang.org/docs/diagnostics/experimental-coroutines", State.ENABLED_WITH_WARNING), - MultiPlatformProjects(null, defaultState = State.DISABLED), - MultiPlatformDoNotCheckImpl(null, defaultState = State.DISABLED), + MultiPlatformProjects(sinceVersion = null, defaultState = State.DISABLED), ;