JVM IR: output stable ABI binaries by default

#KT-43592 Fixed
This commit is contained in:
Alexander Udalov
2020-12-01 18:53:50 +01:00
parent e0593ff70f
commit eef06cded3
39 changed files with 117 additions and 44 deletions
@@ -0,0 +1,5 @@
$TESTDATA_DIR$/simple.kt
-d
$TEMP_DIR$
-Xuse-ir
-Xabi-stability=unknown
@@ -0,0 +1,2 @@
error: unknown ABI stability mode: unknown, supported modes: [stable, unstable]
COMPILATION_ERROR
@@ -0,0 +1,4 @@
$TESTDATA_DIR$/simple.kt
-d
$TEMP_DIR$
-Xabi-stability=unstable
@@ -0,0 +1,2 @@
error: -Xabi-stability=unstable is not supported in the old JVM backend
COMPILATION_ERROR
+3 -2
View File
@@ -1,9 +1,10 @@
Usage: kotlinc-jvm <options> <source files>
where advanced options include:
-Xabi-stability={stable|unstable}
When using unstable compiler features such as FIR or JVM IR, use 'stable' to mark generated class files as stable
When using unstable compiler features such as FIR, use 'stable' to mark generated class files as stable
to prevent diagnostics from stable compilers at the call site.
When using the JVM IR backend, conversely, use 'unstable' to mark generated class files as unstable
to force diagnostics to be reported.
-Xadd-modules=<module[,]> Root modules to resolve in addition to the initial modules,
or all modules on the module path if <module> is ALL-MODULE-PATH
-Xallow-no-source-files Allow no source files
@@ -1,8 +0,0 @@
error: classes compiled by a new Kotlin compiler backend were found in dependencies. Remove them from the classpath or use '-Xallow-jvm-ir-dependencies' to suppress errors
compiler/testData/compileKotlinAgainstCustomBinaries/oldAgainstJvmIr/source.kt:4:5: error: class 'lib.AKt' is compiled by a new Kotlin compiler backend and cannot be loaded by the old compiler
get { Box("OK").value }
^
compiler/testData/compileKotlinAgainstCustomBinaries/oldAgainstJvmIr/source.kt:4:11: error: class 'lib.Box' is compiled by a new Kotlin compiler backend and cannot be loaded by the old compiler
get { Box("OK").value }
^
COMPILATION_ERROR
@@ -0,0 +1,8 @@
error: classes compiled by the new Kotlin compiler frontend were found in dependencies. Remove them from the classpath or use '-Xallow-unstable-dependencies' to suppress errors
compiler/testData/compileKotlinAgainstCustomBinaries/oldJvmAgainstFir/source.kt:4:5: error: class 'lib.AKt' is compiled by the new Kotlin compiler frontend and cannot be loaded by the old compiler
get { Box("OK").value }
^
compiler/testData/compileKotlinAgainstCustomBinaries/oldJvmAgainstFir/source.kt:4:11: error: class 'lib.Box' is compiled by the new Kotlin compiler frontend and cannot be loaded by the old compiler
get { Box("OK").value }
^
COMPILATION_ERROR
@@ -0,0 +1,5 @@
package lib
class Box(val value: String)
inline fun <T> get(block: () -> T): T = block()
@@ -0,0 +1,5 @@
import lib.*
fun main() {
get { Box("OK").value }
}
@@ -0,0 +1,5 @@
package lib
class Box(val value: String)
inline fun <T> get(block: () -> T): T = block()
@@ -0,0 +1,8 @@
error: classes compiled by an unstable version of the Kotlin compiler were found in dependencies. Remove them from the classpath or use '-Xallow-unstable-dependencies' to suppress errors
compiler/testData/compileKotlinAgainstCustomBinaries/oldJvmAgainstJvmIrWithUnstableAbi/source.kt:4:5: error: class 'lib.AKt' is compiled by an unstable version of the Kotlin compiler and cannot be loaded by this compiler
get { Box("OK").value }
^
compiler/testData/compileKotlinAgainstCustomBinaries/oldJvmAgainstJvmIrWithUnstableAbi/source.kt:4:11: error: class 'lib.Box' is compiled by an unstable version of the Kotlin compiler and cannot be loaded by this compiler
get { Box("OK").value }
^
COMPILATION_ERROR
@@ -0,0 +1,5 @@
import lib.*
fun main() {
get { Box("OK").value }
}