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 05b25ad36e7..c7140778b73 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/state/GenerationState.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/state/GenerationState.kt @@ -155,10 +155,11 @@ class GenerationState @JvmOverloads constructor( val isInlineDisabled: Boolean = configuration.getBoolean(CommonConfigurationKeys.DISABLE_INLINE) val useTypeTableInSerializer: Boolean = configuration.getBoolean(JVMConfigurationKeys.USE_TYPE_TABLE) val inheritMultifileParts: Boolean = configuration.getBoolean(JVMConfigurationKeys.INHERIT_MULTIFILE_PARTS) + val isJvm8Target: Boolean = configuration.getBoolean(JVMConfigurationKeys.JVM_8_TARGET) val rootContext: CodegenContext<*> = RootContext(this) - val classFileVersion: Int = Opcodes.V1_6 + val classFileVersion: Int = if (isJvm8Target) Opcodes.V1_8 else Opcodes.V1_6 init { this.interceptedBuilderFactory = builderFactory diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/config/JVMConfigurationKeys.java b/compiler/frontend.java/src/org/jetbrains/kotlin/config/JVMConfigurationKeys.java index 6cd5d129f8d..8c688c55336 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/config/JVMConfigurationKeys.java +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/config/JVMConfigurationKeys.java @@ -57,6 +57,9 @@ public class JVMConfigurationKeys { public static final CompilerConfigurationKey USE_TYPE_TABLE = CompilerConfigurationKey.create("use type table in serializer"); + public static final CompilerConfigurationKey JVM_8_TARGET = + CompilerConfigurationKey.create("compile to jvm 8"); + public static final CompilerConfigurationKey INCREMENTAL_COMPILATION_COMPONENTS = CompilerConfigurationKey.create("incremental cache provider"); diff --git a/idea/src/org/jetbrains/kotlin/idea/internal/KotlinBytecodeToolWindow.java b/idea/src/org/jetbrains/kotlin/idea/internal/KotlinBytecodeToolWindow.java index f86f7393fbb..7ae8c980b2f 100644 --- a/idea/src/org/jetbrains/kotlin/idea/internal/KotlinBytecodeToolWindow.java +++ b/idea/src/org/jetbrains/kotlin/idea/internal/KotlinBytecodeToolWindow.java @@ -127,6 +127,10 @@ public class KotlinBytecodeToolWindow extends JPanel implements Disposable { configuration.put(JVMConfigurationKeys.DISABLE_OPTIMIZATION, true); } + if (jvm8Target.isSelected()) { + configuration.put(JVMConfigurationKeys.JVM_8_TARGET, true); + } + return getBytecodeForFile(ktFile, configuration); } @@ -175,6 +179,7 @@ public class KotlinBytecodeToolWindow extends JPanel implements Disposable { private final JCheckBox enableOptimization; private final JCheckBox enableAssertions; private final JButton decompile; + private final JCheckBox jvm8Target; public KotlinBytecodeToolWindow(Project project, ToolWindow toolWindow) { super(new BorderLayout()); @@ -213,9 +218,11 @@ public class KotlinBytecodeToolWindow extends JPanel implements Disposable { enableInline = new JCheckBox("Inline", true); enableOptimization = new JCheckBox("Optimization", true); enableAssertions = new JCheckBox("Assertions", true); + jvm8Target = new JCheckBox("JVM 8 target", false); optionPanel.add(enableInline); optionPanel.add(enableOptimization); optionPanel.add(enableAssertions); + optionPanel.add(jvm8Target); new InfinitePeriodicalTask(UPDATE_DELAY, Alarm.ThreadToUse.SWING_THREAD, this, new Computable() { @Override