diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/ScopeTowerImpl.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/ScopeTowerImpl.kt index a541ea99598..df64a82de63 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/ScopeTowerImpl.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/ScopeTowerImpl.kt @@ -63,6 +63,7 @@ internal class ScopeTowerImpl( filter { it.kind.withLocalDescriptors }. mapTo(result) { ScopeBasedTowerLevel(this, it) } + var isFirstImportingScope = true lexicalScope.parentsWithSelf.forEach { scope -> if (scope is LexicalScope) { if (!scope.kind.withLocalDescriptors) result.add(ScopeBasedTowerLevel(this, scope)) @@ -70,10 +71,13 @@ internal class ScopeTowerImpl( scope.implicitReceiver?.let { result.add(ReceiverScopeTowerLevel(this, it.value)) } } else { + if (isFirstImportingScope) { + isFirstImportingScope = false + result.add(SyntheticScopeBasedTowerLevel(this, syntheticScopes)) + } result.add(ImportingScopeBasedTowerLevel(this, scope as ImportingScope)) } } - result.add(SyntheticScopeBasedTowerLevel(this, syntheticScopes)) return result } diff --git a/compiler/testData/diagnostics/tests/resolve/priority/syntheticPropertiesVsExtensions.kt b/compiler/testData/diagnostics/tests/resolve/priority/syntheticPropertiesVsExtensions.kt new file mode 100644 index 00000000000..928dd95d8c6 --- /dev/null +++ b/compiler/testData/diagnostics/tests/resolve/priority/syntheticPropertiesVsExtensions.kt @@ -0,0 +1,31 @@ +// !CHECK_TYPE +// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE + +// FILE: A.java +public class A { + public A getFoo() { return 3; } +} + +// FILE: 1.kt + +private val A.foo: Int get() = 4 + +fun test(a: A) { + a.foo checkType { _() } + with(a) { + foo checkType { _() } + } +} + +class B { + private val A.foo: B get() = this@B + + fun test(a: A) { + a.foo checkType { _() } // todo + with(a) { + foo checkType { _() } // todo + } + } +} + +fun with(receiver: T, f: T.() -> R): R = receiver.f() diff --git a/compiler/testData/diagnostics/tests/resolve/priority/syntheticPropertiesVsExtensions.txt b/compiler/testData/diagnostics/tests/resolve/priority/syntheticPropertiesVsExtensions.txt new file mode 100644 index 00000000000..a35051a8a2c --- /dev/null +++ b/compiler/testData/diagnostics/tests/resolve/priority/syntheticPropertiesVsExtensions.txt @@ -0,0 +1,22 @@ +package + +private val A.foo: kotlin.Int +public fun test(/*0*/ a: A): kotlin.Unit +public fun with(/*0*/ receiver: T, /*1*/ f: T.() -> R): R + +public open class A { + public constructor A() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open fun getFoo(): A! + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + +public final class B { + public constructor B() + private final val A.foo: B + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public final fun test(/*0*/ a: A): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} diff --git a/compiler/testData/diagnostics/tests/resolve/priority/syntheticPropertiesVsMembers.kt b/compiler/testData/diagnostics/tests/resolve/priority/syntheticPropertiesVsMembers.kt new file mode 100644 index 00000000000..4492fe901ed --- /dev/null +++ b/compiler/testData/diagnostics/tests/resolve/priority/syntheticPropertiesVsMembers.kt @@ -0,0 +1,38 @@ +// !CHECK_TYPE +// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE + +// FILE: A.java +public class A { + public A getFoo() { return 3; } +} + +// FILE: B.java +public class B { + public B getFoo() { return ""; } +} + +// FILE: 1.kt +class C(val foo: C) + +fun test(a: A, b: B, c: C) { + with(a) { + with(b) { + foo checkType { _() } + } + foo checkType { _() } + } + + with(a) { + with(c) { + foo checkType { _() } + } + } + + with(c) { + with(a) { + foo checkType { _() } // todo + } + } +} + +fun with(receiver: T, f: T.() -> R): R = receiver.f() diff --git a/compiler/testData/diagnostics/tests/resolve/priority/syntheticPropertiesVsMembers.txt b/compiler/testData/diagnostics/tests/resolve/priority/syntheticPropertiesVsMembers.txt new file mode 100644 index 00000000000..e350b404239 --- /dev/null +++ b/compiler/testData/diagnostics/tests/resolve/priority/syntheticPropertiesVsMembers.txt @@ -0,0 +1,28 @@ +package + +public fun test(/*0*/ a: A, /*1*/ b: B, /*2*/ c: C): kotlin.Unit +public fun with(/*0*/ receiver: T, /*1*/ f: T.() -> R): R + +public open class A { + public constructor A() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open fun getFoo(): A! + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + +public open class B { + public constructor B() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open fun getFoo(): B! + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + +public final class C { + public constructor C(/*0*/ foo: C) + public final val foo: C + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java index f59fadfaa2d..8912c7f8ceb 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java @@ -13735,6 +13735,18 @@ public class DiagnosticsTestGenerated extends AbstractDiagnosticsTest { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/resolve/priority/synthesizedMembersVsExtension.kt"); doTest(fileName); } + + @TestMetadata("syntheticPropertiesVsExtensions.kt") + public void testSyntheticPropertiesVsExtensions() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/resolve/priority/syntheticPropertiesVsExtensions.kt"); + doTest(fileName); + } + + @TestMetadata("syntheticPropertiesVsMembers.kt") + public void testSyntheticPropertiesVsMembers() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/resolve/priority/syntheticPropertiesVsMembers.kt"); + doTest(fileName); + } } @TestMetadata("compiler/testData/diagnostics/tests/resolve/overloadConflicts") diff --git a/idea/testData/intentions/usePropertyAccessSyntax/conflict2.kt b/idea/testData/intentions/usePropertyAccessSyntax/conflict2.kt index 872ab35fa8f..5400de69e27 100644 --- a/idea/testData/intentions/usePropertyAccessSyntax/conflict2.kt +++ b/idea/testData/intentions/usePropertyAccessSyntax/conflict2.kt @@ -1,5 +1,5 @@ // WITH_RUNTIME -// IS_APPLICABLE: false +// IS_APPLICABLE: true import java.io.File val File.absolutePath: String get() = "" diff --git a/idea/testData/intentions/usePropertyAccessSyntax/conflict2.kt.after b/idea/testData/intentions/usePropertyAccessSyntax/conflict2.kt.after new file mode 100644 index 00000000000..c9525ede88c --- /dev/null +++ b/idea/testData/intentions/usePropertyAccessSyntax/conflict2.kt.after @@ -0,0 +1,9 @@ +// WITH_RUNTIME +// IS_APPLICABLE: true +import java.io.File + +val File.absolutePath: String get() = "" + +fun foo(file: File) { + file.absolutePath +} \ No newline at end of file diff --git a/jps-plugin/testData/incremental/lookupTracker/classifierMembers/usages.kt b/jps-plugin/testData/incremental/lookupTracker/classifierMembers/usages.kt index 84872a2ebe8..7438fedacec 100644 --- a/jps-plugin/testData/incremental/lookupTracker/classifierMembers/usages.kt +++ b/jps-plugin/testData/incremental/lookupTracker/classifierMembers/usages.kt @@ -18,8 +18,8 @@ import bar.* /*p:foo*/A./*c:foo.A*/Companion./*c:foo.A.Companion*/baz() /*p:foo*/A./*c:foo.A c:foo.A.Companion*/O /*p:foo*/A./*c:foo.A*/O./*c:foo.A.O*/v = "OK" - /*p:foo*/A./*c:foo.A c:foo.A.Companion p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io c:foo.A.Companion(getVala) c:foo.A.Companion(getVALA)*/vala - /*p:foo*/A./*c:foo.A c:foo.A.Companion p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io c:foo.A.Companion(getVara) c:foo.A.Companion(getVARA)*/vara() + /*p:foo*/A./*c:foo.A c:foo.A.Companion c:foo.A.Companion(getVala) c:foo.A.Companion(getVALA) p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/vala + /*p:foo*/A./*c:foo.A c:foo.A.Companion c:foo.A.Companion(getVara) c:foo.A.Companion(getVARA) p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/vara() i./*c:foo.I*/a = 2 /*p:foo*/Obj./*c:foo.Obj*/a diff --git a/jps-plugin/testData/incremental/lookupTracker/conventions/comparison.kt b/jps-plugin/testData/incremental/lookupTracker/conventions/comparison.kt index 45124e49c44..33669a221f5 100644 --- a/jps-plugin/testData/incremental/lookupTracker/conventions/comparison.kt +++ b/jps-plugin/testData/incremental/lookupTracker/conventions/comparison.kt @@ -11,8 +11,8 @@ package foo.bar a /*c:foo.bar.A(compareTo)*/>= b a /*c:foo.bar.A(compareTo)*/<= 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) c:foo.bar.A(getCompareTo) c:foo.bar.A(getCOMPARETo) p:foo.bar(compareTo)*/> c + a /*c:foo.bar.A(compareTo) c:foo.bar.A(getCompareTo) c:foo.bar.A(getCOMPARETo) p:foo.bar(compareTo)*/< c + a /*c:foo.bar.A(compareTo) c:foo.bar.A(getCompareTo) c:foo.bar.A(getCOMPARETo) p:foo.bar(compareTo)*/>= c + a /*c:foo.bar.A(compareTo) c:foo.bar.A(getCompareTo) c:foo.bar.A(getCOMPARETo) p:foo.bar(compareTo)*/<= c } diff --git a/jps-plugin/testData/incremental/lookupTracker/conventions/delegateProperty.kt b/jps-plugin/testData/incremental/lookupTracker/conventions/delegateProperty.kt index 43f706acf39..579e0b9ec69 100644 --- a/jps-plugin/testData/incremental/lookupTracker/conventions/delegateProperty.kt +++ b/jps-plugin/testData/incremental/lookupTracker/conventions/delegateProperty.kt @@ -20,11 +20,11 @@ import kotlin.reflect./*p:kotlin.reflect*/KProperty } -/*p:foo.bar*/val x1 by /*p:foo.bar c:foo.bar.D1(getValue) c:foo.bar.D1(propertyDelegated) p:foo.bar(propertyDelegated) p:java.lang(propertyDelegated) p:kotlin(propertyDelegated) p:kotlin.annotation(propertyDelegated) p:kotlin.jvm(propertyDelegated) p:kotlin.collections(propertyDelegated) p:kotlin.ranges(propertyDelegated) p:kotlin.sequences(propertyDelegated) p:kotlin.text(propertyDelegated) p:kotlin.io(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) c:foo.bar.D1(setValue) p:foo.bar(setValue) c:foo.bar.D1(propertyDelegated) p:foo.bar(propertyDelegated) p:java.lang(propertyDelegated) p:kotlin(propertyDelegated) p:kotlin.annotation(propertyDelegated) p:kotlin.jvm(propertyDelegated) p:kotlin.collections(propertyDelegated) p:kotlin.ranges(propertyDelegated) p:kotlin.sequences(propertyDelegated) p:kotlin.text(propertyDelegated) p:kotlin.io(propertyDelegated) c:foo.bar.D1(getPropertyDelegated) c:foo.bar.D1(getPROPERTYDelegated)*/D1() +/*p:foo.bar*/val x1 by /*p:foo.bar c:foo.bar.D1(getValue) c:foo.bar.D1(propertyDelegated) c:foo.bar.D1(getPropertyDelegated) c:foo.bar.D1(getPROPERTYDelegated) p:foo.bar(propertyDelegated) p:java.lang(propertyDelegated) p:kotlin(propertyDelegated) p:kotlin.annotation(propertyDelegated) p:kotlin.jvm(propertyDelegated) p:kotlin.collections(propertyDelegated) p:kotlin.ranges(propertyDelegated) p:kotlin.sequences(propertyDelegated) p:kotlin.text(propertyDelegated) p:kotlin.io(propertyDelegated)*/D1() +/*p:foo.bar*/var y1 by /*p:foo.bar c:foo.bar.D1(getValue) c:foo.bar.D1(setValue) c:foo.bar.D1(getSetValue) c:foo.bar.D1(getSETValue) p:foo.bar(setValue) c:foo.bar.D1(propertyDelegated) c:foo.bar.D1(getPropertyDelegated) c:foo.bar.D1(getPROPERTYDelegated) p:foo.bar(propertyDelegated) p:java.lang(propertyDelegated) p:kotlin(propertyDelegated) p:kotlin.annotation(propertyDelegated) p:kotlin.jvm(propertyDelegated) p:kotlin.collections(propertyDelegated) p:kotlin.ranges(propertyDelegated) p:kotlin.sequences(propertyDelegated) p:kotlin.text(propertyDelegated) p:kotlin.io(propertyDelegated)*/D1() -/*p:foo.bar*/val x2 by /*p:foo.bar c:foo.bar.D2(getValue) p:foo.bar(getValue) 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(setValue) c:foo.bar.D2(propertyDelegated) p:foo.bar(propertyDelegated)*/D2() +/*p:foo.bar*/val x2 by /*p:foo.bar c:foo.bar.D2(getValue) c:foo.bar.D2(getGetValue) c:foo.bar.D2(getGETValue) p:foo.bar(getValue) c:foo.bar.D2(propertyDelegated) c:foo.bar.D2(getPropertyDelegated) c:foo.bar.D2(getPROPERTYDelegated) p:foo.bar(propertyDelegated)*/D2() +/*p:foo.bar*/var y2 by /*p:foo.bar c:foo.bar.D2(getValue) c:foo.bar.D2(getGetValue) c:foo.bar.D2(getGETValue) p:foo.bar(getValue) c:foo.bar.D2(setValue) c:foo.bar.D2(propertyDelegated) c:foo.bar.D2(getPropertyDelegated) c:foo.bar.D2(getPROPERTYDelegated) p:foo.bar(propertyDelegated)*/D2() -/*p:foo.bar*/val x3 by /*p:foo.bar c:foo.bar.D3(getValue) c:foo.bar.D2(getValue) p:foo.bar(getValue) c:foo.bar.D3(propertyDelegated) c:foo.bar.D2(propertyDelegated)*/D3() -/*p:foo.bar*/var y3 by /*p:foo.bar c:foo.bar.D3(getValue) c:foo.bar.D2(getValue) p:foo.bar(getValue) c:foo.bar.D3(setValue) c:foo.bar.D2(setValue) c:foo.bar.D3(propertyDelegated) c:foo.bar.D2(propertyDelegated)*/D3() +/*p:foo.bar*/val x3 by /*p:foo.bar c:foo.bar.D3(getValue) c:foo.bar.D2(getValue) c:foo.bar.D3(getGetValue) c:foo.bar.D3(getGETValue) p:foo.bar(getValue) c:foo.bar.D3(propertyDelegated) c:foo.bar.D2(propertyDelegated)*/D3() +/*p:foo.bar*/var y3 by /*p:foo.bar c:foo.bar.D3(getValue) c:foo.bar.D2(getValue) c:foo.bar.D3(getGetValue) c:foo.bar.D3(getGETValue) p:foo.bar(getValue) c:foo.bar.D3(setValue) c:foo.bar.D2(setValue) c:foo.bar.D3(propertyDelegated) c:foo.bar.D2(propertyDelegated)*/D3() diff --git a/jps-plugin/testData/incremental/lookupTracker/conventions/mathematicalLike.kt b/jps-plugin/testData/incremental/lookupTracker/conventions/mathematicalLike.kt index 8fd70159f73..486fbf26478 100644 --- a/jps-plugin/testData/incremental/lookupTracker/conventions/mathematicalLike.kt +++ b/jps-plugin/testData/incremental/lookupTracker/conventions/mathematicalLike.kt @@ -5,20 +5,20 @@ package foo.bar d/*c:foo.bar.A(inc)*/++ /*c:foo.bar.A(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(dec) c:foo.bar.A(getDec) c:foo.bar.A(getDEC) p:foo.bar(dec)*/-- + /*c:foo.bar.A(dec) c:foo.bar.A(getDec) c:foo.bar.A(getDEC) p:foo.bar(dec)*/--d a /*c:foo.bar.A(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(minus) c:foo.bar.A(getMinus) c:foo.bar.A(getMINUS) p:foo.bar(minus)*/- b + /*c:foo.bar.A(not) c:foo.bar.A(getNot) c:foo.bar.A(getNOT) p:foo.bar(not)*/!a // for val a /*c:foo.bar.A(timesAssign)*/*= b - a /*c:foo.bar.A(divAssign) p:foo.bar(divAssign)*//= b + a /*c:foo.bar.A(divAssign) c:foo.bar.A(getDivAssign) c:foo.bar.A(getDIVAssign) p:foo.bar(divAssign)*//= b // for var - d /*c:foo.bar.A(plusAssign) p:foo.bar(plusAssign) p:java.lang(plusAssign) p:kotlin(plusAssign) p:kotlin.annotation(plusAssign) p:kotlin.jvm(plusAssign) p:kotlin.collections(plusAssign) p:kotlin.ranges(plusAssign) p:kotlin.sequences(plusAssign) p:kotlin.text(plusAssign) p:kotlin.io(plusAssign) c:foo.bar.A(getPlusAssign) c:foo.bar.A(getPLUSAssign) c:foo.bar.A(plus)*/+= b - d /*c:foo.bar.A(minusAssign) p:foo.bar(minusAssign) p:java.lang(minusAssign) p:kotlin(minusAssign) p:kotlin.annotation(minusAssign) p:kotlin.jvm(minusAssign) p:kotlin.collections(minusAssign) p:kotlin.ranges(minusAssign) p:kotlin.sequences(minusAssign) p:kotlin.text(minusAssign) p:kotlin.io(minusAssign) c:foo.bar.A(getMinusAssign) c:foo.bar.A(getMINUSAssign) c:foo.bar.A(minus) p:foo.bar(minus)*/-= b - d /*c:foo.bar.A(timesAssign) c:foo.bar.A(times) p:foo.bar(times) p:java.lang(times) p:kotlin(times) p:kotlin.annotation(times) p:kotlin.jvm(times) p:kotlin.collections(times) p:kotlin.ranges(times) p:kotlin.sequences(times) p:kotlin.text(times) p:kotlin.io(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(div) p:foo.bar(div) p:java.lang(div) p:kotlin(div) p:kotlin.annotation(div) p:kotlin.jvm(div) p:kotlin.collections(div) p:kotlin.ranges(div) p:kotlin.sequences(div) p:kotlin.text(div) p:kotlin.io(div) c:foo.bar.A(getDiv) c:foo.bar.A(getDIV)*//= b + d /*c:foo.bar.A(plusAssign) c:foo.bar.A(getPlusAssign) c:foo.bar.A(getPLUSAssign) p:foo.bar(plusAssign) p:java.lang(plusAssign) p:kotlin(plusAssign) p:kotlin.annotation(plusAssign) p:kotlin.jvm(plusAssign) p:kotlin.collections(plusAssign) p:kotlin.ranges(plusAssign) p:kotlin.sequences(plusAssign) p:kotlin.text(plusAssign) p:kotlin.io(plusAssign) c:foo.bar.A(plus)*/+= b + d /*c:foo.bar.A(minusAssign) c:foo.bar.A(getMinusAssign) c:foo.bar.A(getMINUSAssign) p:foo.bar(minusAssign) p:java.lang(minusAssign) p:kotlin(minusAssign) p:kotlin.annotation(minusAssign) p:kotlin.jvm(minusAssign) p:kotlin.collections(minusAssign) p:kotlin.ranges(minusAssign) p:kotlin.sequences(minusAssign) p:kotlin.text(minusAssign) p:kotlin.io(minusAssign) c:foo.bar.A(minus) c:foo.bar.A(getMinus) c:foo.bar.A(getMINUS) p:foo.bar(minus)*/-= b + d /*c:foo.bar.A(timesAssign) c:foo.bar.A(times) c:foo.bar.A(getTimes) c:foo.bar.A(getTIMES) p:foo.bar(times) p:java.lang(times) p:kotlin(times) p:kotlin.annotation(times) p:kotlin.jvm(times) p:kotlin.collections(times) p:kotlin.ranges(times) p:kotlin.sequences(times) p:kotlin.text(times) p:kotlin.io(times)*/*= b + d /*c:foo.bar.A(divAssign) c:foo.bar.A(getDivAssign) c:foo.bar.A(getDIVAssign) p:foo.bar(divAssign) c:foo.bar.A(div) c:foo.bar.A(getDiv) c:foo.bar.A(getDIV) p:foo.bar(div) p:java.lang(div) p:kotlin(div) p:kotlin.annotation(div) p:kotlin.jvm(div) p:kotlin.collections(div) p:kotlin.ranges(div) p:kotlin.sequences(div) p:kotlin.text(div) p:kotlin.io(div)*//= b } diff --git a/jps-plugin/testData/incremental/lookupTracker/conventions/other.kt b/jps-plugin/testData/incremental/lookupTracker/conventions/other.kt index d1b1fca1636..5bb64a7dc33 100644 --- a/jps-plugin/testData/incremental/lookupTracker/conventions/other.kt +++ b/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)*/a[2] + /*c:foo.bar.A(set) c:foo.bar.A(getSet) c:foo.bar.A(getSET) p:foo.bar(set)*/a[1] = /*c:foo.bar.A(get)*/a[2] b /*c:foo.bar.A(contains)*/in a - "s" /*c:foo.bar.A(contains) p:foo.bar(contains)*/!in a + "s" /*c:foo.bar.A(contains) c:foo.bar.A(getContains) c:foo.bar.A(getCONTAINS) p:foo.bar(contains)*/!in a /*c:foo.bar.A(invoke)*/a() /*c:foo.bar.A(invoke) p:foo.bar p:foo.bar(invoke)*/a(1) - val (/*c:foo.bar.A(component1)*/h, /*c:foo.bar.A(component2) p:foo.bar(component2)*/t) = a; + val (/*c:foo.bar.A(component1)*/h, /*c:foo.bar.A(component2) c:foo.bar.A(getComponent2) p:foo.bar(component2)*/t) = a; - for ((/*c:foo.bar.A(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)*/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)*/f, /*c:foo.bar.A(component2) c:foo.bar.A(getComponent2) p:foo.bar(component2)*/s) in /*c:foo.bar.A(iterator) c:foo.bar.A(hasNext) c:foo.bar.A(getHasNext) c:foo.bar.A(getHASNext) p:foo.bar(hasNext) c:foo.bar.A(next)*/a); + for ((/*c:foo.bar.A(component1)*/f, /*c:foo.bar.A(component2) c:foo.bar.A(getComponent2) p:foo.bar(component2)*/s) in /*c:foo.bar.A(iterator) c:foo.bar.A(getIterator) c:foo.bar.A(getITERATOR) p:foo.bar(iterator) c:foo.bar.A(hasNext) c:foo.bar.A(getHasNext) c:foo.bar.A(getHASNext) p:foo.bar(hasNext) c:foo.bar.A(next)*/na); } diff --git a/jps-plugin/testData/incremental/lookupTracker/packageDeclarations/foo1.kt b/jps-plugin/testData/incremental/lookupTracker/packageDeclarations/foo1.kt index 856eb166509..e212405db19 100644 --- a/jps-plugin/testData/incremental/lookupTracker/packageDeclarations/foo1.kt +++ b/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*/b + /*c:foo.MyClass c:foo.MyClass(getB) p:foo*/b return /*c:foo.MyClass p:foo*/MyClass() } diff --git a/jps-plugin/testData/incremental/lookupTracker/syntheticProperties/usages.kt b/jps-plugin/testData/incremental/lookupTracker/syntheticProperties/usages.kt index 2310b787f4a..34e7367eea7 100644 --- a/jps-plugin/testData/incremental/lookupTracker/syntheticProperties/usages.kt +++ b/jps-plugin/testData/incremental/lookupTracker/syntheticProperties/usages.kt @@ -8,23 +8,23 @@ import foo./*p:foo*/KotlinClass val k = KotlinClass() j./*c:JavaClass*/getFoo() - j./*c:JavaClass p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io c:JavaClass(getSetFoo) c:JavaClass(getSETFoo)*/setFoo(2) - j./*c:JavaClass p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io c:JavaClass(getFoo) c:JavaClass(getFOO) c:JavaClass(setFoo)*/foo = 2 - j./*c:JavaClass p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io c:JavaClass(getFoo) c:JavaClass(getFOO) c:JavaClass(setFoo)*/foo - j./*c:JavaClass p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io c:JavaClass(getBar) c:JavaClass(getBAR) c:JavaClass(setBar)*/bar - j./*c:JavaClass p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io c:JavaClass(getBar) c:JavaClass(getBAR) c:JavaClass(setBar)*/bar = "" - j./*c:JavaClass p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io c:JavaClass(getBazBaz) c:JavaClass(getBAZBaz)*/bazBaz - j./*c:JavaClass p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io c:JavaClass(getBazBaz) c:JavaClass(getBAZBaz)*/bazBaz = "" + j./*c:JavaClass c:JavaClass(getSetFoo) c:JavaClass(getSETFoo) p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/setFoo(2) + j./*c:JavaClass c:JavaClass(getFoo) c:JavaClass(getFOO) c:JavaClass(setFoo)*/foo = 2 + j./*c:JavaClass c:JavaClass(getFoo) c:JavaClass(getFOO) c:JavaClass(setFoo)*/foo + j./*c:JavaClass c:JavaClass(getBar) c:JavaClass(getBAR) c:JavaClass(setBar)*/bar + j./*c:JavaClass c:JavaClass(getBar) c:JavaClass(getBAR) c:JavaClass(setBar)*/bar = "" + j./*c:JavaClass c:JavaClass(getBazBaz) c:JavaClass(getBAZBaz) p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/bazBaz + j./*c:JavaClass c:JavaClass(getBazBaz) c:JavaClass(getBAZBaz) p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/bazBaz = "" j./*c:JavaClass*/setBoo(2) - j./*c:JavaClass p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io c:JavaClass(getBoo) c:JavaClass(getBOO)*/boo = 2 + j./*c:JavaClass c:JavaClass(getBoo) c:JavaClass(getBOO) p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/boo = 2 k./*c:foo.KotlinClass c:JavaClass*/getFoo() // getFoo may be an inner class in JavaClass k./*c:foo.KotlinClass c:JavaClass*/setFoo(2) - k./*c:foo.KotlinClass p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io c:foo.KotlinClass(getFoo) c:foo.KotlinClass(getFOO) c:foo.KotlinClass(setFoo)*/foo = 2 - k./*c:foo.KotlinClass p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io c:foo.KotlinClass(getFoo) c:foo.KotlinClass(getFOO) c:foo.KotlinClass(setFoo)*/foo - k./*c:foo.KotlinClass p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io c:foo.KotlinClass(getBar) c:foo.KotlinClass(getBAR) c:foo.KotlinClass(setBar)*/bar - k./*c:foo.KotlinClass p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io c:foo.KotlinClass(getBar) c:foo.KotlinClass(getBAR) c:foo.KotlinClass(setBar)*/bar = "" - k./*c:foo.KotlinClass p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io c:foo.KotlinClass(getBazBaz) c:foo.KotlinClass(getBAZBaz) c:JavaClass*/bazBaz - k./*c:foo.KotlinClass p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io c:foo.KotlinClass(getBazBaz) c:foo.KotlinClass(getBAZBaz) c:JavaClass*/bazBaz = "" + k./*c:foo.KotlinClass c:foo.KotlinClass(getFoo) c:foo.KotlinClass(getFOO) c:foo.KotlinClass(setFoo)*/foo = 2 + k./*c:foo.KotlinClass c:foo.KotlinClass(getFoo) c:foo.KotlinClass(getFOO) c:foo.KotlinClass(setFoo)*/foo + k./*c:foo.KotlinClass c:foo.KotlinClass(getBar) c:foo.KotlinClass(getBAR) c:foo.KotlinClass(setBar)*/bar + k./*c:foo.KotlinClass c:foo.KotlinClass(getBar) c:foo.KotlinClass(getBAR) c:foo.KotlinClass(setBar)*/bar = "" + k./*c:foo.KotlinClass c:foo.KotlinClass(getBazBaz) c:foo.KotlinClass(getBAZBaz) p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io c:JavaClass*/bazBaz + k./*c:foo.KotlinClass c:foo.KotlinClass(getBazBaz) c:foo.KotlinClass(getBAZBaz) p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io c:JavaClass*/bazBaz = "" k./*c:foo.KotlinClass c:JavaClass*/setBoo(2) - k./*c:foo.KotlinClass p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io c:foo.KotlinClass(getBoo) c:foo.KotlinClass(getBOO) c:JavaClass*/boo = 2 + k./*c:foo.KotlinClass c:foo.KotlinClass(getBoo) c:foo.KotlinClass(getBOO) p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io c:JavaClass*/boo = 2 } diff --git a/libraries/stdlib/test/io/Files.kt b/libraries/stdlib/test/io/Files.kt index 5130fa6a3b5..ac19a7b2940 100644 --- a/libraries/stdlib/test/io/Files.kt +++ b/libraries/stdlib/test/io/Files.kt @@ -66,7 +66,7 @@ class FilesTest { createTempFile("temp3", ".kt", dir) // This line works only with Kotlin File.listFiles(filter) - val result = dir.listFiles { it.getName().endsWith(".kt") } + val result = dir.listFiles { it -> it.getName().endsWith(".kt") } // todo ambiguity on SAM assertEquals(2, result!!.size) // This line works both with Kotlin File.listFiles(filter) and the same Java function because of SAM val result2 = dir.listFiles { it -> it.getName().endsWith(".kt") }