Added AllowNullableArrayArgsInMain (1.4+) language setting

This commit is contained in:
Vladimir Dolzhenko
2019-10-29 19:20:35 +01:00
parent 6ecc7eab7e
commit 26255f8501
11 changed files with 61 additions and 28 deletions
@@ -125,7 +125,9 @@ class MainFunctionDetector {
if (typeArguments.size != 1) return false
val typeArgument = typeArguments[0].type
if (!KotlinBuiltIns.isStringOrNullableString(typeArgument)) {
if (!(languageVersionSettings.supportsFeature(LanguageFeature.AllowNullableArrayArgsInMain) &&
KotlinBuiltIns.isStringOrNullableString(typeArgument) || KotlinBuiltIns.isString(typeArgument))
) {
return false
}
if (typeArguments[0].projectionKind === Variance.IN_VARIANCE) {
@@ -92,12 +92,16 @@ fun parseLanguageVersionSettings(directives: Map<String, String>): CompilerTestL
fun defaultLanguageVersionSettings(): CompilerTestLanguageVersionSettings =
CompilerTestLanguageVersionSettings(emptyMap(), ApiVersion.LATEST_STABLE, LanguageVersion.LATEST_STABLE)
fun setupLanguageVersionSettingsForMultifileCompilerTests(files: List<File>, environment: KotlinCoreEnvironment) {
fun languageVersionSettingsFromText(fileTexts: List<String>): LanguageVersionSettings {
val allDirectives = HashMap<String, String>()
for (file in files) {
allDirectives.putAll(KotlinTestUtils.parseDirectives(file.readText()))
for (fileText in fileTexts) {
allDirectives.putAll(KotlinTestUtils.parseDirectives(fileText))
}
environment.configuration.languageVersionSettings = parseLanguageVersionSettingsOrDefault(allDirectives)
return parseLanguageVersionSettingsOrDefault(allDirectives)
}
fun setupLanguageVersionSettingsForMultifileCompilerTests(files: List<File>, environment: KotlinCoreEnvironment) {
environment.configuration.languageVersionSettings = languageVersionSettingsFromText(files.map { it.readText() })
}
fun setupLanguageVersionSettingsForCompilerTests(originalFileText: String, environment: KotlinCoreEnvironment) {
@@ -110,6 +110,7 @@ enum class LanguageFeature(
MixedNamedArgumentsInTheirOwnPosition(KOTLIN_1_4),
ProhibitTailrecOnVirtualMember(KOTLIN_1_4, kind = BUG_FIX),
ProperComputationOrderOfTailrecDefaultParameters(KOTLIN_1_4),
AllowNullableArrayArgsInMain(KOTLIN_1_4),
ProperVisibilityForCompanionObjectInstanceField(sinceVersion = null, kind = BUG_FIX),
// Temporarily disabled, see KT-27084/KT-22379