Add tests for lookups to declarations form Java

Original commit: 4cb5398c04
This commit is contained in:
Zalim Bashorov
2015-10-29 15:28:15 +03:00
parent ee0ec87da6
commit e41b323fb4
8 changed files with 82 additions and 1 deletions
@@ -392,7 +392,9 @@ public abstract class AbstractIncrementalJpsTest(
fun prepareSources(relativePathToSrc: String, filePrefix: String) {
val srcDir = File(workDir, relativePathToSrc)
FileUtil.copyDir(testDataDir, srcDir) { it.name.startsWith(filePrefix) && (it.name.endsWith(".kt") || it.name.endsWith(".java")) }
FileUtil.copyDir(testDataDir, srcDir) {
it.isDirectory || it.name.startsWith(filePrefix) && (it.name.endsWith(".kt") || it.name.endsWith(".java"))
}
srcDir.walk().forEach { mapWorkingToOriginalFile[it] = File(testDataDir, filePrefix + it.name) }
@@ -47,6 +47,12 @@ public class LookupTrackerTestGenerated extends AbstractLookupTrackerTest {
doTest(fileName);
}
@TestMetadata("java")
public void testJava() throws Exception {
String fileName = JetTestUtils.navigationMetadata("jps-plugin/testData/incremental/lookupTracker/java/");
doTest(fileName);
}
@TestMetadata("localDeclarations")
public void testLocalDeclarations() throws Exception {
String fileName = JetTestUtils.navigationMetadata("jps-plugin/testData/incremental/lookupTracker/localDeclarations/");
@@ -0,0 +1,16 @@
package bar;
import foo.I;
public class C implements I {
@Override
public void ifunc() {}
public int field = 1;
public void func() {}
public class B {}
public static String sfield = "";
public static void sfunc() {}
public static class S {}
}
@@ -0,0 +1,9 @@
package baz;
public enum E {
F,
S;
public int field = 1;
public void func() {}
}
@@ -0,0 +1,8 @@
package foo;
public interface I {
void ifunc();
static String isfield = "";
static class IS {}
}
@@ -0,0 +1,5 @@
Compiling files:
src/usages.kt
End of files
COMPILATION FAILED
Unresolved reference: IS
@@ -0,0 +1,35 @@
package foo
import bar./*p:bar*/C
import baz.*
/*p:foo*/fun usages() {
val c = /*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.io*/C()
c./*c:bar.C*/field
c./*c:bar.C*/field = 2
c./*c:bar.C*/func()
c./*c:bar.C*/B()
/*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.io*/C./*c:bar.C*/sfield
/*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.io*/C./*c:bar.C*/sfield = "new"
/*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.io*/C./*c:bar.C*/sfunc()
/*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.io*/C./*c:bar.C*/S()
// inherited from I
c./*c:bar.C*/ifunc()
/*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.io*/C./*c:bar.C*/isfield
// expected error: Unresolved reference: IS
/*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.io*/C./*c:bar.C*/IS()
val i: /*p:foo*/I = c
i./*c:foo.I*/ifunc()
/*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.io*/I./*c:foo.I*/isfield
/*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.io*/I./*c:foo.I*/IS()
/*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.io*/E./*c:baz.E*/F
/*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.io*/E./*c:baz.E*/F./*c:baz.E*/field
/*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.io*/E./*c:baz.E*/S./*c:baz.E*/func()
}