diff --git a/.idea/dictionaries/dzharkov.xml b/.idea/dictionaries/dzharkov.xml index 2e8cb56c4fb..63f1ee091b8 100644 --- a/.idea/dictionaries/dzharkov.xml +++ b/.idea/dictionaries/dzharkov.xml @@ -2,6 +2,7 @@ checkcast + coroutine insn diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatform.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatform.kt index 6e0579bde0c..09b2f2abd6c 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatform.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatform.kt @@ -45,6 +45,7 @@ private val DEFAULT_IMPORTS_FOR_JVM: List = ArrayList(). add(ImportPath("kotlin.annotation.*")) add(ImportPath("kotlin.jvm.*")) add(ImportPath("kotlin.collections.*")) + add(ImportPath("kotlin.coroutines.*")) add(ImportPath("kotlin.ranges.*")) add(ImportPath("kotlin.sequences.*")) add(ImportPath("kotlin.text.*")) diff --git a/core/builtins/src/kotlin/Coroutines.kt b/core/builtins/src/kotlin/Coroutines.kt new file mode 100644 index 00000000000..83cdf0ce832 --- /dev/null +++ b/core/builtins/src/kotlin/Coroutines.kt @@ -0,0 +1,33 @@ +/* + * Copyright 2010-2016 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package kotlin.coroutines + +/** + * Interface representing a continuation after a suspension point that returns value of type `P` + */ +interface Continuation { + /** + * Resumes the execution of the corresponding coroutine passing `data` as the return value of the last suspension point + */ + fun resume(data: P) + + /** + * Resumes the execution of the corresponding coroutine so that the `exception` is re-thrown right after the + * last suspension point + */ + fun resumeWithException(exception: Throwable) +} diff --git a/core/descriptors/src/org/jetbrains/kotlin/builtins/KotlinBuiltIns.java b/core/descriptors/src/org/jetbrains/kotlin/builtins/KotlinBuiltIns.java index f7c1dd5cddb..f0dc11cdd15 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/builtins/KotlinBuiltIns.java +++ b/core/descriptors/src/org/jetbrains/kotlin/builtins/KotlinBuiltIns.java @@ -58,6 +58,7 @@ public abstract class KotlinBuiltIns { RANGES_PACKAGE_FQ_NAME, ANNOTATION_PACKAGE_FQ_NAME, ReflectionTypesKt.getKOTLIN_REFLECT_FQ_NAME(), + BUILT_INS_PACKAGE_FQ_NAME.child(Name.identifier("coroutines")), BUILT_INS_PACKAGE_FQ_NAME.child(Name.identifier("internal")) ); diff --git a/jps-plugin/testData/incremental/lookupTracker/classifierMembers/foo.kt b/jps-plugin/testData/incremental/lookupTracker/classifierMembers/foo.kt index 6b3b664e10e..cdd7fd5d862 100644 --- a/jps-plugin/testData/incremental/lookupTracker/classifierMembers/foo.kt +++ b/jps-plugin/testData/incremental/lookupTracker/classifierMembers/foo.kt @@ -18,9 +18,9 @@ import bar.* /*c:foo.A*/foo() /*p:foo(A) p:kotlin(Int)*/this./*c:foo.A*/a /*p:foo(A)*/this./*c:foo.A*/foo() - /*c:foo.A c:foo.A(getBaz) c:foo.A(getBAZ) 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*/baz() - /*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 p:kotlin(Int)*/Companion./*c:foo.A.Companion*/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 p:kotlin(String)*/O./*c:foo.A.O*/v = /*p:kotlin(String)*/"OK" + /*c:foo.A c:foo.A(getBaz) c:foo.A(getBAZ) c:foo.A.Companion p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.coroutines p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/baz() + /*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.coroutines p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io p:kotlin(Int)*/Companion./*c:foo.A.Companion*/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.coroutines p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io p:kotlin(String)*/O./*c:foo.A.O*/v = /*p:kotlin(String)*/"OK" } class B { @@ -64,8 +64,8 @@ import bar.* val a = /*p:kotlin(Int)*/1 fun foo() { /*c:foo.E p:kotlin(Int)*/a - /*c:foo.E 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 p:kotlin(Int)*/Y./*c:foo.E*/a + /*c:foo.E p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.coroutines p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io p:kotlin(Int)*/Y./*c:foo.E*/a /*c:foo.E*/foo() - /*c:foo.E 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*/X./*c:foo.E*/foo() + /*c:foo.E p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.coroutines p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/X./*c:foo.E*/foo() } } diff --git a/jps-plugin/testData/incremental/lookupTracker/classifierMembers/usages.kt b/jps-plugin/testData/incremental/lookupTracker/classifierMembers/usages.kt index 4e17f29efae..4a4b3b6194c 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 c:foo.A(O)*/A./*c:foo.A c:foo.A.Companion*/O /*p:foo p:kotlin(String)*/A./*c:foo.A*/O./*c:foo.A.O*/v = /*p:kotlin(String)*/"OK" - /*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() + /*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.coroutines 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.coroutines p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/vara() /*p:foo(I) p:kotlin(Int)*/i./*c:foo.I*/a = /*p:kotlin(Int)*/2 /*p:foo p:kotlin(Int)*/Obj./*c:foo.Obj*/a @@ -31,13 +31,13 @@ import bar.* val iii = /*p:foo p:foo(I)*/Obj./*c:foo.Obj*/bar() /*p:foo(I)*/iii./*c:foo.I*/foo() - /*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*/E./*c:foo.E*/X - /*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 p:kotlin(Int)*/E./*c:foo.E*/X./*c:foo.E*/a - /*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*/E./*c:foo.E*/Y./*c:foo.E*/foo() - /*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 p:kotlin(Array)*/E./*c:foo.E*/values() - /*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*/E./*c:foo.E*/valueOf(/*p:kotlin(String)*/"") - /*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*/E./*c:foo.E*/foo - /*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*/E./*c:foo.E*/bar() + /*p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.coroutines p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/E./*c:foo.E*/X + /*p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.coroutines p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io p:kotlin(Int)*/E./*c:foo.E*/X./*c:foo.E*/a + /*p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.coroutines p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/E./*c:foo.E*/Y./*c:foo.E*/foo() + /*p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.coroutines p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io p:kotlin(Array)*/E./*c:foo.E*/values() + /*p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.coroutines p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/E./*c:foo.E*/valueOf(/*p:kotlin(String)*/"") + /*p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.coroutines p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/E./*c:foo.E*/foo + /*p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.coroutines p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/E./*c:foo.E*/bar() } /*p:foo*/fun classifiers( diff --git a/jps-plugin/testData/incremental/lookupTracker/conventions/delegateProperty.kt b/jps-plugin/testData/incremental/lookupTracker/conventions/delegateProperty.kt index 9d1ba767cff..2ea6f5978c0 100644 --- a/jps-plugin/testData/incremental/lookupTracker/conventions/delegateProperty.kt +++ b/jps-plugin/testData/incremental/lookupTracker/conventions/delegateProperty.kt @@ -20,8 +20,8 @@ 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) 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 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.coroutines(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.coroutines(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) 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() diff --git a/jps-plugin/testData/incremental/lookupTracker/conventions/mathematicalLike.kt b/jps-plugin/testData/incremental/lookupTracker/conventions/mathematicalLike.kt index de63e2b99ca..e2c0c6fbbfa 100644 --- a/jps-plugin/testData/incremental/lookupTracker/conventions/mathematicalLike.kt +++ b/jps-plugin/testData/incremental/lookupTracker/conventions/mathematicalLike.kt @@ -17,8 +17,8 @@ package foo.bar /*p:foo.bar(A)*/a /*c:foo.bar.A(divAssign) c:foo.bar.A(getDivAssign) c:foo.bar.A(getDIVAssign) p:foo.bar(divAssign)*//= /*p:kotlin(Int)*/b // for var - /*p:foo.bar(A)*/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)*/+= /*p:kotlin(Int)*/b - /*p:foo.bar(A)*/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)*/-= /*p:kotlin(Int)*/b - /*p:foo.bar(A)*/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)*/*= /*p:kotlin(Int)*/b - /*p:foo.bar(A)*/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)*//= /*p:kotlin(Int)*/b + /*p:foo.bar(A)*/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.coroutines(plusAssign) p:kotlin.ranges(plusAssign) p:kotlin.sequences(plusAssign) p:kotlin.text(plusAssign) p:kotlin.io(plusAssign) c:foo.bar.A(plus)*/+= /*p:kotlin(Int)*/b + /*p:foo.bar(A)*/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.coroutines(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)*/-= /*p:kotlin(Int)*/b + /*p:foo.bar(A)*/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.coroutines(times) p:kotlin.ranges(times) p:kotlin.sequences(times) p:kotlin.text(times) p:kotlin.io(times)*/*= /*p:kotlin(Int)*/b + /*p:foo.bar(A)*/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.coroutines(div) p:kotlin.ranges(div) p:kotlin.sequences(div) p:kotlin.text(div) p:kotlin.io(div)*//= /*p:kotlin(Int)*/b } diff --git a/jps-plugin/testData/incremental/lookupTracker/expressionType/inferredType.kt b/jps-plugin/testData/incremental/lookupTracker/expressionType/inferredType.kt index fb15d1dc4f4..e868c37a806 100644 --- a/jps-plugin/testData/incremental/lookupTracker/expressionType/inferredType.kt +++ b/jps-plugin/testData/incremental/lookupTracker/expressionType/inferredType.kt @@ -6,8 +6,8 @@ package foo /*p:foo*/fun getA() = /*p:foo*/A() /*p:foo*/fun getB() = /*p:foo*/B() -/*p:foo*/fun getListOfA() = /*p:foo 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 p:kotlin.collections(List) p:foo(A)*/listOf(/*p:foo*/A()) -/*p:foo*/fun getListOfB() = /*p:foo 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 p:kotlin.collections(List) p:foo(B)*/listOf(/*p:foo*/B()) +/*p:foo*/fun getListOfA() = /*p:foo p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.coroutines p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io p:kotlin.collections(List) p:foo(A)*/listOf(/*p:foo*/A()) +/*p:foo*/fun getListOfB() = /*p:foo p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.coroutines p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io p:kotlin.collections(List) p:foo(B)*/listOf(/*p:foo*/B()) /*p:foo*/fun useListOfA(a: /*p:foo*/List) {} /*p:foo*/fun useListOfB(b: /*p:foo*/List) {} diff --git a/jps-plugin/testData/incremental/lookupTracker/java/usages.kt b/jps-plugin/testData/incremental/lookupTracker/java/usages.kt index b9495b2c69a..5684b9d30d2 100644 --- a/jps-plugin/testData/incremental/lookupTracker/java/usages.kt +++ b/jps-plugin/testData/incremental/lookupTracker/java/usages.kt @@ -11,27 +11,27 @@ import baz.* /*p:bar(C)*/c./*c:bar.C*/func() /*p:bar(C) c:bar.C(B)*/c./*c:bar.C*/B() - /*p:foo p:baz 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 p:kotlin(String)*/C./*c:bar.C*/sfield - /*p:foo p:baz 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 p:kotlin(String)*/C./*c:bar.C*/sfield = /*p:kotlin(String)*/"new" - /*p:foo p:baz 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./*c:bar.C*/sfunc() - /*p:foo p:baz 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:bar.C(S)*/C./*c:bar.C*/S() + /*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.coroutines p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io p:kotlin(String)*/C./*c:bar.C*/sfield + /*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.coroutines p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io p:kotlin(String)*/C./*c:bar.C*/sfield = /*p:kotlin(String)*/"new" + /*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.coroutines p:kotlin.ranges p:kotlin.sequences p:kotlin.text 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.collections p:kotlin.coroutines p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io c:bar.C(S)*/C./*c:bar.C*/S() // inherited from I /*p:bar(C)*/c./*c:bar.C*/ifunc() - /*p:foo p:baz 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 p:kotlin(String)*/C./*c:bar.C*/isfield + /*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.coroutines p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io p:kotlin(String)*/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.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/C./*c:bar.C*/IS() + /*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.coroutines p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/C./*c:bar.C*/IS() val i: /*p:foo*/I = /*p:bar(C)*/c /*p:foo(I)*/i./*c:foo.I*/ifunc() - /*p:foo p:baz 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 p:kotlin(String)*/I./*c:foo.I*/isfield - /*p:foo p:baz 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.I(IS)*/I./*c:foo.I*/IS() + /*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.coroutines p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io p:kotlin(String)*/I./*c:foo.I*/isfield + /*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.coroutines p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io c:foo.I(IS)*/I./*c:foo.I*/IS() - /*p:foo p:baz 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*/E./*c:baz.E*/F - /*p:foo p:baz 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 p:kotlin(Int)*/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.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/E./*c:baz.E*/S./*c:baz.E*/func() + /*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.coroutines p:kotlin.ranges p:kotlin.sequences p:kotlin.text 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.collections p:kotlin.coroutines p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io p:kotlin(Int)*/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.collections p:kotlin.coroutines p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/E./*c:baz.E*/S./*c:baz.E*/func() } /*p:foo*/fun classifiers( diff --git a/jps-plugin/testData/incremental/lookupTracker/packageDeclarations/foo1.kt b/jps-plugin/testData/incremental/lookupTracker/packageDeclarations/foo1.kt index ce3b7606f8f..a6febbc6d6a 100644 --- a/jps-plugin/testData/incremental/lookupTracker/packageDeclarations/foo1.kt +++ b/jps-plugin/testData/incremental/lookupTracker/packageDeclarations/foo1.kt @@ -4,7 +4,7 @@ import bar.* import baz./*p:baz*/C /*p:foo*/val a = /*p:foo p:bar*/A() -/*p:foo*/var b: /*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*/baz./*p:baz*/B = /*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 p:baz(B)*/baz./*p:baz*/B() +/*p:foo*/var b: /*p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.coroutines p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/baz./*p:baz*/B = /*p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.coroutines p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io p:baz(B)*/baz./*p:baz*/B() /*p:foo*/fun function(p: /*p:foo p:bar*/B): /*p:foo p:bar*/B /*p:kotlin(Nothing)*/{ /*p:foo p:bar(A)*/a @@ -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 /*p:kotlin(Nothing)*/{ - /*c:foo.MyClass c:foo.MyClass(getB) 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 p:baz(B)*/b - /*p:kotlin(Nothing)*/return /*c:foo.MyClass 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*/MyClass() + /*c:foo.MyClass c:foo.MyClass(getB) p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.coroutines p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io p:baz(B)*/b + /*p:kotlin(Nothing)*/return /*c:foo.MyClass p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.coroutines p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/MyClass() } diff --git a/jps-plugin/testData/incremental/lookupTracker/syntheticProperties/usages.kt b/jps-plugin/testData/incremental/lookupTracker/syntheticProperties/usages.kt index 49a068b5e1c..a0b0b2900d2 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 = /*p:foo*/KotlinClass() /*p:(JavaClass) p:kotlin(Int)*/j./*c:JavaClass*/getFoo() - /*p:(JavaClass)*/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) + /*p:(JavaClass)*/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.coroutines p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/setFoo(2) /*p:(JavaClass) p:kotlin(Int)*/j./*c:JavaClass c:JavaClass(getFoo) c:JavaClass(getFOO) c:JavaClass(setFoo)*/foo = /*p:kotlin(Int)*/2 /*p:(JavaClass) p:kotlin(Int)*/j./*c:JavaClass c:JavaClass(getFoo) c:JavaClass(getFOO) c:JavaClass(setFoo)*/foo /*p:(JavaClass) p:kotlin(String)*/j./*c:JavaClass c:JavaClass(getBar) c:JavaClass(getBAR) c:JavaClass(setBar)*/bar /*p:(JavaClass) p:kotlin(String)*/j./*c:JavaClass c:JavaClass(getBar) c:JavaClass(getBAR) c:JavaClass(setBar)*/bar = /*p:kotlin(String)*/"" - /*p:(JavaClass)*/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 - /*p:(JavaClass)*/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 = /*p:kotlin(String)*/"" + /*p:(JavaClass)*/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.coroutines p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/bazBaz + /*p:(JavaClass)*/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.coroutines p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/bazBaz = /*p:kotlin(String)*/"" /*p:(JavaClass)*/j./*c:JavaClass*/setBoo(2) - /*p:(JavaClass)*/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 = /*p:kotlin(Int)*/2 + /*p:(JavaClass)*/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.coroutines p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/boo = /*p:kotlin(Int)*/2 /*p:foo(KotlinClass) p:kotlin(Int)*/k./*c:foo.KotlinClass c:JavaClass*/getFoo() // getFoo may be an inner class in JavaClass /*p:foo(KotlinClass)*/k./*c:foo.KotlinClass c:JavaClass*/setFoo(2) /*p:foo(KotlinClass) p:kotlin(Int)*/k./*c:foo.KotlinClass c:foo.KotlinClass(getFoo) c:foo.KotlinClass(getFOO) c:foo.KotlinClass(setFoo)*/foo = /*p:kotlin(Int)*/2 /*p:foo(KotlinClass) p:kotlin(Int)*/k./*c:foo.KotlinClass c:foo.KotlinClass(getFoo) c:foo.KotlinClass(getFOO) c:foo.KotlinClass(setFoo)*/foo /*p:foo(KotlinClass) p:kotlin(String)*/k./*c:foo.KotlinClass c:foo.KotlinClass(getBar) c:foo.KotlinClass(getBAR) c:foo.KotlinClass(setBar)*/bar /*p:foo(KotlinClass) p:kotlin(String)*/k./*c:foo.KotlinClass c:foo.KotlinClass(getBar) c:foo.KotlinClass(getBAR) c:foo.KotlinClass(setBar)*/bar = /*p:kotlin(String)*/"" - /*p:foo(KotlinClass)*/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 - /*p:foo(KotlinClass)*/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 = /*p:kotlin(String)*/"" + /*p:foo(KotlinClass)*/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.coroutines p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io c:JavaClass*/bazBaz + /*p:foo(KotlinClass)*/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.coroutines p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io c:JavaClass*/bazBaz = /*p:kotlin(String)*/"" /*p:foo(KotlinClass)*/k./*c:foo.KotlinClass c:JavaClass*/setBoo(2) - /*p:foo(KotlinClass)*/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 = /*p:kotlin(Int)*/2 + /*p:foo(KotlinClass)*/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.coroutines p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io c:JavaClass*/boo = /*p:kotlin(Int)*/2 }