Tests: add complex tests for references to libraries
These tests check that that complex references (var p by delegate, for in collection, array[index]) are resolved correctly when target descriptors have type parameters
See 41f9dcba91
#KT-4505 Fixed
This commit is contained in:
@@ -0,0 +1,13 @@
|
|||||||
|
package test
|
||||||
|
|
||||||
|
import dependency.*
|
||||||
|
|
||||||
|
class A
|
||||||
|
|
||||||
|
class B {
|
||||||
|
var a b<caret>y A()
|
||||||
|
}
|
||||||
|
|
||||||
|
// MULTIRESOLVE
|
||||||
|
// REF: (for T in dependency).get(R,jet.PropertyMetadata)
|
||||||
|
// REF: (for T in dependency).set(R,jet.PropertyMetadata,jet.Int)
|
||||||
+8
@@ -0,0 +1,8 @@
|
|||||||
|
package dependency
|
||||||
|
|
||||||
|
fun <T, R> T.get(thisRef: R, desc: PropertyMetadata): Int {
|
||||||
|
return 3
|
||||||
|
}
|
||||||
|
|
||||||
|
fun <T, R> T.set(thisRef: R, desc: PropertyMetadata, value: Int) {
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package test
|
||||||
|
|
||||||
|
import dependency.*
|
||||||
|
|
||||||
|
fun foo(f: Foo<Int>) {
|
||||||
|
for (elem i<caret>n f) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// MULTIRESOLVE
|
||||||
|
// REF: (for dependency.Foo<T> in dependency).iterator()
|
||||||
|
// REF: (for dependency.FooIterator<T> in dependency).hasNext()
|
||||||
|
// REF: (for dependency.FooIterator<T> in dependency).next()
|
||||||
+11
@@ -0,0 +1,11 @@
|
|||||||
|
package dependency
|
||||||
|
|
||||||
|
class Foo<T> {
|
||||||
|
}
|
||||||
|
|
||||||
|
class FooIterator<T> {
|
||||||
|
}
|
||||||
|
|
||||||
|
fun <T> Foo<T>.iterator() = FooIterator<T>()
|
||||||
|
fun <T> FooIterator<T>.hasNext() = false
|
||||||
|
fun <T> FooIterator<T>.next() = throw IllegalStateException()
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
package test
|
||||||
|
|
||||||
|
import dependency.set
|
||||||
|
|
||||||
|
fun foo(a: List<Int>) {
|
||||||
|
a[<caret>"bar"] = 3
|
||||||
|
}
|
||||||
|
|
||||||
|
// REF: (for jet.List<T> in dependency).set(jet.String,T)
|
||||||
+4
@@ -0,0 +1,4 @@
|
|||||||
|
package dependency
|
||||||
|
|
||||||
|
fun <T> List<T>.set(s: String, b: T) {
|
||||||
|
}
|
||||||
@@ -36,6 +36,11 @@ public class ReferenceResolveWithLibTestGenerated extends AbstractReferenceResol
|
|||||||
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("idea/testData/resolve/referenceWithLib"), Pattern.compile("^(.+)\\.kt$"), false);
|
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("idea/testData/resolve/referenceWithLib"), Pattern.compile("^(.+)\\.kt$"), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("delegatedPropertyWithTypeParameters.kt")
|
||||||
|
public void testDelegatedPropertyWithTypeParameters() throws Exception {
|
||||||
|
doTest("idea/testData/resolve/referenceWithLib/delegatedPropertyWithTypeParameters.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("fakeOverride.kt")
|
@TestMetadata("fakeOverride.kt")
|
||||||
public void testFakeOverride() throws Exception {
|
public void testFakeOverride() throws Exception {
|
||||||
doTest("idea/testData/resolve/referenceWithLib/fakeOverride.kt");
|
doTest("idea/testData/resolve/referenceWithLib/fakeOverride.kt");
|
||||||
@@ -46,9 +51,19 @@ public class ReferenceResolveWithLibTestGenerated extends AbstractReferenceResol
|
|||||||
doTest("idea/testData/resolve/referenceWithLib/fakeOverride2.kt");
|
doTest("idea/testData/resolve/referenceWithLib/fakeOverride2.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("iteratorWithTypeParameter.kt")
|
||||||
|
public void testIteratorWithTypeParameter() throws Exception {
|
||||||
|
doTest("idea/testData/resolve/referenceWithLib/iteratorWithTypeParameter.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("sameNameInLib.kt")
|
@TestMetadata("sameNameInLib.kt")
|
||||||
public void testSameNameInLib() throws Exception {
|
public void testSameNameInLib() throws Exception {
|
||||||
doTest("idea/testData/resolve/referenceWithLib/sameNameInLib.kt");
|
doTest("idea/testData/resolve/referenceWithLib/sameNameInLib.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("setWithTypeParameters.kt")
|
||||||
|
public void testSetWithTypeParameters() throws Exception {
|
||||||
|
doTest("idea/testData/resolve/referenceWithLib/setWithTypeParameters.kt");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user