From 0ccaf43e2ce985ffaa870de8ba53cf4160d95764 Mon Sep 17 00:00:00 2001 From: Dmitry Petrov Date: Wed, 16 Mar 2016 12:02:48 +0300 Subject: [PATCH] KT-11410: Add Xmultifile-parts-inherit CLI option. --- .../org/jetbrains/kotlin/codegen/state/GenerationState.kt | 3 ++- .../kotlin/cli/common/arguments/K2JVMCompilerArguments.java | 5 ++++- .../cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.kt | 1 + .../kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt | 5 +---- .../kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt | 1 + .../kotlin/cli/jvm/config/JVMConfigurationKeys.java | 2 ++ compiler/testData/cli/jvm/extraHelp.out | 1 + 7 files changed, 12 insertions(+), 6 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/state/GenerationState.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/state/GenerationState.kt index 694fc6b10a4..df6ce7f8d01 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/state/GenerationState.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/state/GenerationState.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2016 JetBrains s.r.o. + * Copyright 2010-2015 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. @@ -57,6 +57,7 @@ class GenerationState @JvmOverloads constructor( disableInline: Boolean = false, disableOptimization: Boolean = false, val useTypeTableInSerializer: Boolean = false, + val inheritMultifileParts: Boolean = false, val packagesWithObsoleteParts: Collection = emptySet(), val obsoleteMultifileClasses: Collection = emptySet(), // for PackageCodegen in incremental compilation mode 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 06122c963a5..e271f29efe7 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 @@ -1,5 +1,5 @@ /* - * Copyright 2010-2016 JetBrains s.r.o. + * Copyright 2010-2015 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. @@ -64,6 +64,9 @@ public class K2JVMCompilerArguments extends CommonCompilerArguments { @Argument(value = "Xreport-perf", description = "Report detailed performance statistics") public boolean reportPerf; + @Argument(value = "Xmultifile-parts-inherit", description = "Compile multifile classes as a hierarchy of parts and facade") + public boolean inheritMultifileParts; + @Argument(value = "Xallow-kotlin-package", description = "Allow compiling code in package 'kotlin'") public boolean allowKotlinPackage; 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 a9abe00cf2a..30275344b7f 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.kt @@ -280,6 +280,7 @@ open class K2JVMCompiler : CLICompiler() { configuration.put(JVMConfigurationKeys.DISABLE_INLINE, arguments.noInline) configuration.put(JVMConfigurationKeys.DISABLE_OPTIMIZATION, arguments.noOptimize) configuration.put(JVMConfigurationKeys.DECLARATIONS_JSON_PATH, arguments.declarationsOutputPath) + configuration.put(JVMConfigurationKeys.INHERIT_MULTIFILE_PARTS, arguments.inheritMultifileParts); 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/KotlinCoreEnvironment.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt index 305f6259cfc..e7325534bea 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt @@ -109,10 +109,7 @@ class KotlinCoreEnvironment private constructor( private val sourceFiles = ArrayList() private val javaRoots = ArrayList() - val configuration: CompilerConfiguration = configuration.copy().let { - it.setReadOnly(true) - it - } + val configuration: CompilerConfiguration = configuration.copy().apply { setReadOnly(true) } init { PersistentFSConstants.setMaxIntellisenseFileSize(FileUtilRt.LARGE_FOR_CONTENT_LOADING) 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 1d7995965cb..3d5d50e2d3d 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,6 +399,7 @@ object KotlinToJVMBytecodeCompiler { configuration.get(JVMConfigurationKeys.DISABLE_INLINE, false), configuration.get(JVMConfigurationKeys.DISABLE_OPTIMIZATION, false), /* useTypeTableInSerializer = */ false, + configuration.get(JVMConfigurationKeys.INHERIT_MULTIFILE_PARTS, false), packagesWithObsoleteParts, obsoleteMultifileClasses, targetId, 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 822f6fcf096..512aa04c129 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 @@ -35,6 +35,8 @@ public class JVMConfigurationKeys { CompilerConfigurationKey.create("disable inline"); public static final CompilerConfigurationKey DISABLE_OPTIMIZATION = CompilerConfigurationKey.create("disable optimization"); + public static final CompilerConfigurationKey INHERIT_MULTIFILE_PARTS = + CompilerConfigurationKey.create("compile multifile classes to a hierarchy of parts and facade"); public static final CompilerConfigurationKey INCREMENTAL_COMPILATION_COMPONENTS = CompilerConfigurationKey.create("incremental cache provider"); diff --git a/compiler/testData/cli/jvm/extraHelp.out b/compiler/testData/cli/jvm/extraHelp.out index 304babaa76b..6aa3bb1387b 100644 --- a/compiler/testData/cli/jvm/extraHelp.out +++ b/compiler/testData/cli/jvm/extraHelp.out @@ -4,6 +4,7 @@ where advanced options include: -Xno-param-assertions Don't generate not-null assertions on parameters of methods accessible from Java -Xno-optimize Disable optimizations -Xreport-perf Report detailed performance statistics + -Xmultifile-parts-inherit Compile multifile classes as a hierarchy of parts and facade -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