[FIR] KT-37453: Type argument mapping

#KT-37453 Fixed
This commit is contained in:
simon.ogorodnik
2020-03-06 20:55:23 +03:00
parent 6a1e35389c
commit 4844a90788
11 changed files with 104 additions and 30 deletions
@@ -78,7 +78,7 @@ fun test() {
"sd".<!UNRESOLVED_REFERENCE!>(fun Int.() = 1)()<!>
val i : Int? = null
i.<!UNRESOLVED_REFERENCE!>(fun Int.() = 1)()<!>;
{}<Int>()
<!INAPPLICABLE_CANDIDATE!>{}<Int>()<!>
1?.<!UNRESOLVED_REFERENCE!>(fun Int.() = 1)()<!>
1.<!UNRESOLVED_REFERENCE!>{}()<!>
}
@@ -5,12 +5,12 @@ fun myFun(i : String) {}
fun myFun(i : Int) {}
fun test1() {
myFun<Int>(3)
<!INAPPLICABLE_CANDIDATE!>myFun<!><Int>(3)
<!INAPPLICABLE_CANDIDATE!>myFun<!><String>('a')
}
fun test2() {
val m0 = java.util.HashMap()
val m1 = java.util.HashMap<String, String, String>()
val m2 = java.util.HashMap<String>()
val m1 = java.util.<!INAPPLICABLE_CANDIDATE!>HashMap<!><String, String, String>()
val m2 = java.util.<!INAPPLICABLE_CANDIDATE!>HashMap<!><String>()
}
@@ -7,4 +7,4 @@ class Outer {
fun nested() = Outer.Nested<Int>()
fun noArguments() = Outer.Nested()
fun noArgumentsExpectedType(): Outer.Nested<String> = Outer.Nested()
fun manyArguments() = Outer.Nested<String, Int>()
fun manyArguments() = Outer.<!INAPPLICABLE_CANDIDATE!>Nested<!><String, Int>()
@@ -10,15 +10,15 @@ typealias P2<T> = Pair<T, T>
typealias PR<T1, T2> = Pair<T2, T1>
val test0 = P(1, 2)
val test1 = P<Int>(1, 2)
val test1 = <!INAPPLICABLE_CANDIDATE!>P<!><Int>(1, 2)
val test2 = P<Int, Int>(1, 2)
val test3 = P<Int, Int, Int>(1, 2)
val test3 = <!INAPPLICABLE_CANDIDATE!>P<!><Int, Int, Int>(1, 2)
val test0p2 = P2(1, 1)
val test0p2a = P2(1, "")
val test1p2 = P2<Int>(1, 1)
val test2p2 = P2<Int, Int>(1, 1)
val test3p2 = P2<Int, Int, Int>(1, 1)
val test2p2 = <!INAPPLICABLE_CANDIDATE!>P2<!><Int, Int>(1, 1)
val test3p2 = <!INAPPLICABLE_CANDIDATE!>P2<!><Int, Int, Int>(1, 1)
val test0pr = PR(1, "")
val test1pr = <!INAPPLICABLE_CANDIDATE!>PR<!><Int>(1, "")
@@ -32,7 +32,7 @@ typealias N<T> = Num<T>
val testN0 = N("")
val testN1 = N<Int>(1)
val testN1a = N<String>("")
val testN2 = N<Int, Int>(1)
val testN2 = <!INAPPLICABLE_CANDIDATE!>N<!><Int, Int>(1)
class MyPair<T1 : CharSequence, T2 : Number>(val string: T1, val number: T2)
typealias MP<T1> = MyPair<String, T1>
@@ -24,4 +24,4 @@ val test1 = R { }
val test2 = C<String> { s -> println(s.length) }
val test3 = CStr { s -> <!AMBIGUITY!>println<!>(s.<!UNRESOLVED_REFERENCE!>length<!>) }
val test4 = CStrList { ss -> <!UNRESOLVED_REFERENCE, UNRESOLVED_REFERENCE, UNRESOLVED_REFERENCE!>for (s in ss) { <!AMBIGUITY!>println<!>(s.<!UNRESOLVED_REFERENCE!>length<!>) }<!> }
val test5 = C2<Int> { a, b -> val x: Int = a <!AMBIGUITY!>+<!> b; println(x)}
val test5 = <!INAPPLICABLE_CANDIDATE!>C2<!><Int> { a, b -> val x: Int = a <!AMBIGUITY!>+<!> b; println(x)}