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:
Pavel V. Talanov
2014-02-05 16:31:30 +04:00
parent 7e1c9194f1
commit 6c96d235ec
7 changed files with 73 additions and 0 deletions
@@ -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)
@@ -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()
@@ -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)
@@ -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");
}
}