Support new targets in KotlinBytecodeToolWindow

#KT-30222 Fixed
This commit is contained in:
Mikhael Bogdanov
2021-02-17 10:31:44 +01:00
parent 91f1cb88c1
commit 61fce74b76
@@ -15,6 +15,7 @@ import com.intellij.openapi.editor.ScrollType
import com.intellij.openapi.fileEditor.FileEditorManager import com.intellij.openapi.fileEditor.FileEditorManager
import com.intellij.openapi.progress.ProcessCanceledException import com.intellij.openapi.progress.ProcessCanceledException
import com.intellij.openapi.project.Project import com.intellij.openapi.project.Project
import com.intellij.openapi.ui.ComboBox
import com.intellij.openapi.ui.Messages import com.intellij.openapi.ui.Messages
import com.intellij.openapi.util.Computable import com.intellij.openapi.util.Computable
import com.intellij.openapi.util.Pair import com.intellij.openapi.util.Pair
@@ -51,9 +52,7 @@ import java.awt.FlowLayout
import java.io.PrintWriter import java.io.PrintWriter
import java.io.StringWriter import java.io.StringWriter
import java.util.* import java.util.*
import javax.swing.JButton import javax.swing.*
import javax.swing.JCheckBox
import javax.swing.JPanel
import kotlin.math.min import kotlin.math.min
sealed class BytecodeGenerationResult { sealed class BytecodeGenerationResult {
@@ -68,7 +67,7 @@ class KotlinBytecodeToolWindow(private val myProject: Project, private val toolW
private val enableOptimization: JCheckBox private val enableOptimization: JCheckBox
private val enableAssertions: JCheckBox private val enableAssertions: JCheckBox
private val decompile: JButton private val decompile: JButton
private val jvm8Target: JCheckBox private val jvmTargets: JComboBox<String>
private val ir: JCheckBox private val ir: JCheckBox
private inner class UpdateBytecodeToolWindowTask : LongRunningReadTask<Location, BytecodeGenerationResult>(this) { private inner class UpdateBytecodeToolWindowTask : LongRunningReadTask<Location, BytecodeGenerationResult>(this) {
@@ -114,9 +113,7 @@ class KotlinBytecodeToolWindow(private val myProject: Project, private val toolW
configuration.put(JVMConfigurationKeys.DISABLE_OPTIMIZATION, true) configuration.put(JVMConfigurationKeys.DISABLE_OPTIMIZATION, true)
} }
if (jvm8Target.isSelected) { configuration.put(JVMConfigurationKeys.JVM_TARGET, JvmTarget.fromString(jvmTargets.selectedItem as String)!!)
configuration.put(JVMConfigurationKeys.JVM_TARGET, JvmTarget.JVM_1_8)
}
if (ir.isSelected) { if (ir.isSelected) {
configuration.put(JVMConfigurationKeys.IR, true) configuration.put(JVMConfigurationKeys.IR, true)
@@ -207,13 +204,16 @@ class KotlinBytecodeToolWindow(private val myProject: Project, private val toolW
enableInline = JCheckBox(KotlinJvmBundle.message("checkbox.text.inline"), true) enableInline = JCheckBox(KotlinJvmBundle.message("checkbox.text.inline"), true)
enableOptimization = JCheckBox(KotlinJvmBundle.message("checkbox.text.optimization"), true) enableOptimization = JCheckBox(KotlinJvmBundle.message("checkbox.text.optimization"), true)
enableAssertions = JCheckBox(KotlinJvmBundle.message("checkbox.text.assertions"), true) enableAssertions = JCheckBox(KotlinJvmBundle.message("checkbox.text.assertions"), true)
jvm8Target = JCheckBox(KotlinJvmBundle.message("checkbox.text.jvm.8.target"), false) jvmTargets = ComboBox(JvmTarget.values().map { it.description }.toTypedArray())
jvmTargets.selectedItem = JvmTarget.DEFAULT.description
ir = JCheckBox(KotlinJvmBundle.message("checkbox.text.ir"), false) ir = JCheckBox(KotlinJvmBundle.message("checkbox.text.ir"), false)
optionPanel.add(enableInline) optionPanel.add(enableInline)
optionPanel.add(enableOptimization) optionPanel.add(enableOptimization)
optionPanel.add(enableAssertions) optionPanel.add(enableAssertions)
optionPanel.add(ir) optionPanel.add(ir)
optionPanel.add(jvm8Target)
optionPanel.add(JLabel("Target:"))
optionPanel.add(jvmTargets)
InfinitePeriodicalTask( InfinitePeriodicalTask(
UPDATE_DELAY.toLong(), UPDATE_DELAY.toLong(),