Refactor "do not check impl" flag for multi-platform projects

Instead of LanguageFeature, make it an AnalysisFlag, which is more clear
This commit is contained in:
Alexander Udalov
2017-03-14 16:15:29 +03:00
parent 56201a6dc4
commit d58d75c6ef
4 changed files with 7 additions and 6 deletions
@@ -270,9 +270,6 @@ public abstract class CLICompiler<A extends CommonCompilerArguments> {
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<A extends CommonCompilerArguments> {
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);
}
@@ -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)
}
@@ -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
}
@@ -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),
;