diff --git a/jps/jps-plugin/test/org/jetbrains/kotlin/jps/build/AbstractIncrementalJpsTest.kt b/jps/jps-plugin/test/org/jetbrains/kotlin/jps/build/AbstractIncrementalJpsTest.kt index 2599ef866f5..4fc7d3c5c02 100644 --- a/jps/jps-plugin/test/org/jetbrains/kotlin/jps/build/AbstractIncrementalJpsTest.kt +++ b/jps/jps-plugin/test/org/jetbrains/kotlin/jps/build/AbstractIncrementalJpsTest.kt @@ -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) } diff --git a/jps/jps-plugin/test/org/jetbrains/kotlin/jps/build/LookupTrackerTestGenerated.java b/jps/jps-plugin/test/org/jetbrains/kotlin/jps/build/LookupTrackerTestGenerated.java index 943495cf248..71cee46f567 100644 --- a/jps/jps-plugin/test/org/jetbrains/kotlin/jps/build/LookupTrackerTestGenerated.java +++ b/jps/jps-plugin/test/org/jetbrains/kotlin/jps/build/LookupTrackerTestGenerated.java @@ -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/"); diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/java/bar/C.java b/jps/jps-plugin/testData/incremental/lookupTracker/java/bar/C.java new file mode 100644 index 00000000000..5dc47c5b4c8 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/lookupTracker/java/bar/C.java @@ -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 {} +} diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/java/baz/E.java b/jps/jps-plugin/testData/incremental/lookupTracker/java/baz/E.java new file mode 100644 index 00000000000..4b7305cfdde --- /dev/null +++ b/jps/jps-plugin/testData/incremental/lookupTracker/java/baz/E.java @@ -0,0 +1,9 @@ +package baz; + +public enum E { + F, + S; + + public int field = 1; + public void func() {} +} diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/java/foo/I.java b/jps/jps-plugin/testData/incremental/lookupTracker/java/foo/I.java new file mode 100644 index 00000000000..0bf443cff80 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/lookupTracker/java/foo/I.java @@ -0,0 +1,8 @@ +package foo; + +public interface I { + void ifunc(); + + static String isfield = ""; + static class IS {} +} diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/java/init-build.log b/jps/jps-plugin/testData/incremental/lookupTracker/java/init-build.log new file mode 100644 index 00000000000..4ef7b46d7ba --- /dev/null +++ b/jps/jps-plugin/testData/incremental/lookupTracker/java/init-build.log @@ -0,0 +1,5 @@ +Compiling files: +src/usages.kt +End of files +COMPILATION FAILED +Unresolved reference: IS diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/java/usages.kt b/jps/jps-plugin/testData/incremental/lookupTracker/java/usages.kt new file mode 100644 index 00000000000..128a8475cf3 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/lookupTracker/java/usages.kt @@ -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() +} diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/java/usages.kt.touch b/jps/jps-plugin/testData/incremental/lookupTracker/java/usages.kt.touch new file mode 100644 index 00000000000..e69de29bb2d