From 4fe55d228fccc13c6a03f56541b355fddc57095d Mon Sep 17 00:00:00 2001 From: pyos Date: Thu, 26 Mar 2020 15:46:18 +0100 Subject: [PATCH] JVM_IR: delay writes to the source map until `generateMethod` `generateMethodNode` should not have any side effects for the output to be stable under incremental compilation. Original commit: 9ed73439f83688cbb46db5f197a2fe74049df5f4 --- .../inlineFunctionRegeneratedObjectStability/a.kt | 3 +++ .../inlineFunctionRegeneratedObjectStability/b.kt | 7 +++++++ .../inlineFunctionRegeneratedObjectStability/b.kt.new | 7 +++++++ .../inlineFunctionRegeneratedObjectStability/build.log | 6 ++++++ .../inlineFunctionRegeneratedObjectStability/c.kt | 5 +++++ .../directives.txt | 1 + .../inlineFunctionSmapStability/a.kt | 3 +++ .../inlineFunctionSmapStability/b.kt | 7 +++++++ .../inlineFunctionSmapStability/b.kt.new | 7 +++++++ .../inlineFunctionSmapStability/build.log | 6 ++++++ .../inlineFunctionSmapStability/c.kt | 3 +++ 11 files changed, 55 insertions(+) create mode 100644 jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionRegeneratedObjectStability/a.kt create mode 100644 jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionRegeneratedObjectStability/b.kt create mode 100644 jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionRegeneratedObjectStability/b.kt.new create mode 100644 jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionRegeneratedObjectStability/build.log create mode 100644 jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionRegeneratedObjectStability/c.kt create mode 100644 jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionRegeneratedObjectStability/directives.txt create mode 100644 jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionSmapStability/a.kt create mode 100644 jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionSmapStability/b.kt create mode 100644 jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionSmapStability/b.kt.new create mode 100644 jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionSmapStability/build.log create mode 100644 jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionSmapStability/c.kt diff --git a/jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionRegeneratedObjectStability/a.kt b/jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionRegeneratedObjectStability/a.kt new file mode 100644 index 00000000000..7aadff7093a --- /dev/null +++ b/jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionRegeneratedObjectStability/a.kt @@ -0,0 +1,3 @@ +import inline1.* + +fun f() = h() diff --git a/jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionRegeneratedObjectStability/b.kt b/jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionRegeneratedObjectStability/b.kt new file mode 100644 index 00000000000..24893eca0b1 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionRegeneratedObjectStability/b.kt @@ -0,0 +1,7 @@ +package inline1 + +import inline2.* + +fun g() = h() + +inline fun h() = root { "OK" } diff --git a/jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionRegeneratedObjectStability/b.kt.new b/jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionRegeneratedObjectStability/b.kt.new new file mode 100644 index 00000000000..70a33ea0c38 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionRegeneratedObjectStability/b.kt.new @@ -0,0 +1,7 @@ +package inline1 + +import inline2.* + +fun g() = h() + "!" + +inline fun h() = root { "OK" } diff --git a/jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionRegeneratedObjectStability/build.log b/jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionRegeneratedObjectStability/build.log new file mode 100644 index 00000000000..c838ee57b45 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionRegeneratedObjectStability/build.log @@ -0,0 +1,6 @@ +================ Step #1 ================= +Compiling files: + src/b.kt +End of files +Exit code: OK +------------------------------------------ diff --git a/jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionRegeneratedObjectStability/c.kt b/jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionRegeneratedObjectStability/c.kt new file mode 100644 index 00000000000..318b4ec6337 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionRegeneratedObjectStability/c.kt @@ -0,0 +1,5 @@ +package inline2 + +inline fun root(crossinline x: () -> String) = object { + fun run() = x() +}.run() diff --git a/jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionRegeneratedObjectStability/directives.txt b/jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionRegeneratedObjectStability/directives.txt new file mode 100644 index 00000000000..2323594d941 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionRegeneratedObjectStability/directives.txt @@ -0,0 +1 @@ +// IGNORE_BACKEND: JVM \ No newline at end of file diff --git a/jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionSmapStability/a.kt b/jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionSmapStability/a.kt new file mode 100644 index 00000000000..7aadff7093a --- /dev/null +++ b/jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionSmapStability/a.kt @@ -0,0 +1,3 @@ +import inline1.* + +fun f() = h() diff --git a/jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionSmapStability/b.kt b/jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionSmapStability/b.kt new file mode 100644 index 00000000000..bca02800969 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionSmapStability/b.kt @@ -0,0 +1,7 @@ +package inline1 + +import inline2.* + +fun g() = root() + +inline fun h() = root() diff --git a/jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionSmapStability/b.kt.new b/jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionSmapStability/b.kt.new new file mode 100644 index 00000000000..439c9780e77 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionSmapStability/b.kt.new @@ -0,0 +1,7 @@ +package inline1 + +import inline2.* + +fun g() = root() + "!" + +inline fun h() = root() diff --git a/jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionSmapStability/build.log b/jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionSmapStability/build.log new file mode 100644 index 00000000000..c838ee57b45 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionSmapStability/build.log @@ -0,0 +1,6 @@ +================ Step #1 ================= +Compiling files: + src/b.kt +End of files +Exit code: OK +------------------------------------------ diff --git a/jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionSmapStability/c.kt b/jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionSmapStability/c.kt new file mode 100644 index 00000000000..78ce0b545f7 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/incrementalJvmCompilerOnly/inlineFunctionSmapStability/c.kt @@ -0,0 +1,3 @@ +package inline2 + +inline fun root() = "OK"