[FIR] Implement checker for value parameter default value type mismatch

#KT-58901 Fixed
This commit is contained in:
Kirill Rakhman
2023-06-22 13:33:09 +02:00
committed by Space Team
parent cfc824f9f2
commit 028921ade1
19 changed files with 152 additions and 37 deletions
@@ -65,4 +65,4 @@ fun case_10(x: Int?) {
}
// TESTCASE NUMBER: 11
fun case_11(x: Int?, y: Int = x) = null
fun case_11(x: Int?, y: Int = <!INITIALIZER_TYPE_MISMATCH!>x<!>) = null
@@ -11,29 +11,29 @@
*/
// TESTCASE NUMBER: 1
fun case_1(x: Int = null) {
fun case_1(x: Int = <!NULL_FOR_NONNULL_TYPE!>null<!>) {
println(x)
}
// TESTCASE NUMBER: 2
fun case_2(x: Any = null) {
fun case_2(x: Any = <!NULL_FOR_NONNULL_TYPE!>null<!>) {
println(x)
}
// TESTCASE NUMBER: 3
fun case_3(x: Nothing = null) {
fun case_3(x: Nothing = <!NULL_FOR_NONNULL_TYPE!>null<!>) {
<!OVERLOAD_RESOLUTION_AMBIGUITY!>println<!>(x)
}
// TESTCASE NUMBER: 4
class Case4(x: Int = null)
class Case4(x: Int = <!NULL_FOR_NONNULL_TYPE!>null<!>)
// TESTCASE NUMBER: 5
class Case5 constructor(x: Any = null)
class Case5 constructor(x: Any = <!NULL_FOR_NONNULL_TYPE!>null<!>)
// TESTCASE NUMBER: 6
class Case6 {
fun foo(x: Nothing = null) {}
fun foo(x: Nothing = <!NULL_FOR_NONNULL_TYPE!>null<!>) {}
}
// TESTCASE NUMBER: 7
@@ -11,28 +11,28 @@
*/
// TESTCASE NUMBER: 1
fun <T: Any> case_1(x: T = null) {
fun <T: Any> case_1(x: T = <!NULL_FOR_NONNULL_TYPE!>null<!>) {
println(x)
}
// TESTCASE NUMBER: 2
fun <T: K, K: Number> case_2(x: T = null) {
fun <T: K, K: Number> case_2(x: T = <!NULL_FOR_NONNULL_TYPE!>null<!>) {
println(x)
}
// TESTCASE NUMBER: 3
fun <K: Number> case_3() {
class Case4<T: K> (x: T = null)
class Case4<T: K> (x: T = <!NULL_FOR_NONNULL_TYPE!>null<!>)
}
// TESTCASE NUMBER: 4
fun <T> case_4() {
class Case4(x: T = null)
class Case4(x: T = <!NULL_FOR_NONNULL_TYPE!>null<!>)
}
// TESTCASE NUMBER: 5
fun <T, K> case_5(x: T) where T: Number?, K: Number {
if (x == null) {
class Case5 constructor(y: K = x)
class Case5 constructor(y: K = <!INITIALIZER_TYPE_MISMATCH!>x<!>)
}
}