[NI] Don't report uninferred type parameter error on special functions
Type parameters can't be specified explicitly for special constructions. Reporting this error does not help fixing the cause of it and needlessly reveals implementation details. ^KT-36342 Fixed
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
// !WITH_NEW_INFERENCE
|
||||
|
||||
import java.lang.Exception
|
||||
|
||||
fun <K> id(arg: K): K = arg
|
||||
|
||||
fun test() {
|
||||
<!INAPPLICABLE_CANDIDATE!>id<!>(<!UNRESOLVED_REFERENCE!>unresolved<!>)!!
|
||||
<!UNRESOLVED_REFERENCE!>unresolved<!>!!!!
|
||||
try {
|
||||
<!INAPPLICABLE_CANDIDATE!>id<!>(<!UNRESOLVED_REFERENCE!>unresolved<!>)
|
||||
} catch (e: Exception) {
|
||||
<!INAPPLICABLE_CANDIDATE!>id<!>(<!UNRESOLVED_REFERENCE!>unresolved<!>)
|
||||
}
|
||||
|
||||
if (true)
|
||||
<!INAPPLICABLE_CANDIDATE!>id<!>(<!UNRESOLVED_REFERENCE!>unresolved<!>)
|
||||
else
|
||||
<!INAPPLICABLE_CANDIDATE!>id<!>(<!UNRESOLVED_REFERENCE!>unresolved<!>)
|
||||
|
||||
when {
|
||||
true -> <!INAPPLICABLE_CANDIDATE!>id<!>(<!UNRESOLVED_REFERENCE!>unresolved<!>)
|
||||
}
|
||||
<!INAPPLICABLE_CANDIDATE!>id<!>(<!UNRESOLVED_REFERENCE!>unresolved<!>) ?: <!INAPPLICABLE_CANDIDATE!>id<!>(<!UNRESOLVED_REFERENCE!>unresolved<!>)
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
// !WITH_NEW_INFERENCE
|
||||
|
||||
import java.lang.Exception
|
||||
|
||||
fun <K> id(arg: K): K = arg
|
||||
|
||||
fun test() {
|
||||
id(<!UNRESOLVED_REFERENCE!>unresolved<!>)<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>
|
||||
<!UNRESOLVED_REFERENCE!>unresolved<!>!!<!NI;UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>
|
||||
try {
|
||||
id(<!UNRESOLVED_REFERENCE!>unresolved<!>)
|
||||
} catch (e: Exception) {
|
||||
id(<!UNRESOLVED_REFERENCE!>unresolved<!>)
|
||||
}
|
||||
|
||||
if (true)
|
||||
id(<!UNRESOLVED_REFERENCE!>unresolved<!>)
|
||||
else
|
||||
id(<!UNRESOLVED_REFERENCE!>unresolved<!>)
|
||||
|
||||
when {
|
||||
true -> id(<!UNRESOLVED_REFERENCE!>unresolved<!>)
|
||||
}
|
||||
id(<!UNRESOLVED_REFERENCE!>unresolved<!>) ?: id(<!UNRESOLVED_REFERENCE!>unresolved<!>)
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
package
|
||||
|
||||
public fun </*0*/ K> id(/*0*/ arg: K): K
|
||||
public fun test(): kotlin.Unit
|
||||
@@ -0,0 +1,14 @@
|
||||
// !WITH_NEW_INFERENCE
|
||||
|
||||
fun <K> id(arg: K): K = arg
|
||||
fun <M> materialize(): M = TODO()
|
||||
|
||||
fun test(b: Boolean) {
|
||||
<!INAPPLICABLE_CANDIDATE!>id<!>(if (b) {
|
||||
<!INAPPLICABLE_CANDIDATE!>id<!>(<!UNRESOLVED_REFERENCE!>unresolved<!>)
|
||||
} else {
|
||||
id(
|
||||
materialize()
|
||||
)
|
||||
})
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
// !WITH_NEW_INFERENCE
|
||||
|
||||
fun <K> id(arg: K): K = arg
|
||||
fun <M> materialize(): M = TODO()
|
||||
|
||||
fun test(b: Boolean) {
|
||||
<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>id<!>(if (b) {
|
||||
id(<!UNRESOLVED_REFERENCE!>unresolved<!>)
|
||||
} else {
|
||||
<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>id<!>(
|
||||
<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>materialize<!>()
|
||||
)
|
||||
})
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package
|
||||
|
||||
public fun </*0*/ K> id(/*0*/ arg: K): K
|
||||
public fun </*0*/ M> materialize(): M
|
||||
public fun test(/*0*/ b: kotlin.Boolean): kotlin.Unit
|
||||
@@ -12,7 +12,7 @@ fun <T> emptyList() : List<T>? = ArrayList<T>()
|
||||
fun foo() {
|
||||
// type arguments shouldn't be required
|
||||
val <!UNUSED_VARIABLE!>l<!> : List<Int> = emptyList()!!
|
||||
val <!UNUSED_VARIABLE!>l1<!> = <!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>emptyList<!>()<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>!!<!>
|
||||
val <!UNUSED_VARIABLE!>l1<!> = <!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>emptyList<!>()!!
|
||||
|
||||
checkSubtype<List<Int>>(emptyList()!!)
|
||||
checkSubtype<List<Int>?>(emptyList())
|
||||
|
||||
Reference in New Issue
Block a user