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);
|
||||
}
|
||||
|
||||
@TestMetadata("delegatedPropertyWithTypeParameters.kt")
|
||||
public void testDelegatedPropertyWithTypeParameters() throws Exception {
|
||||
doTest("idea/testData/resolve/referenceWithLib/delegatedPropertyWithTypeParameters.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("fakeOverride.kt")
|
||||
public void testFakeOverride() throws Exception {
|
||||
doTest("idea/testData/resolve/referenceWithLib/fakeOverride.kt");
|
||||
@@ -46,9 +51,19 @@ public class ReferenceResolveWithLibTestGenerated extends AbstractReferenceResol
|
||||
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")
|
||||
public void testSameNameInLib() throws Exception {
|
||||
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