Add tests for lookups to declarations form Java
Original commit: 4cb5398c04
This commit is contained in:
@@ -392,7 +392,9 @@ public abstract class AbstractIncrementalJpsTest(
|
|||||||
|
|
||||||
fun prepareSources(relativePathToSrc: String, filePrefix: String) {
|
fun prepareSources(relativePathToSrc: String, filePrefix: String) {
|
||||||
val srcDir = File(workDir, relativePathToSrc)
|
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) }
|
srcDir.walk().forEach { mapWorkingToOriginalFile[it] = File(testDataDir, filePrefix + it.name) }
|
||||||
|
|
||||||
|
|||||||
@@ -47,6 +47,12 @@ public class LookupTrackerTestGenerated extends AbstractLookupTrackerTest {
|
|||||||
doTest(fileName);
|
doTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("java")
|
||||||
|
public void testJava() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("jps-plugin/testData/incremental/lookupTracker/java/");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("localDeclarations")
|
@TestMetadata("localDeclarations")
|
||||||
public void testLocalDeclarations() throws Exception {
|
public void testLocalDeclarations() throws Exception {
|
||||||
String fileName = JetTestUtils.navigationMetadata("jps-plugin/testData/incremental/lookupTracker/localDeclarations/");
|
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()
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user