Don't check an argument type during passing it to vararg in the named form to avoid false positives if the argument type is type variable yet

^KT-41144 Fixed
This commit is contained in:
Victor Petukhov
2020-09-09 17:59:23 +03:00
parent 2c4c8cdf01
commit bcd33da6f8
14 changed files with 64 additions and 20 deletions
@@ -151,9 +151,12 @@ private fun KotlinCallArgument.isArrayAssignedAsNamedArgumentInAnnotation(
): Boolean {
if (!languageVersionSettings.supportsFeature(LanguageFeature.AssigningArraysToVarargsInNamedFormInAnnotations)) return false
if (this.argumentName == null || !parameter.isVararg) return false
val isAllowedAssigningSingleElementsToVarargsInNamedForm =
!languageVersionSettings.supportsFeature(LanguageFeature.ProhibitAssigningSingleElementsToVarargsInNamedForm)
return isParameterOfAnnotation(parameter) && this.isArrayOrArrayLiteral()
if (isAllowedAssigningSingleElementsToVarargsInNamedForm && !isArrayOrArrayLiteral()) return false
return this.argumentName != null && parameter.isVararg && isParameterOfAnnotation(parameter)
}
private fun KotlinCallArgument.isArrayAssignedAsNamedArgumentInFunction(
@@ -162,9 +165,12 @@ private fun KotlinCallArgument.isArrayAssignedAsNamedArgumentInFunction(
): Boolean {
if (!languageVersionSettings.supportsFeature(LanguageFeature.AllowAssigningArrayElementsToVarargsInNamedFormForFunctions)) return false
if (this.argumentName == null || !parameter.isVararg) return false
val isAllowedAssigningSingleElementsToVarargsInNamedForm =
!languageVersionSettings.supportsFeature(LanguageFeature.ProhibitAssigningSingleElementsToVarargsInNamedForm)
return this.isArrayOrArrayLiteral()
if (isAllowedAssigningSingleElementsToVarargsInNamedForm && !isArrayOrArrayLiteral()) return false
return this.argumentName != null && parameter.isVararg
}
fun KotlinCallArgument.isArrayOrArrayLiteral(): Boolean {