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 c92b2605d3a..943495cf248 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 @@ -65,4 +65,10 @@ public class LookupTrackerTestGenerated extends AbstractLookupTrackerTest { doTest(fileName); } + @TestMetadata("syntheticProperties") + public void testSyntheticProperties() throws Exception { + String fileName = JetTestUtils.navigationMetadata("jps-plugin/testData/incremental/lookupTracker/syntheticProperties/"); + doTest(fileName); + } + } diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/classifierMembers/foo.kt b/jps/jps-plugin/testData/incremental/lookupTracker/classifierMembers/foo.kt index 1c11f0893af..08fdb76ebef 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/classifierMembers/foo.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/classifierMembers/foo.kt @@ -18,7 +18,7 @@ import bar.* /*c:foo.A*/foo() this./*c:foo.A*/a this./*c:foo.A*/foo() - /*c:foo.A c:foo.A.Companion p:foo p:bar*/baz() + /*c:foo.A c:foo.A.Companion p:foo p:bar c:foo.A(getBaz) c:foo.A(getBAZ)*/baz() /*c:foo.A c:foo.A.Companion p:foo p:bar*/Companion./*c:foo.A.Companion*/a /*c:foo.A c:foo.A.Companion p:foo p:bar*/O./*c:foo.A.O*/v = "OK" } diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/conventions/comparison.kt b/jps/jps-plugin/testData/incremental/lookupTracker/conventions/comparison.kt index 215f51de39e..a7c36992c88 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/conventions/comparison.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/conventions/comparison.kt @@ -6,13 +6,13 @@ package foo.bar na /*c:foo.bar.A(equals)*/== a na /*c:foo.bar.A(equals)*/== null - a /*c:foo.bar.A(compareTo) p:foo.bar(compareTo)*/> b - a /*c:foo.bar.A(compareTo) p:foo.bar(compareTo)*/< b - a /*c:foo.bar.A(compareTo) p:foo.bar(compareTo)*/>= b - a /*c:foo.bar.A(compareTo) p:foo.bar(compareTo)*/<= b + a /*c:foo.bar.A(compareTo) p:foo.bar(compareTo) c:foo.bar.A(getCompareTo) c:foo.bar.A(getCOMPARETo)*/> b + a /*c:foo.bar.A(compareTo) p:foo.bar(compareTo) c:foo.bar.A(getCompareTo) c:foo.bar.A(getCOMPARETo)*/< b + a /*c:foo.bar.A(compareTo) p:foo.bar(compareTo) c:foo.bar.A(getCompareTo) c:foo.bar.A(getCOMPARETo)*/>= b + a /*c:foo.bar.A(compareTo) p:foo.bar(compareTo) c:foo.bar.A(getCompareTo) c:foo.bar.A(getCOMPARETo)*/<= b - a /*c:foo.bar.A(compareTo) p:foo.bar(compareTo)*/> c - a /*c:foo.bar.A(compareTo) p:foo.bar(compareTo)*/< c - a /*c:foo.bar.A(compareTo) p:foo.bar(compareTo)*/>= c - a /*c:foo.bar.A(compareTo) p:foo.bar(compareTo)*/<= c + a /*c:foo.bar.A(compareTo) p:foo.bar(compareTo) c:foo.bar.A(getCompareTo) c:foo.bar.A(getCOMPARETo)*/> c + a /*c:foo.bar.A(compareTo) p:foo.bar(compareTo) c:foo.bar.A(getCompareTo) c:foo.bar.A(getCOMPARETo)*/< c + a /*c:foo.bar.A(compareTo) p:foo.bar(compareTo) c:foo.bar.A(getCompareTo) c:foo.bar.A(getCOMPARETo)*/>= c + a /*c:foo.bar.A(compareTo) p:foo.bar(compareTo) c:foo.bar.A(getCompareTo) c:foo.bar.A(getCOMPARETo)*/<= c } diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/conventions/delegateProperty.kt b/jps/jps-plugin/testData/incremental/lookupTracker/conventions/delegateProperty.kt index a44e7f2c02a..8c0a5de927e 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/conventions/delegateProperty.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/conventions/delegateProperty.kt @@ -20,11 +20,11 @@ import kotlin.reflect.KProperty } -/*p:foo.bar*/val x1 by /*p:foo.bar c:foo.bar.D1(getValue) p:foo.bar(getValue) c:foo.bar.D1(get) c:foo.bar.D1(propertyDelegated) p:foo.bar(propertyDelegated)*/D1() -/*p:foo.bar*/var y1 by /*p:foo.bar c:foo.bar.D1(getValue) p:foo.bar(getValue) c:foo.bar.D1(get) c:foo.bar.D1(setValue) p:foo.bar(setValue) c:foo.bar.D1(set) p:foo.bar(set) c:foo.bar.D1(propertyDelegated) p:foo.bar(propertyDelegated)*/D1() +/*p:foo.bar*/val x1 by /*p:foo.bar c:foo.bar.D1(getValue) p:foo.bar(getValue) c:foo.bar.D1(getGetValue) c:foo.bar.D1(getGETValue) c:foo.bar.D1(get) c:foo.bar.D1(propertyDelegated) p:foo.bar(propertyDelegated) c:foo.bar.D1(getPropertyDelegated) c:foo.bar.D1(getPROPERTYDelegated)*/D1() +/*p:foo.bar*/var y1 by /*p:foo.bar c:foo.bar.D1(getValue) p:foo.bar(getValue) c:foo.bar.D1(getGetValue) c:foo.bar.D1(getGETValue) c:foo.bar.D1(get) c:foo.bar.D1(setValue) p:foo.bar(setValue) c:foo.bar.D1(getSetValue) c:foo.bar.D1(getSETValue) c:foo.bar.D1(set) p:foo.bar(set) c:foo.bar.D1(propertyDelegated) p:foo.bar(propertyDelegated) c:foo.bar.D1(getPropertyDelegated) c:foo.bar.D1(getPROPERTYDelegated)*/D1() -/*p:foo.bar*/val x2 by /*p:foo.bar c:foo.bar.D2(getValue) p:foo.bar(getValue) c:foo.bar.D2(get) p:foo.bar(get) c:foo.bar.D2(propertyDelegated) p:foo.bar(propertyDelegated)*/D2() -/*p:foo.bar*/var y2 by /*p:foo.bar c:foo.bar.D2(getValue) p:foo.bar(getValue) c:foo.bar.D2(get) p:foo.bar(get) c:foo.bar.D2(setValue) p:foo.bar(setValue) c:foo.bar.D2(set) c:foo.bar.D2(propertyDelegated) p:foo.bar(propertyDelegated)*/D2() +/*p:foo.bar*/val x2 by /*p:foo.bar c:foo.bar.D2(getValue) p:foo.bar(getValue) c:foo.bar.D2(getGetValue) c:foo.bar.D2(getGETValue) c:foo.bar.D2(get) p:foo.bar(get) c:foo.bar.D2(propertyDelegated) p:foo.bar(propertyDelegated)*/D2() +/*p:foo.bar*/var y2 by /*p:foo.bar c:foo.bar.D2(getValue) p:foo.bar(getValue) c:foo.bar.D2(getGetValue) c:foo.bar.D2(getGETValue) c:foo.bar.D2(get) p:foo.bar(get) c:foo.bar.D2(setValue) p:foo.bar(setValue) c:foo.bar.D2(getSetValue) c:foo.bar.D2(getSETValue) c:foo.bar.D2(set) c:foo.bar.D2(propertyDelegated) p:foo.bar(propertyDelegated)*/D2() -/*p:foo.bar*/val x3 by /*p:foo.bar c:foo.bar.D3(getValue) p:foo.bar(getValue) c:foo.bar.D3(get) p:foo.bar(get) c:foo.bar.D3(propertyDelegated)*/D3() -/*p:foo.bar*/var y3 by /*p:foo.bar c:foo.bar.D3(getValue) p:foo.bar(getValue) c:foo.bar.D3(get) p:foo.bar(get) c:foo.bar.D3(setValue) p:foo.bar(setValue) c:foo.bar.D3(set) c:foo.bar.D3(propertyDelegated)*/D3() +/*p:foo.bar*/val x3 by /*p:foo.bar c:foo.bar.D3(getValue) p:foo.bar(getValue) c:foo.bar.D3(getGetValue) c:foo.bar.D3(getGETValue) c:foo.bar.D3(get) p:foo.bar(get) c:foo.bar.D3(propertyDelegated)*/D3() +/*p:foo.bar*/var y3 by /*p:foo.bar c:foo.bar.D3(getValue) p:foo.bar(getValue) c:foo.bar.D3(getGetValue) c:foo.bar.D3(getGETValue) c:foo.bar.D3(get) p:foo.bar(get) c:foo.bar.D3(setValue) p:foo.bar(setValue) c:foo.bar.D3(getSetValue) c:foo.bar.D3(getSETValue) c:foo.bar.D3(set) c:foo.bar.D3(propertyDelegated)*/D3() diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/conventions/mathematicalLike.kt b/jps/jps-plugin/testData/incremental/lookupTracker/conventions/mathematicalLike.kt index 2317cc69b42..69516a94d51 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/conventions/mathematicalLike.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/conventions/mathematicalLike.kt @@ -3,22 +3,22 @@ package foo.bar /*p:foo.bar*/fun testOperators(a: /*p:foo.bar*/A, b: /*p:foo.bar*/Int) { var d = a - d/*c:foo.bar.A(inc) p:foo.bar(inc)*/++ - /*c:foo.bar.A(inc) p:foo.bar(inc)*/++d - d/*c:foo.bar.A(dec) p:foo.bar(dec)*/-- - /*c:foo.bar.A(dec) p:foo.bar(dec)*/--d + d/*c:foo.bar.A(inc) p:foo.bar(inc) c:foo.bar.A(getInc) c:foo.bar.A(getINC)*/++ + /*c:foo.bar.A(inc) p:foo.bar(inc) c:foo.bar.A(getInc) c:foo.bar.A(getINC)*/++d + d/*c:foo.bar.A(dec) p:foo.bar(dec) c:foo.bar.A(getDec) c:foo.bar.A(getDEC)*/-- + /*c:foo.bar.A(dec) p:foo.bar(dec) c:foo.bar.A(getDec) c:foo.bar.A(getDEC)*/--d - a /*c:foo.bar.A(plus) p:foo.bar(plus)*/+ b - a /*c:foo.bar.A(minus) p:foo.bar(minus)*/- b - /*c:foo.bar.A(not) p:foo.bar(not)*/!a + a /*c:foo.bar.A(plus) p:foo.bar(plus) c:foo.bar.A(getPlus) c:foo.bar.A(getPLUS)*/+ b + a /*c:foo.bar.A(minus) p:foo.bar(minus) c:foo.bar.A(getMinus) c:foo.bar.A(getMINUS)*/- b + /*c:foo.bar.A(not) p:foo.bar(not) c:foo.bar.A(getNot) c:foo.bar.A(getNOT)*/!a // for val - a /*c:foo.bar.A(timesAssign) p:foo.bar(timesAssign)*/*= b - a /*c:foo.bar.A(divAssign) p:foo.bar(divAssign)*//= b + a /*c:foo.bar.A(timesAssign) p:foo.bar(timesAssign) c:foo.bar.A(getTimesAssign) c:foo.bar.A(getTIMESAssign)*/*= b + a /*c:foo.bar.A(divAssign) p:foo.bar(divAssign) c:foo.bar.A(getDivAssign) c:foo.bar.A(getDIVAssign)*//= b // for var - d /*c:foo.bar.A(plusAssign) p:foo.bar(plusAssign) c:foo.bar.A(plus) p:foo.bar(plus)*/+= b - d /*c:foo.bar.A(minusAssign) p:foo.bar(minusAssign) c:foo.bar.A(minus) p:foo.bar(minus)*/-= b - d /*c:foo.bar.A(timesAssign) p:foo.bar(timesAssign) c:foo.bar.A(times) p:foo.bar(times)*/*= b - d /*c:foo.bar.A(divAssign) p:foo.bar(divAssign) c:foo.bar.A(div) p:foo.bar(div)*//= b + d /*c:foo.bar.A(plusAssign) p:foo.bar(plusAssign) c:foo.bar.A(getPlusAssign) c:foo.bar.A(getPLUSAssign) c:foo.bar.A(plus) p:foo.bar(plus) c:foo.bar.A(getPlus) c:foo.bar.A(getPLUS)*/+= b + d /*c:foo.bar.A(minusAssign) p:foo.bar(minusAssign) c:foo.bar.A(getMinusAssign) c:foo.bar.A(getMINUSAssign) c:foo.bar.A(minus) p:foo.bar(minus) c:foo.bar.A(getMinus) c:foo.bar.A(getMINUS)*/-= b + d /*c:foo.bar.A(timesAssign) p:foo.bar(timesAssign) c:foo.bar.A(getTimesAssign) c:foo.bar.A(getTIMESAssign) c:foo.bar.A(times) p:foo.bar(times) c:foo.bar.A(getTimes) c:foo.bar.A(getTIMES)*/*= b + d /*c:foo.bar.A(divAssign) p:foo.bar(divAssign) c:foo.bar.A(getDivAssign) c:foo.bar.A(getDIVAssign) c:foo.bar.A(div) p:foo.bar(div) c:foo.bar.A(getDiv) c:foo.bar.A(getDIV)*//= b } diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/conventions/other.kt b/jps/jps-plugin/testData/incremental/lookupTracker/conventions/other.kt index 1765cb22d1f..8d78d790252 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/conventions/other.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/conventions/other.kt @@ -1,16 +1,16 @@ package foo.bar /*p:foo.bar*/fun testOther(a: /*p:foo.bar*/A, b: /*p:foo.bar*/Int, c: /*p:foo.bar*/Any, na: /*p:foo.bar*/A?) { - /*c:foo.bar.A(set) p:foo.bar(set)*/a[1] = /*c:foo.bar.A(get) p:foo.bar(get)*/a[2] + /*c:foo.bar.A(set) p:foo.bar(set) c:foo.bar.A(getSet) c:foo.bar.A(getSET)*/a[1] = /*c:foo.bar.A(get) p:foo.bar(get) c:foo.bar.A(getGet) c:foo.bar.A(getGET)*/a[2] - b /*c:foo.bar.A(contains) p:foo.bar(contains)*/in a - "s" /*c:foo.bar.A(contains) p:foo.bar(contains)*/!in a + b /*c:foo.bar.A(contains) p:foo.bar(contains) c:foo.bar.A(getContains) c:foo.bar.A(getCONTAINS)*/in a + "s" /*c:foo.bar.A(contains) p:foo.bar(contains) c:foo.bar.A(getContains) c:foo.bar.A(getCONTAINS)*/!in a /*c:foo.bar.A(invoke) p:foo.bar(invoke)*/a() /*c:foo.bar.A(invoke) p:foo.bar(invoke)*/a(1) - val (/*c:foo.bar.A(component1) p:foo.bar(component1)*/h, /*c:foo.bar.A(component2) p:foo.bar(component2)*/t) = a; + val (/*c:foo.bar.A(component1) p:foo.bar(component1) c:foo.bar.A(getComponent1)*/h, /*c:foo.bar.A(component2) p:foo.bar(component2) c:foo.bar.A(getComponent2)*/t) = a; - for ((/*c:foo.bar.A(component1) p:foo.bar(component1)*/f, /*c:foo.bar.A(component2) p:foo.bar(component2)*/s) in /*c:foo.bar.A(iterator) c:foo.bar.A(hasNext) p:foo.bar(hasNext) c:foo.bar.A(next)*/a); - for ((/*c:foo.bar.A(component1) p:foo.bar(component1)*/f, /*c:foo.bar.A(component2) p:foo.bar(component2)*/s) in /*c:foo.bar.A(iterator) p:foo.bar(iterator) c:foo.bar.A(hasNext) p:foo.bar(hasNext) c:foo.bar.A(next)*/na); + for ((/*c:foo.bar.A(component1) p:foo.bar(component1) c:foo.bar.A(getComponent1)*/f, /*c:foo.bar.A(component2) p:foo.bar(component2) c:foo.bar.A(getComponent2)*/s) in /*c:foo.bar.A(iterator) c:foo.bar.A(hasNext) p:foo.bar(hasNext) c:foo.bar.A(next)*/a); + for ((/*c:foo.bar.A(component1) p:foo.bar(component1) c:foo.bar.A(getComponent1)*/f, /*c:foo.bar.A(component2) p:foo.bar(component2) c:foo.bar.A(getComponent2)*/s) in /*c:foo.bar.A(iterator) p:foo.bar(iterator) c:foo.bar.A(hasNext) p:foo.bar(hasNext) c:foo.bar.A(next)*/na); } diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/packageDeclarations/foo1.kt b/jps/jps-plugin/testData/incremental/lookupTracker/packageDeclarations/foo1.kt index bc2ad02cdd9..5429ad30dc2 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/packageDeclarations/foo1.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/packageDeclarations/foo1.kt @@ -12,6 +12,6 @@ import baz./*p:baz*/C } /*p:foo*/fun /*p:foo*/MyClass.extFunc(p: /**p:foo p:bar*//*p:foo*/Array, e: /*p:foo*/MyEnum, c: /**???*/C): /*p:foo*/MyInterface { - /*c:foo.MyClass p:foo p:bar*/b + /*c:foo.MyClass p:foo p:bar c:foo.MyClass(getB)*/b return /*c:foo.MyClass p:foo p:bar*/MyClass() } diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/syntheticProperties/JavaClass.java b/jps/jps-plugin/testData/incremental/lookupTracker/syntheticProperties/JavaClass.java new file mode 100644 index 00000000000..58cb77be2d0 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/lookupTracker/syntheticProperties/JavaClass.java @@ -0,0 +1,26 @@ +public class JavaClass { + public int getFoo() { + return 1; + } + + public String getBar() { + return ""; + } + + public void setBar(String s) { + } + + public int getBazBaz() { + return 1; + } + + public int getBAZBaz() { + return 1; + } + + public void setBazBaz(int i) { + } + + public void setBoo(int i) { + } +} diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/syntheticProperties/KotlinClass.kt b/jps/jps-plugin/testData/incremental/lookupTracker/syntheticProperties/KotlinClass.kt new file mode 100644 index 00000000000..1771c1d3c84 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/lookupTracker/syntheticProperties/KotlinClass.kt @@ -0,0 +1,8 @@ +package foo + +import /*p:*/JavaClass + +/*p:foo*/class KotlinClass : JavaClass() { + override fun getFoo() = 2 + fun setFoo(i: /*c:foo.KotlinClass p:foo*/Int) {} +} diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/syntheticProperties/init-build.log b/jps/jps-plugin/testData/incremental/lookupTracker/syntheticProperties/init-build.log new file mode 100644 index 00000000000..1fa99e08a45 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/lookupTracker/syntheticProperties/init-build.log @@ -0,0 +1,13 @@ +Compiling files: +src/KotlinClass.kt +src/usages.kt +End of files +COMPILATION FAILED +Unresolved reference: setFoo +Val cannot be reassigned +Unresolved reference: bazBaz +Unresolved reference: bazBaz +Unresolved reference: boo +Unresolved reference: bazBaz +Unresolved reference: bazBaz +Unresolved reference: boo diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/syntheticProperties/usages.kt b/jps/jps-plugin/testData/incremental/lookupTracker/syntheticProperties/usages.kt new file mode 100644 index 00000000000..3315e1cc011 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/lookupTracker/syntheticProperties/usages.kt @@ -0,0 +1,30 @@ +package foo.bar + +import /*p:*/JavaClass +import foo./*p:foo*/KotlinClass + +/*p:foo.bar*/fun test() { + val j = /*p:foo.bar*/JavaClass() + val k = /*p:foo.bar*/KotlinClass() + + j.getFoo() + j./*p:foo.bar c:JavaClass(getSetFoo) c:JavaClass(getSETFoo)*/setFoo(2) + j./*p:foo.bar c:JavaClass(getFoo) c:JavaClass(getFOO) c:JavaClass(setFoo)*/foo = 2 + j./*p:foo.bar c:JavaClass(getFoo) c:JavaClass(getFOO) c:JavaClass(setFoo)*/foo + j./*p:foo.bar c:JavaClass(getBar) c:JavaClass(getBAR) c:JavaClass(setBar)*/bar + j./*p:foo.bar c:JavaClass(getBar) c:JavaClass(getBAR) c:JavaClass(setBar)*/bar = "" + j./*p:foo.bar c:JavaClass(getBazBaz) c:JavaClass(getBAZBaz)*/bazBaz + j./*p:foo.bar c:JavaClass(getBazBaz) c:JavaClass(getBAZBaz)*/bazBaz = "" + j.setBoo(2) + j./*p:foo.bar c:JavaClass(getBoo) c:JavaClass(getBOO)*/boo = 2 + k./*c:foo.KotlinClass*/getFoo() + k./*c:foo.KotlinClass*/setFoo(2) + k./*c:foo.KotlinClass p:foo.bar c:foo.KotlinClass(getFoo) c:foo.KotlinClass(getFOO) c:foo.KotlinClass(setFoo)*/foo = 2 + k./*c:foo.KotlinClass p:foo.bar c:foo.KotlinClass(getFoo) c:foo.KotlinClass(getFOO) c:foo.KotlinClass(setFoo)*/foo + k./*c:foo.KotlinClass p:foo.bar c:foo.KotlinClass(getBar) c:foo.KotlinClass(getBAR) c:foo.KotlinClass(setBar)*/bar + k./*c:foo.KotlinClass p:foo.bar c:foo.KotlinClass(getBar) c:foo.KotlinClass(getBAR) c:foo.KotlinClass(setBar)*/bar = "" + k./*c:foo.KotlinClass p:foo.bar c:foo.KotlinClass(getBazBaz) c:foo.KotlinClass(getBAZBaz)*/bazBaz + k./*c:foo.KotlinClass p:foo.bar c:foo.KotlinClass(getBazBaz) c:foo.KotlinClass(getBAZBaz)*/bazBaz = "" + k./*c:foo.KotlinClass*/setBoo(2) + k./*c:foo.KotlinClass p:foo.bar c:foo.KotlinClass(getBoo) c:foo.KotlinClass(getBOO)*/boo = 2 +}