Split diagnostic factory for the ease of code evolution and tooling
This commit is contained in:
@@ -625,7 +625,8 @@ public interface Errors {
|
|||||||
DiagnosticFactory1<KtExpression, KotlinType> MISSING_RECEIVER = DiagnosticFactory1.create(ERROR);
|
DiagnosticFactory1<KtExpression, KotlinType> MISSING_RECEIVER = DiagnosticFactory1.create(ERROR);
|
||||||
DiagnosticFactory0<KtExpression> NO_RECEIVER_ALLOWED = DiagnosticFactory0.create(ERROR);
|
DiagnosticFactory0<KtExpression> NO_RECEIVER_ALLOWED = DiagnosticFactory0.create(ERROR);
|
||||||
|
|
||||||
DiagnosticFactory0<KtExpression> ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM = DiagnosticFactory0.create(WARNING);
|
DiagnosticFactory0<KtExpression> ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION = DiagnosticFactory0.create(WARNING);
|
||||||
|
DiagnosticFactory0<KtExpression> ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_ANNOTATION = DiagnosticFactory0.create(WARNING);
|
||||||
|
|
||||||
// Call resolution
|
// Call resolution
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -760,7 +760,8 @@ public class DefaultErrorMessages {
|
|||||||
MAP.put(NO_VALUE_FOR_PARAMETER, "No value passed for parameter ''{0}''", NAME);
|
MAP.put(NO_VALUE_FOR_PARAMETER, "No value passed for parameter ''{0}''", NAME);
|
||||||
MAP.put(MISSING_RECEIVER, "A receiver of type {0} is required", RENDER_TYPE);
|
MAP.put(MISSING_RECEIVER, "A receiver of type {0} is required", RENDER_TYPE);
|
||||||
MAP.put(NO_RECEIVER_ALLOWED, "No receiver can be passed to this function or property");
|
MAP.put(NO_RECEIVER_ALLOWED, "No receiver can be passed to this function or property");
|
||||||
MAP.put(ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM, "Assigning single elements to varargs in named form is deprecated");
|
MAP.put(ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION, "Assigning single elements to varargs in named form is deprecated");
|
||||||
|
MAP.put(ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_ANNOTATION, "Assigning single elements to varargs in named form is deprecated");
|
||||||
|
|
||||||
MAP.put(CREATING_AN_INSTANCE_OF_ABSTRACT_CLASS, "Cannot create an instance of an abstract class");
|
MAP.put(CREATING_AN_INSTANCE_OF_ABSTRACT_CLASS, "Cannot create an instance of an abstract class");
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -64,11 +64,11 @@ class AssigningNamedArgumentToVarargChecker : CallChecker {
|
|||||||
) {
|
) {
|
||||||
if (isArrayOrArrayLiteral(argument, context)) {
|
if (isArrayOrArrayLiteral(argument, context)) {
|
||||||
if (argument.hasSpread()) {
|
if (argument.hasSpread()) {
|
||||||
context.trace.report(Errors.ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM.on(argumentExpression))
|
context.trace.report(Errors.ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_ANNOTATION.on(argumentExpression))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
context.trace.report(Errors.ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM.on(argumentExpression))
|
context.trace.report(Errors.ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_ANNOTATION.on(argumentExpression))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -78,7 +78,7 @@ class AssigningNamedArgumentToVarargChecker : CallChecker {
|
|||||||
context: ResolutionContext<*>
|
context: ResolutionContext<*>
|
||||||
) {
|
) {
|
||||||
if (!argument.hasSpread()) {
|
if (!argument.hasSpread()) {
|
||||||
context.trace.report(Errors.ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM.on(argumentExpression))
|
context.trace.report(Errors.ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION.on(argumentExpression))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+4
-4
@@ -11,16 +11,16 @@
|
|||||||
|
|
||||||
annotation class Ann(vararg val s: String)
|
annotation class Ann(vararg val s: String)
|
||||||
|
|
||||||
@Ann(s = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM!>"value"<!>)
|
@Ann(s = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_ANNOTATION!>"value"<!>)
|
||||||
fun test1() {}
|
fun test1() {}
|
||||||
|
|
||||||
@Ann(s = *<!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM!>arrayOf("value")<!>)
|
@Ann(s = *<!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_ANNOTATION!>arrayOf("value")<!>)
|
||||||
fun test2() {}
|
fun test2() {}
|
||||||
|
|
||||||
@Ann(s = *<!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM!>["value"]<!>)
|
@Ann(s = *<!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_ANNOTATION!>["value"]<!>)
|
||||||
fun test3() {}
|
fun test3() {}
|
||||||
|
|
||||||
@JavaAnn(value = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM!>"value"<!>)
|
@JavaAnn(value = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_ANNOTATION!>"value"<!>)
|
||||||
fun test4() {}
|
fun test4() {}
|
||||||
|
|
||||||
@JavaAnn("value", path = arrayOf("path"))
|
@JavaAnn("value", path = arrayOf("path"))
|
||||||
|
|||||||
Vendored
+20
-20
@@ -6,41 +6,41 @@ 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!>1<!>)
|
foo(s = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION!>1<!>)
|
||||||
foo(s = <!TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM!>i<!>)
|
foo(s = <!TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION!>i<!>)
|
||||||
foo(s = *i)
|
foo(s = *i)
|
||||||
foo(s = <!TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM!>intArrayOf(1)<!>)
|
foo(s = <!TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION!>intArrayOf(1)<!>)
|
||||||
foo(s = *intArrayOf(1))
|
foo(s = *intArrayOf(1))
|
||||||
foo(1)
|
foo(1)
|
||||||
|
|
||||||
Cls(p = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM!>1<!>)
|
Cls(p = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION!>1<!>)
|
||||||
|
|
||||||
class Sub : Cls(p = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM!>1<!>)
|
class Sub : Cls(p = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION!>1<!>)
|
||||||
|
|
||||||
val c = object : Cls(p = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM!>1<!>) {}
|
val c = object : Cls(p = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION!>1<!>) {}
|
||||||
|
|
||||||
foo(s = *intArrayOf(elements = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM!>1<!>))
|
foo(s = *intArrayOf(elements = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION!>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!>""<!>)
|
anyFoo(a = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION!>""<!>)
|
||||||
anyFoo(a = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM!>arrayOf("")<!>)
|
anyFoo(a = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION!>arrayOf("")<!>)
|
||||||
anyFoo(a = *arrayOf(""))
|
anyFoo(a = *arrayOf(""))
|
||||||
}
|
}
|
||||||
|
|
||||||
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!>1<!>)
|
genFoo<Int>(t = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION!>1<!>)
|
||||||
genFoo<Int?>(t = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM!>null<!>)
|
genFoo<Int?>(t = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION!>null<!>)
|
||||||
genFoo<Array<Int>>(t = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM!>arrayOf()<!>)
|
genFoo<Array<Int>>(t = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION!>arrayOf()<!>)
|
||||||
genFoo<Array<Int>>(t = *arrayOf(arrayOf()))
|
genFoo<Array<Int>>(t = *arrayOf(arrayOf()))
|
||||||
|
|
||||||
genFoo(t = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM!>""<!>)
|
genFoo(t = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION!>""<!>)
|
||||||
genFoo(t = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM!>arrayOf("")<!>)
|
genFoo(t = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION!>arrayOf("")<!>)
|
||||||
genFoo(t = *arrayOf(""))
|
genFoo(t = *arrayOf(""))
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -48,12 +48,12 @@ 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!>1<!>)
|
manyFoo(v = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION!>1<!>)
|
||||||
manyFoo(s = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM!>""<!>)
|
manyFoo(s = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION!>""<!>)
|
||||||
|
|
||||||
<!NONE_APPLICABLE!>manyFoo<!>(a)
|
<!NONE_APPLICABLE!>manyFoo<!>(a)
|
||||||
manyFoo(v = <!TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM!>a<!>)
|
manyFoo(v = <!TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION!>a<!>)
|
||||||
manyFoo(s = <!TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM!>a<!>)
|
manyFoo(s = <!TYPE_MISMATCH, ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION!>a<!>)
|
||||||
manyFoo(v = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM!>a as Int<!>)
|
manyFoo(v = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION!>a as Int<!>)
|
||||||
manyFoo(s = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM!>a as String<!>)
|
manyFoo(s = <!ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION!>a as String<!>)
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user