From e7d75fccd66dc585fa7834d36f8c8e366c5778c0 Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Tue, 15 Mar 2016 18:39:43 +0300 Subject: [PATCH] Introduce compiler option to dump declaration mapping. --- build.xml | 2 +- .../kotlin/cli/common/arguments/K2JVMCompilerArguments.java | 4 ++++ .../cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.kt | 1 + .../kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt | 2 +- .../kotlin/cli/jvm/config/JVMConfigurationKeys.java | 2 ++ compiler/testData/cli/jvm/extraHelp.out | 1 + libraries/stdlib/pom.xml | 6 ++++++ libraries/tools/runtime/pom.xml | 6 ++++++ 8 files changed, 22 insertions(+), 2 deletions(-) diff --git a/build.xml b/build.xml index 24113d25452..45e1f49f2e3 100644 --- a/build.xml +++ b/build.xml @@ -877,7 +877,7 @@ - + diff --git a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2JVMCompilerArguments.java b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2JVMCompilerArguments.java index fe815fc5e1a..06122c963a5 100644 --- a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2JVMCompilerArguments.java +++ b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2JVMCompilerArguments.java @@ -70,6 +70,10 @@ public class K2JVMCompilerArguments extends CommonCompilerArguments { @Argument(value = "Xskip-metadata-version-check", description = "Try loading binary incompatible classes, may cause crashes") public boolean skipMetadataVersionCheck; + @Argument(value = "Xdump-declarations-to", description = "Path to JSON file to dump Java to Kotlin declaration mappings") + @ValueDescription("") + public String declarationsOutputPath; + // Paths to output directories for friend modules. public String[] friendPaths; diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.kt index cc69d7bfc12..a9abe00cf2a 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.kt @@ -279,6 +279,7 @@ open class K2JVMCompiler : CLICompiler() { configuration.put(JVMConfigurationKeys.DISABLE_PARAM_ASSERTIONS, arguments.noParamAssertions) configuration.put(JVMConfigurationKeys.DISABLE_INLINE, arguments.noInline) configuration.put(JVMConfigurationKeys.DISABLE_OPTIMIZATION, arguments.noOptimize) + configuration.put(JVMConfigurationKeys.DECLARATIONS_JSON_PATH, arguments.declarationsOutputPath) configuration.put(CLIConfigurationKeys.ALLOW_KOTLIN_PACKAGE, arguments.allowKotlinPackage); configuration.put(CLIConfigurationKeys.REPORT_PERF, arguments.reportPerf); } diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt index c83ab6d767b..83b69406654 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt @@ -399,7 +399,7 @@ object KotlinToJVMBytecodeCompiler { outputDirectory, incrementalCompilationComponents, onIndependentPartCompilationEnd = onIndependentPartCompilationEnd, - dumpBinarySignatureMappingTo = outputDirectory?.resolve("binary-signatures.json") ?: createTempFile("binary-signatures", ".json")) + dumpBinarySignatureMappingTo = configuration.get(JVMConfigurationKeys.DECLARATIONS_JSON_PATH)?.let { File(it) }) ProgressIndicatorAndCompilationCanceledStatus.checkCanceled() val generationStart = PerformanceCounter.currentTime() diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/config/JVMConfigurationKeys.java b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/config/JVMConfigurationKeys.java index 017e3855bb5..822f6fcf096 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/config/JVMConfigurationKeys.java +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/config/JVMConfigurationKeys.java @@ -44,6 +44,8 @@ public class JVMConfigurationKeys { public static final CompilerConfigurationKey MODULE_XML_FILE_PATH = CompilerConfigurationKey.create("path to module.xml"); + public static final CompilerConfigurationKey DECLARATIONS_JSON_PATH = CompilerConfigurationKey.create("path to declarations output"); + public static final CompilerConfigurationKey> MODULES = CompilerConfigurationKey.create("module data"); diff --git a/compiler/testData/cli/jvm/extraHelp.out b/compiler/testData/cli/jvm/extraHelp.out index 5fc5bb08c94..304babaa76b 100644 --- a/compiler/testData/cli/jvm/extraHelp.out +++ b/compiler/testData/cli/jvm/extraHelp.out @@ -6,6 +6,7 @@ where advanced options include: -Xreport-perf Report detailed performance statistics -Xallow-kotlin-package Allow compiling code in package 'kotlin' -Xskip-metadata-version-check Try loading binary incompatible classes, may cause crashes + -Xdump-declarations-to Path to JSON file to dump Java to Kotlin declaration mappings -Xno-inline Disable method inlining -Xrepeat Repeat compilation (for performance analysis) -Xplugin Load plugins from the given classpath diff --git a/libraries/stdlib/pom.xml b/libraries/stdlib/pom.xml index fdd3909b08a..a7a33278a48 100644 --- a/libraries/stdlib/pom.xml +++ b/libraries/stdlib/pom.xml @@ -50,6 +50,12 @@ compile + + + -Xdump-declarations-to + ${basedir}/target/stdlib-declarations.json + + diff --git a/libraries/tools/runtime/pom.xml b/libraries/tools/runtime/pom.xml index 806ce7df167..b9c8d229970 100644 --- a/libraries/tools/runtime/pom.xml +++ b/libraries/tools/runtime/pom.xml @@ -103,6 +103,12 @@ compile + + + -Xdump-declarations-to + ${basedir}/target/runtime-declarations.json + +