FIR checker: report type mismatch for named vararg arguement
ProhibitAssigningSingleElementsToVarargsInNamedForm is enabled from 1.3 so there is no need to make FIR accepting single element passed through named arguments. In addition, we may want to report only ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION and not arg type mismatch. But FE1.0 is reporting both so I am following it. If we want to remove the redundant report, we will probably want to remove FirNamedVarargChecker and report during resolution as a cone diagnostic.
This commit is contained in:
committed by
teamcityserver
parent
3708290ca3
commit
e95de0a778
@@ -12,7 +12,7 @@ fun test() {
|
|||||||
|
|
||||||
bar(1, z = true, y = *arrayOf("my", "yours"))
|
bar(1, z = true, y = *arrayOf("my", "yours"))
|
||||||
|
|
||||||
bar(0, z = false, y = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>""<!>, <!ARGUMENT_PASSED_TWICE!>y<!> = "other")
|
bar(0, z = false, y = <!ARGUMENT_TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>""<!>, <!ARGUMENT_PASSED_TWICE!>y<!> = "other")
|
||||||
bar(0, "", true<!NO_VALUE_FOR_PARAMETER!>)<!>
|
bar(0, "", true<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||||
bar(0, z = false, y = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>""<!>, <!ARGUMENT_PASSED_TWICE!>y<!> = "other", <!ARGUMENT_PASSED_TWICE!>y<!> = "yet other")
|
bar(0, z = false, y = <!ARGUMENT_TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>""<!>, <!ARGUMENT_PASSED_TWICE!>y<!> = "other", <!ARGUMENT_PASSED_TWICE!>y<!> = "yet other")
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.fir.references.FirSuperReference
|
|||||||
import org.jetbrains.kotlin.fir.references.builder.buildResolvedNamedReference
|
import org.jetbrains.kotlin.fir.references.builder.buildResolvedNamedReference
|
||||||
import org.jetbrains.kotlin.fir.references.impl.FirReferencePlaceholderForResolvedAnnotations
|
import org.jetbrains.kotlin.fir.references.impl.FirReferencePlaceholderForResolvedAnnotations
|
||||||
import org.jetbrains.kotlin.fir.resolve.FirSamResolverImpl
|
import org.jetbrains.kotlin.fir.resolve.FirSamResolverImpl
|
||||||
import org.jetbrains.kotlin.fir.resolve.calls.getExpectedTypeForSAMConversion
|
import org.jetbrains.kotlin.fir.resolve.calls.getExpectedType
|
||||||
import org.jetbrains.kotlin.fir.resolve.calls.isFunctional
|
import org.jetbrains.kotlin.fir.resolve.calls.isFunctional
|
||||||
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
||||||
import org.jetbrains.kotlin.fir.resolve.inference.inferenceComponents
|
import org.jetbrains.kotlin.fir.resolve.inference.inferenceComponents
|
||||||
@@ -729,7 +729,7 @@ class CallAndReferenceGenerator(
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
// If the expected type is a built-in functional type, we don't need SAM conversion.
|
// If the expected type is a built-in functional type, we don't need SAM conversion.
|
||||||
val expectedType = argument.getExpectedTypeForSAMConversion(parameter)
|
val expectedType = argument.getExpectedType(parameter)
|
||||||
if (expectedType is ConeTypeParameterType || expectedType.isBuiltinFunctionalType(session)) {
|
if (expectedType is ConeTypeParameterType || expectedType.isBuiltinFunctionalType(session)) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -463,7 +463,7 @@ private fun Candidate.prepareExpectedType(
|
|||||||
context: ResolutionContext
|
context: ResolutionContext
|
||||||
): ConeKotlinType? {
|
): ConeKotlinType? {
|
||||||
if (parameter == null) return null
|
if (parameter == null) return null
|
||||||
val basicExpectedType = argument.getExpectedTypeForSAMConversion(parameter/*, LanguageVersionSettings*/)
|
val basicExpectedType = argument.getExpectedType(parameter/*, LanguageVersionSettings*/)
|
||||||
|
|
||||||
val expectedType =
|
val expectedType =
|
||||||
getExpectedTypeWithSAMConversion(session, scopeSession, argument, basicExpectedType, context)?.also {
|
getExpectedTypeWithSAMConversion(session, scopeSession, argument, basicExpectedType, context)?.also {
|
||||||
@@ -570,16 +570,15 @@ fun FirExpression.isFunctional(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun FirExpression.getExpectedTypeForSAMConversion(
|
fun FirExpression.getExpectedType(
|
||||||
parameter: FirValueParameter/*, languageVersionSettings: LanguageVersionSettings*/
|
parameter: FirValueParameter/*, languageVersionSettings: LanguageVersionSettings*/
|
||||||
): ConeKotlinType {
|
): ConeKotlinType {
|
||||||
val shouldUnwrapVarargType = when (this) {
|
val shouldUnwrapVarargType = when (this) {
|
||||||
is FirSpreadArgumentExpression -> !isSpread
|
is FirSpreadArgumentExpression, is FirNamedArgumentExpression -> false
|
||||||
is FirNamedArgumentExpression -> expression is FirConstExpression<*>
|
else -> parameter.isVararg
|
||||||
else -> true
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return if (parameter.isVararg && shouldUnwrapVarargType) {
|
return if (shouldUnwrapVarargType) {
|
||||||
parameter.returnTypeRef.coneType.varargElementType()
|
parameter.returnTypeRef.coneType.varargElementType()
|
||||||
} else {
|
} else {
|
||||||
parameter.returnTypeRef.coneType
|
parameter.returnTypeRef.coneType
|
||||||
|
|||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND_FIR: JVM_IR
|
||||||
// !LANGUAGE: -ProhibitAssigningSingleElementsToVarargsInNamedForm
|
// !LANGUAGE: -ProhibitAssigningSingleElementsToVarargsInNamedForm
|
||||||
// TARGET_BACKEND: JVM
|
// TARGET_BACKEND: JVM
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND_FIR: JVM_IR
|
||||||
// !LANGUAGE: -ProhibitAssigningSingleElementsToVarargsInNamedForm -AllowAssigningArrayElementsToVarargsInNamedFormForFunctions
|
// !LANGUAGE: -ProhibitAssigningSingleElementsToVarargsInNamedForm -AllowAssigningArrayElementsToVarargsInNamedFormForFunctions
|
||||||
|
|
||||||
fun box(): String {
|
fun box(): String {
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ fun main() {
|
|||||||
join(1, "2", "3")
|
join(1, "2", "3")
|
||||||
join(<!NON_VARARG_SPREAD!>*<!>1, "2")
|
join(<!NON_VARARG_SPREAD!>*<!>1, "2")
|
||||||
join(1, *<!ARGUMENT_TYPE_MISMATCH!>"2"<!>)
|
join(1, *<!ARGUMENT_TYPE_MISMATCH!>"2"<!>)
|
||||||
join(x = 1, a = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>"2"<!>)
|
join(x = 1, a = <!ARGUMENT_TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>"2"<!>)
|
||||||
join(x = <!NON_VARARG_SPREAD!>*<!>1, a = *"2")
|
join(x = <!NON_VARARG_SPREAD!>*<!>1, a = *<!ARGUMENT_TYPE_MISMATCH!>"2"<!>)
|
||||||
join(x = 1, a = a)
|
join(x = 1, a = a)
|
||||||
join(x = 1, a = <!ARGUMENT_TYPE_MISMATCH!>b<!>)
|
join(x = 1, a = <!ARGUMENT_TYPE_MISMATCH!>b<!>)
|
||||||
join(1, *a)
|
join(1, *a)
|
||||||
@@ -32,8 +32,8 @@ fun main() {
|
|||||||
joinG<String>(<!NON_VARARG_SPREAD!>*<!>1, "2")
|
joinG<String>(<!NON_VARARG_SPREAD!>*<!>1, "2")
|
||||||
joinG<String>(1, *<!ARGUMENT_TYPE_MISMATCH!>"2"<!>)
|
joinG<String>(1, *<!ARGUMENT_TYPE_MISMATCH!>"2"<!>)
|
||||||
joinG<String>(x = 1, a = a)
|
joinG<String>(x = 1, a = a)
|
||||||
joinG<String>(x = 1, a = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>"2"<!>)
|
joinG<String>(x = 1, a = <!ARGUMENT_TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>"2"<!>)
|
||||||
joinG<String>(x = <!NON_VARARG_SPREAD!>*<!>1, a = *"2")
|
joinG<String>(x = <!NON_VARARG_SPREAD!>*<!>1, a = *<!ARGUMENT_TYPE_MISMATCH!>"2"<!>)
|
||||||
joinG<String>(1, *a)
|
joinG<String>(1, *a)
|
||||||
joinG<String>(1, *a, "3")
|
joinG<String>(1, *a, "3")
|
||||||
joinG<String>(1, "4", *a, "3")
|
joinG<String>(1, "4", *a, "3")
|
||||||
@@ -45,8 +45,8 @@ fun main() {
|
|||||||
joinG(<!NON_VARARG_SPREAD!>*<!>1, "2")
|
joinG(<!NON_VARARG_SPREAD!>*<!>1, "2")
|
||||||
joinG(1, *<!ARGUMENT_TYPE_MISMATCH!>"2"<!>)
|
joinG(1, *<!ARGUMENT_TYPE_MISMATCH!>"2"<!>)
|
||||||
joinG(x = 1, a = a)
|
joinG(x = 1, a = a)
|
||||||
joinG(x = 1, a = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>"2"<!>)
|
joinG(x = 1, a = <!ARGUMENT_TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>"2"<!>)
|
||||||
joinG(x = <!NON_VARARG_SPREAD!>*<!>1, a = *"2")
|
joinG(x = <!NON_VARARG_SPREAD!>*<!>1, a = *<!ARGUMENT_TYPE_MISMATCH!>"2"<!>)
|
||||||
joinG(1, *a)
|
joinG(1, *a)
|
||||||
joinG(1, *a, "3")
|
joinG(1, *a, "3")
|
||||||
joinG(1, "4", *a, "3")
|
joinG(1, "4", *a, "3")
|
||||||
|
|||||||
Vendored
+1
-1
@@ -8,6 +8,6 @@ fun overloadedFun(arg: String, vararg args: String) = X1
|
|||||||
fun overloadedFun(arg: String, vararg args: String, flag: Boolean = true) = X2
|
fun overloadedFun(arg: String, vararg args: String, flag: Boolean = true) = X2
|
||||||
|
|
||||||
val test1a: X1 = overloadedFun("", "")
|
val test1a: X1 = overloadedFun("", "")
|
||||||
val test1b: X1 = overloadedFun("", args = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>""<!>)
|
val test1b: X1 = <!NONE_APPLICABLE!>overloadedFun<!>("", args = "")
|
||||||
val test1c: X2 = overloadedFun("", "", "", flag = true)
|
val test1c: X2 = overloadedFun("", "", "", flag = true)
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -9,5 +9,5 @@ fun overloadedFun5(s: String, vararg ss: String) = X2
|
|||||||
|
|
||||||
val test1 = overloadedFun5("")
|
val test1 = overloadedFun5("")
|
||||||
val test2 = overloadedFun5("", "")
|
val test2 = overloadedFun5("", "")
|
||||||
val test3: X2 = overloadedFun5(s = "", ss = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>""<!>)
|
val test3: X2 = overloadedFun5(s = "", ss = <!ARGUMENT_TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>""<!>)
|
||||||
val test4: X1 = overloadedFun5(ss = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>""<!>)
|
val test4: X1 = overloadedFun5(ss = <!ARGUMENT_TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>""<!>)
|
||||||
|
|||||||
+1
-1
@@ -30,6 +30,6 @@ fun test_ann(s: String, arr: Array<String>) {
|
|||||||
|
|
||||||
@Ann("", x = 1)
|
@Ann("", x = 1)
|
||||||
foo()
|
foo()
|
||||||
@Ann(s = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_ANNOTATION_ERROR!>""<!>, x = 1)
|
@Ann(s = <!ARGUMENT_TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_ANNOTATION_ERROR!>""<!>, x = 1)
|
||||||
foo()
|
foo()
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -30,6 +30,6 @@ fun test_ann(s: String, arr: Array<String>) {
|
|||||||
|
|
||||||
@Ann("", x = 1)
|
@Ann("", x = 1)
|
||||||
foo()
|
foo()
|
||||||
@Ann(s = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_ANNOTATION_ERROR!>""<!>, x = 1)
|
@Ann(s = <!ARGUMENT_TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_ANNOTATION_ERROR!>""<!>, x = 1)
|
||||||
foo()
|
foo()
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
annotation class Ann(vararg val s: String)
|
annotation class Ann(vararg val s: String)
|
||||||
|
|
||||||
@Ann(s = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_ANNOTATION_ERROR!>"value"<!>)
|
@Ann(s = <!ARGUMENT_TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_ANNOTATION_ERROR!>"value"<!>)
|
||||||
fun test1() {}
|
fun test1() {}
|
||||||
|
|
||||||
@Ann(s = *arrayOf("value"))
|
@Ann(s = *arrayOf("value"))
|
||||||
@@ -20,7 +20,7 @@ fun test2() {}
|
|||||||
@Ann(s = *["value"])
|
@Ann(s = *["value"])
|
||||||
fun test3() {}
|
fun test3() {}
|
||||||
|
|
||||||
@JavaAnn(value = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_ANNOTATION_ERROR!>"value"<!>)
|
@JavaAnn(value = <!ARGUMENT_TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_ANNOTATION_ERROR!>"value"<!>)
|
||||||
fun test4() {}
|
fun test4() {}
|
||||||
|
|
||||||
@JavaAnn("value", path = arrayOf("path"))
|
@JavaAnn("value", path = arrayOf("path"))
|
||||||
|
|||||||
+2
-2
@@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
annotation class Ann(vararg val s: String)
|
annotation class Ann(vararg val s: String)
|
||||||
|
|
||||||
@Ann(s = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_ANNOTATION_WARNING!>"value"<!>)
|
@Ann(s = <!ARGUMENT_TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_ANNOTATION_WARNING!>"value"<!>)
|
||||||
fun test1() {}
|
fun test1() {}
|
||||||
|
|
||||||
@Ann(s = *arrayOf("value"))
|
@Ann(s = *arrayOf("value"))
|
||||||
@@ -20,7 +20,7 @@ fun test2() {}
|
|||||||
@Ann(s = *["value"])
|
@Ann(s = *["value"])
|
||||||
fun test3() {}
|
fun test3() {}
|
||||||
|
|
||||||
@JavaAnn(value = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_ANNOTATION_WARNING!>"value"<!>)
|
@JavaAnn(value = <!ARGUMENT_TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_ANNOTATION_WARNING!>"value"<!>)
|
||||||
fun test4() {}
|
fun test4() {}
|
||||||
|
|
||||||
@JavaAnn("value", path = arrayOf("path"))
|
@JavaAnn("value", path = arrayOf("path"))
|
||||||
|
|||||||
+11
-11
@@ -6,27 +6,27 @@ fun foo(vararg s: Int) {}
|
|||||||
open class Cls(vararg p: Long)
|
open class Cls(vararg p: Long)
|
||||||
|
|
||||||
fun test(i: IntArray) {
|
fun test(i: IntArray) {
|
||||||
foo(s = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>1<!>)
|
foo(s = <!ARGUMENT_TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>1<!>)
|
||||||
foo(s = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>i<!>)
|
foo(s = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>i<!>)
|
||||||
foo(s = *i)
|
foo(s = *i)
|
||||||
foo(s = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>intArrayOf(1)<!>)
|
foo(s = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>intArrayOf(1)<!>)
|
||||||
foo(s = *intArrayOf(1))
|
foo(s = *intArrayOf(1))
|
||||||
foo(1)
|
foo(1)
|
||||||
|
|
||||||
Cls(p = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>1<!>)
|
Cls(p = <!ARGUMENT_TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>1<!>)
|
||||||
|
|
||||||
class Sub : Cls(p = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>1<!>)
|
class Sub : Cls(p = <!ARGUMENT_TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>1<!>)
|
||||||
|
|
||||||
val c = object : Cls(p = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>1<!>) {}
|
val c = object : Cls(p = <!ARGUMENT_TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>1<!>) {}
|
||||||
|
|
||||||
foo(s = *intArrayOf(elements = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>1<!>))
|
foo(s = *intArrayOf(elements = <!ARGUMENT_TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>1<!>))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fun anyFoo(vararg a: Any) {}
|
fun anyFoo(vararg a: Any) {}
|
||||||
|
|
||||||
fun testAny() {
|
fun testAny() {
|
||||||
anyFoo(a = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>""<!>)
|
anyFoo(a = <!ARGUMENT_TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>""<!>)
|
||||||
anyFoo(a = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>arrayOf("")<!>)
|
anyFoo(a = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>arrayOf("")<!>)
|
||||||
anyFoo(a = *arrayOf(""))
|
anyFoo(a = *arrayOf(""))
|
||||||
}
|
}
|
||||||
@@ -34,12 +34,12 @@ fun testAny() {
|
|||||||
fun <T> genFoo(vararg t: T) {}
|
fun <T> genFoo(vararg t: T) {}
|
||||||
|
|
||||||
fun testGen() {
|
fun testGen() {
|
||||||
genFoo<Int>(t = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>1<!>)
|
genFoo<Int>(t = <!ARGUMENT_TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>1<!>)
|
||||||
genFoo<Int?>(t = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>null<!>)
|
genFoo<Int?>(t = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR, NULL_FOR_NONNULL_TYPE!>null<!>)
|
||||||
genFoo<Array<Int>>(t = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>arrayOf()<!>)
|
genFoo<Array<Int>>(t = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>arrayOf()<!>)
|
||||||
genFoo<Array<Int>>(t = *arrayOf(arrayOf()))
|
genFoo<Array<Int>>(t = *arrayOf(arrayOf()))
|
||||||
|
|
||||||
genFoo(t = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>""<!>)
|
genFoo(t = <!ARGUMENT_TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>""<!>)
|
||||||
genFoo(t = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>arrayOf("")<!>)
|
genFoo(t = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>arrayOf("")<!>)
|
||||||
genFoo(t = *arrayOf(""))
|
genFoo(t = *arrayOf(""))
|
||||||
}
|
}
|
||||||
@@ -48,8 +48,8 @@ fun manyFoo(vararg v: Int) {}
|
|||||||
fun manyFoo(vararg s: String) {}
|
fun manyFoo(vararg s: String) {}
|
||||||
|
|
||||||
fun testMany(a: Any) {
|
fun testMany(a: Any) {
|
||||||
manyFoo(v = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>1<!>)
|
manyFoo(v = <!ARGUMENT_TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>1<!>)
|
||||||
manyFoo(s = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>""<!>)
|
manyFoo(s = <!ARGUMENT_TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>""<!>)
|
||||||
|
|
||||||
<!NONE_APPLICABLE!>manyFoo<!>(a)
|
<!NONE_APPLICABLE!>manyFoo<!>(a)
|
||||||
manyFoo(v = <!ARGUMENT_TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>a<!>)
|
manyFoo(v = <!ARGUMENT_TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>a<!>)
|
||||||
|
|||||||
+11
-11
@@ -6,27 +6,27 @@ fun foo(vararg s: Int) {}
|
|||||||
open class Cls(vararg p: Long)
|
open class Cls(vararg p: Long)
|
||||||
|
|
||||||
fun test(i: IntArray) {
|
fun test(i: IntArray) {
|
||||||
foo(s = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_WARNING!>1<!>)
|
foo(s = <!ARGUMENT_TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_WARNING!>1<!>)
|
||||||
foo(s = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_WARNING!>i<!>)
|
foo(s = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_WARNING!>i<!>)
|
||||||
foo(s = *i)
|
foo(s = *i)
|
||||||
foo(s = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_WARNING!>intArrayOf(1)<!>)
|
foo(s = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_WARNING!>intArrayOf(1)<!>)
|
||||||
foo(s = *intArrayOf(1))
|
foo(s = *intArrayOf(1))
|
||||||
foo(1)
|
foo(1)
|
||||||
|
|
||||||
Cls(p = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_WARNING!>1<!>)
|
Cls(p = <!ARGUMENT_TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_WARNING!>1<!>)
|
||||||
|
|
||||||
class Sub : Cls(p = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_WARNING!>1<!>)
|
class Sub : Cls(p = <!ARGUMENT_TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_WARNING!>1<!>)
|
||||||
|
|
||||||
val c = object : Cls(p = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_WARNING!>1<!>) {}
|
val c = object : Cls(p = <!ARGUMENT_TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_WARNING!>1<!>) {}
|
||||||
|
|
||||||
foo(s = *intArrayOf(elements = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_WARNING!>1<!>))
|
foo(s = *intArrayOf(elements = <!ARGUMENT_TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_WARNING!>1<!>))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fun anyFoo(vararg a: Any) {}
|
fun anyFoo(vararg a: Any) {}
|
||||||
|
|
||||||
fun testAny() {
|
fun testAny() {
|
||||||
anyFoo(a = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_WARNING!>""<!>)
|
anyFoo(a = <!ARGUMENT_TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_WARNING!>""<!>)
|
||||||
anyFoo(a = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_WARNING!>arrayOf("")<!>)
|
anyFoo(a = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_WARNING!>arrayOf("")<!>)
|
||||||
anyFoo(a = *arrayOf(""))
|
anyFoo(a = *arrayOf(""))
|
||||||
}
|
}
|
||||||
@@ -34,12 +34,12 @@ fun testAny() {
|
|||||||
fun <T> genFoo(vararg t: T) {}
|
fun <T> genFoo(vararg t: T) {}
|
||||||
|
|
||||||
fun testGen() {
|
fun testGen() {
|
||||||
genFoo<Int>(t = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_WARNING!>1<!>)
|
genFoo<Int>(t = <!ARGUMENT_TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_WARNING!>1<!>)
|
||||||
genFoo<Int?>(t = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_WARNING!>null<!>)
|
genFoo<Int?>(t = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_WARNING, NULL_FOR_NONNULL_TYPE!>null<!>)
|
||||||
genFoo<Array<Int>>(t = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_WARNING!>arrayOf()<!>)
|
genFoo<Array<Int>>(t = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_WARNING!>arrayOf()<!>)
|
||||||
genFoo<Array<Int>>(t = *arrayOf(arrayOf()))
|
genFoo<Array<Int>>(t = *arrayOf(arrayOf()))
|
||||||
|
|
||||||
genFoo(t = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_WARNING!>""<!>)
|
genFoo(t = <!ARGUMENT_TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_WARNING!>""<!>)
|
||||||
genFoo(t = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_WARNING!>arrayOf("")<!>)
|
genFoo(t = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_WARNING!>arrayOf("")<!>)
|
||||||
genFoo(t = *arrayOf(""))
|
genFoo(t = *arrayOf(""))
|
||||||
}
|
}
|
||||||
@@ -48,8 +48,8 @@ fun manyFoo(vararg v: Int) {}
|
|||||||
fun manyFoo(vararg s: String) {}
|
fun manyFoo(vararg s: String) {}
|
||||||
|
|
||||||
fun testMany(a: Any) {
|
fun testMany(a: Any) {
|
||||||
manyFoo(v = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_WARNING!>1<!>)
|
manyFoo(v = <!ARGUMENT_TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_WARNING!>1<!>)
|
||||||
manyFoo(s = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_WARNING!>""<!>)
|
manyFoo(s = <!ARGUMENT_TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_WARNING!>""<!>)
|
||||||
|
|
||||||
<!NONE_APPLICABLE!>manyFoo<!>(a)
|
<!NONE_APPLICABLE!>manyFoo<!>(a)
|
||||||
manyFoo(v = <!ARGUMENT_TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_WARNING!>a<!>)
|
manyFoo(v = <!ARGUMENT_TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_WARNING!>a<!>)
|
||||||
|
|||||||
+2
-2
@@ -42,7 +42,7 @@ fun foo2() {}
|
|||||||
|
|
||||||
fun foo(vararg i: Int) {}
|
fun foo(vararg i: Int) {}
|
||||||
|
|
||||||
@Ann(s = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_ANNOTATION_ERROR!>"value"<!>)
|
@Ann(s = <!ARGUMENT_TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_ANNOTATION_ERROR!>"value"<!>)
|
||||||
fun dep1() {
|
fun dep1() {
|
||||||
foo(i = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>1<!>)
|
foo(i = <!ARGUMENT_TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>1<!>)
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
+3
-3
@@ -4,7 +4,7 @@
|
|||||||
annotation class Anno1(vararg val s: String)
|
annotation class Anno1(vararg val s: String)
|
||||||
annotation class Anno2(vararg val i: Int)
|
annotation class Anno2(vararg val i: Int)
|
||||||
|
|
||||||
@Anno1(s = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_ANNOTATION_ERROR!>"foo"<!>)
|
@Anno1(s = <!ARGUMENT_TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_ANNOTATION_ERROR!>"foo"<!>)
|
||||||
@Anno2(i = *intArrayOf(1))
|
@Anno2(i = *intArrayOf(1))
|
||||||
fun f1() {}
|
fun f1() {}
|
||||||
|
|
||||||
@@ -12,13 +12,13 @@ fun f1() {}
|
|||||||
@Anno2(i = intArrayOf(1))
|
@Anno2(i = intArrayOf(1))
|
||||||
fun f2() {}
|
fun f2() {}
|
||||||
|
|
||||||
@Anno1(s = arrayOf(elements = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>"foo"<!>))
|
@Anno1(s = arrayOf(elements = <!ARGUMENT_TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>"foo"<!>))
|
||||||
@Anno2(i = intArrayOf(elements = *intArrayOf(1)))
|
@Anno2(i = intArrayOf(elements = *intArrayOf(1)))
|
||||||
fun f3() {}
|
fun f3() {}
|
||||||
|
|
||||||
fun foo(vararg ints: Int) {}
|
fun foo(vararg ints: Int) {}
|
||||||
|
|
||||||
fun test() {
|
fun test() {
|
||||||
foo(ints = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>1<!>)
|
foo(ints = <!ARGUMENT_TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION_ERROR!>1<!>)
|
||||||
foo(ints = *intArrayOf(1))
|
foo(ints = *intArrayOf(1))
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user