From 8f05bad893c78aabaf95e6ae3a9a3e0c10cbd00b Mon Sep 17 00:00:00 2001 From: Dmitry Petrov Date: Wed, 17 May 2017 13:02:18 +0300 Subject: [PATCH] Fix incremental compilation problems related to type alias constructors 1. Determine source element for descriptors with NO_SOURCE recursively. 2. Always provide type abbreviation for type alias constructor return type. #KT-15495 Fixed Original commit: a2db4dc0d52765fe2e99d06084d797796f4d8439 --- .../ExperimentalIncrementalJpsTestGenerated.java | 12 ++++++++++++ .../jps/build/IncrementalJpsTestGenerated.java | 12 ++++++++++++ .../pureKotlin/internalTypealias/TypeAlias.kt | 3 ++- .../pureKotlin/internalTypealias/useTypeAlias.kt | 4 ++++ .../internalTypealiasConstructor/TypeAlias.kt | 6 ++++++ .../internalTypealiasConstructor/build.log | 11 +++++++++++ .../useTypeAliasConstructor.kt | 4 ++++ .../useTypeAliasConstructor.kt.touch | 0 .../pureKotlin/internalTypealiasObject/TypeAlias.kt | 8 ++++++++ .../pureKotlin/internalTypealiasObject/build.log | 11 +++++++++++ .../internalTypealiasObject/useTypeAliasObject.kt | 4 ++++ .../useTypeAliasObject.kt.touch | 0 12 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 jps/jps-plugin/testData/incremental/pureKotlin/internalTypealiasConstructor/TypeAlias.kt create mode 100644 jps/jps-plugin/testData/incremental/pureKotlin/internalTypealiasConstructor/build.log create mode 100644 jps/jps-plugin/testData/incremental/pureKotlin/internalTypealiasConstructor/useTypeAliasConstructor.kt create mode 100644 jps/jps-plugin/testData/incremental/pureKotlin/internalTypealiasConstructor/useTypeAliasConstructor.kt.touch create mode 100644 jps/jps-plugin/testData/incremental/pureKotlin/internalTypealiasObject/TypeAlias.kt create mode 100644 jps/jps-plugin/testData/incremental/pureKotlin/internalTypealiasObject/build.log create mode 100644 jps/jps-plugin/testData/incremental/pureKotlin/internalTypealiasObject/useTypeAliasObject.kt create mode 100644 jps/jps-plugin/testData/incremental/pureKotlin/internalTypealiasObject/useTypeAliasObject.kt.touch diff --git a/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/ExperimentalIncrementalJpsTestGenerated.java b/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/ExperimentalIncrementalJpsTestGenerated.java index d9e707398a3..f349f6d69bc 100644 --- a/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/ExperimentalIncrementalJpsTestGenerated.java +++ b/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/ExperimentalIncrementalJpsTestGenerated.java @@ -557,6 +557,18 @@ public class ExperimentalIncrementalJpsTestGenerated extends AbstractExperimenta doTest(fileName); } + @TestMetadata("internalTypealiasConstructor") + public void testInternalTypealiasConstructor() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/pureKotlin/internalTypealiasConstructor/"); + doTest(fileName); + } + + @TestMetadata("internalTypealiasObject") + public void testInternalTypealiasObject() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/pureKotlin/internalTypealiasObject/"); + doTest(fileName); + } + @TestMetadata("localClassChanged") public void testLocalClassChanged() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/pureKotlin/localClassChanged/"); diff --git a/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java b/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java index dd59d1607f9..2d994d90d2e 100644 --- a/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java +++ b/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java @@ -557,6 +557,18 @@ public class IncrementalJpsTestGenerated extends AbstractIncrementalJpsTest { doTest(fileName); } + @TestMetadata("internalTypealiasConstructor") + public void testInternalTypealiasConstructor() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/pureKotlin/internalTypealiasConstructor/"); + doTest(fileName); + } + + @TestMetadata("internalTypealiasObject") + public void testInternalTypealiasObject() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/pureKotlin/internalTypealiasObject/"); + doTest(fileName); + } + @TestMetadata("localClassChanged") public void testLocalClassChanged() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/pureKotlin/localClassChanged/"); diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/internalTypealias/TypeAlias.kt b/jps/jps-plugin/testData/incremental/pureKotlin/internalTypealias/TypeAlias.kt index 43ff16c5829..4e3c78d004d 100644 --- a/jps/jps-plugin/testData/incremental/pureKotlin/internalTypealias/TypeAlias.kt +++ b/jps/jps-plugin/testData/incremental/pureKotlin/internalTypealias/TypeAlias.kt @@ -1,3 +1,4 @@ package foo -internal typealias TypeAlias = Int \ No newline at end of file +internal typealias TypeAlias = Int +internal typealias TypeAlias2 = TypeAlias \ No newline at end of file diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/internalTypealias/useTypeAlias.kt b/jps/jps-plugin/testData/incremental/pureKotlin/internalTypealias/useTypeAlias.kt index 2cd8e56b071..03499eba7be 100644 --- a/jps/jps-plugin/testData/incremental/pureKotlin/internalTypealias/useTypeAlias.kt +++ b/jps/jps-plugin/testData/incremental/pureKotlin/internalTypealias/useTypeAlias.kt @@ -2,4 +2,8 @@ package foo internal fun useTypeAlias(x: TypeAlias) { x.toString() +} + +internal fun useTypeAlias2(x: TypeAlias2) { + x.toString() } \ No newline at end of file diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/internalTypealiasConstructor/TypeAlias.kt b/jps/jps-plugin/testData/incremental/pureKotlin/internalTypealiasConstructor/TypeAlias.kt new file mode 100644 index 00000000000..6f139507e8f --- /dev/null +++ b/jps/jps-plugin/testData/incremental/pureKotlin/internalTypealiasConstructor/TypeAlias.kt @@ -0,0 +1,6 @@ +package test + +class C + +internal typealias CAlias = C +internal typealias CAlias2 = CAlias \ No newline at end of file diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/internalTypealiasConstructor/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/internalTypealiasConstructor/build.log new file mode 100644 index 00000000000..5a335ab7fa8 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/pureKotlin/internalTypealiasConstructor/build.log @@ -0,0 +1,11 @@ +================ Step #1 ================= + +Cleaning output files: + out/production/module/META-INF/module.kotlin_module + out/production/module/test/UseTypeAliasConstructorKt.class +End of files +Compiling files: + src/useTypeAliasConstructor.kt +End of files +Exit code: OK +------------------------------------------ \ No newline at end of file diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/internalTypealiasConstructor/useTypeAliasConstructor.kt b/jps/jps-plugin/testData/incremental/pureKotlin/internalTypealiasConstructor/useTypeAliasConstructor.kt new file mode 100644 index 00000000000..7579f4a453d --- /dev/null +++ b/jps/jps-plugin/testData/incremental/pureKotlin/internalTypealiasConstructor/useTypeAliasConstructor.kt @@ -0,0 +1,4 @@ +package test + +val c = CAlias() +val c2 = CAlias2() \ No newline at end of file diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/internalTypealiasConstructor/useTypeAliasConstructor.kt.touch b/jps/jps-plugin/testData/incremental/pureKotlin/internalTypealiasConstructor/useTypeAliasConstructor.kt.touch new file mode 100644 index 00000000000..e69de29bb2d diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/internalTypealiasObject/TypeAlias.kt b/jps/jps-plugin/testData/incremental/pureKotlin/internalTypealiasObject/TypeAlias.kt new file mode 100644 index 00000000000..12e479b2785 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/pureKotlin/internalTypealiasObject/TypeAlias.kt @@ -0,0 +1,8 @@ +package test + +class C { + companion object +} + +internal typealias CAlias = C +internal typealias CAlias2 = CAlias \ No newline at end of file diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/internalTypealiasObject/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/internalTypealiasObject/build.log new file mode 100644 index 00000000000..245b2ea5428 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/pureKotlin/internalTypealiasObject/build.log @@ -0,0 +1,11 @@ +================ Step #1 ================= + +Cleaning output files: + out/production/module/META-INF/module.kotlin_module + out/production/module/test/UseTypeAliasObjectKt.class +End of files +Compiling files: + src/useTypeAliasObject.kt +End of files +Exit code: OK +------------------------------------------ \ No newline at end of file diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/internalTypealiasObject/useTypeAliasObject.kt b/jps/jps-plugin/testData/incremental/pureKotlin/internalTypealiasObject/useTypeAliasObject.kt new file mode 100644 index 00000000000..93e0cb1c07d --- /dev/null +++ b/jps/jps-plugin/testData/incremental/pureKotlin/internalTypealiasObject/useTypeAliasObject.kt @@ -0,0 +1,4 @@ +package test + +val cc = CAlias +val cc2 = CAlias2 \ No newline at end of file diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/internalTypealiasObject/useTypeAliasObject.kt.touch b/jps/jps-plugin/testData/incremental/pureKotlin/internalTypealiasObject/useTypeAliasObject.kt.touch new file mode 100644 index 00000000000..e69de29bb2d