Reapply "Only create descriptors for candidates with lambda args"
#KT-36247 fixed A lot of testdata changed because significanly less (error) descriptors are created for unresolved types, so diagnostics became different.
This commit is contained in:
+7
-7
@@ -17,37 +17,37 @@ interface C {
|
||||
|
||||
fun foo(x: Any?) {
|
||||
if (x is A && x is B) {
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.foo().checkType { <!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER, OI;TYPE_MISMATCH!>_<!><String>() }
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.foo().checkType { <!NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER, OI;TYPE_MISMATCH!>_<!><String>() }
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.foo().checkType { _<String?>() }
|
||||
}
|
||||
|
||||
if (x is B && x is A) {
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.foo().checkType { <!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER, OI;TYPE_MISMATCH!>_<!><String>() }
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.foo().checkType { <!NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER, OI;TYPE_MISMATCH!>_<!><String>() }
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.foo().checkType { _<String?>() }
|
||||
}
|
||||
|
||||
if (x is A && x is C) {
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.foo().checkType { _<String>() }
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.foo().checkType { <!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER, OI;TYPE_MISMATCH!>_<!><String?>() }
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.foo().checkType { <!NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER, OI;TYPE_MISMATCH!>_<!><String?>() }
|
||||
}
|
||||
|
||||
if (x is C && x is A) {
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.foo().checkType { _<String>() }
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.foo().checkType { <!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER, OI;TYPE_MISMATCH!>_<!><String?>() }
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.foo().checkType { <!NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER, OI;TYPE_MISMATCH!>_<!><String?>() }
|
||||
}
|
||||
|
||||
if (x is A && x is B && x is C) {
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.foo().checkType { _<String>() }
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.foo().checkType { <!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER, OI;TYPE_MISMATCH!>_<!><String?>() }
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.foo().checkType { <!NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER, OI;TYPE_MISMATCH!>_<!><String?>() }
|
||||
}
|
||||
|
||||
if (x is B && x is A && x is C) {
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.foo().checkType { _<String>() }
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.foo().checkType { <!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER, OI;TYPE_MISMATCH!>_<!><String?>() }
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.foo().checkType { <!NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER, OI;TYPE_MISMATCH!>_<!><String?>() }
|
||||
}
|
||||
|
||||
if (x is B && x is C && x is A) {
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.foo().checkType { _<String>() }
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.foo().checkType { <!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER, OI;TYPE_MISMATCH!>_<!><String?>() }
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.foo().checkType { <!NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER, OI;TYPE_MISMATCH!>_<!><String?>() }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ fun case_0() {
|
||||
this as Int
|
||||
<!NI;DEBUG_INFO_SMARTCAST!>this<!> // error in NI: required Int, found Any?; just inferred to Any? in OI
|
||||
}
|
||||
y checkType { <!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER!>_<!><Any?>() }
|
||||
y checkType { <!NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER!>_<!><Any?>() }
|
||||
y checkType { <!OI;TYPE_MISMATCH!>_<!><Int>() }
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ fun case_1(z: Any?) {
|
||||
else -> return@run ""
|
||||
}
|
||||
}
|
||||
y checkType { <!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER!>_<!><Any?>() }
|
||||
y checkType { <!NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER!>_<!><Any?>() }
|
||||
y checkType { <!OI;TYPE_MISMATCH!>_<!><kotlin.String>() }
|
||||
// y is inferred to Any?
|
||||
}
|
||||
@@ -45,7 +45,7 @@ fun case_3(z: Any?) {
|
||||
else -> return@let ""
|
||||
}
|
||||
}
|
||||
y checkType { <!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER!>_<!><Any?>() }
|
||||
y checkType { <!NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER!>_<!><Any?>() }
|
||||
y checkType { <!OI;TYPE_MISMATCH!>_<!><kotlin.String>() }
|
||||
// y is inferred to String
|
||||
}
|
||||
+2
-2
@@ -60,11 +60,11 @@ fun kt4565_1(a: SomeClass?) {
|
||||
fun kt4565_2(a: SomeClass?) {
|
||||
// To be supported
|
||||
if (a as? SubClass != null) {
|
||||
a.<!UNRESOLVED_REFERENCE!>extra<!>.<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>hashCode<!>()
|
||||
a.<!UNRESOLVED_REFERENCE!>extra<!>.<!NI;DEBUG_INFO_MISSING_UNRESOLVED, OI;DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>hashCode<!>()
|
||||
}
|
||||
val extra = (a as? SubClass)?.extra
|
||||
if (extra != null) {
|
||||
a.<!UNRESOLVED_REFERENCE!>extra<!>.<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>hashCode<!>()
|
||||
a.<!UNRESOLVED_REFERENCE!>extra<!>.<!NI;DEBUG_INFO_MISSING_UNRESOLVED, OI;DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>hashCode<!>()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ fun foo(): Int {
|
||||
val x: Any? = null
|
||||
val y = 2
|
||||
if (x == y) {
|
||||
return x <!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, UNRESOLVED_REFERENCE_WRONG_RECEIVER!>+<!> y
|
||||
return x <!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>+<!> y
|
||||
}
|
||||
return y
|
||||
}
|
||||
+1
-1
@@ -12,7 +12,7 @@ operator fun Long?.inc() = this?.let { it + 1 }
|
||||
fun bar(arg: Long?): Long {
|
||||
var i = arg
|
||||
if (i++ == 5L) {
|
||||
return i<!UNSAFE_CALL!>--<!> <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>+<!> i
|
||||
return i<!UNSAFE_CALL!>--<!> <!NI;DEBUG_INFO_MISSING_UNRESOLVED, OI;DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>+<!> i
|
||||
}
|
||||
if (i++ == 7L) {
|
||||
return i++ <!UNSAFE_OPERATOR_CALL!>+<!> <!TYPE_MISMATCH!>i<!>
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@ class MyClass {
|
||||
m = create()
|
||||
// See KT-7428
|
||||
for ((k, v) in <!SMARTCAST_IMPOSSIBLE!>m<!>)
|
||||
res <!NI;OVERLOAD_RESOLUTION_AMBIGUITY!>+=<!> (<!NI;DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>k<!>.<!NI;DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>length<!> <!NI;DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>+<!> <!NI;DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>v<!>.<!NI;DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>length<!>)
|
||||
res += (<!NI;DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>k<!>.<!NI;DEBUG_INFO_MISSING_UNRESOLVED!>length<!> <!NI;DEBUG_INFO_MISSING_UNRESOLVED!>+<!> <!NI;DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>v<!>.<!NI;DEBUG_INFO_MISSING_UNRESOLVED!>length<!>)
|
||||
return res
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user