mirror of
https://github.com/jlengrand/kotlin.git
synced 2026-04-04 08:31:30 +00:00
Introduce Variable: Fix exception on trying to extract variable of functional type
#KT-14004 Fixed
This commit is contained in:
@@ -141,6 +141,7 @@ These artifacts include extensions for the types available in the latter JDKs, s
|
||||
- [`KT-13901`](https://youtrack.jetbrains.com/issue/KT-13901) Move: Do not ignore target directory selected in the dialog (DnD mode)
|
||||
- [`KT-13904`](https://youtrack.jetbrains.com/issue/KT-13904) Move Nested Class to Upper Level: Preserve state of "Search in comments"/"Search for text occurrences" checkboxes
|
||||
- [`KT-13909`](https://youtrack.jetbrains.com/issue/KT-13909) Move Files/Directories: Fix behavior of "Open moved files in editor" checkbox
|
||||
- [`KT-14004`](https://youtrack.jetbrains.com/issue/KT-14004) Introduce Variable: Fix exception on trying to extract variable of functional type
|
||||
|
||||
##### New features
|
||||
|
||||
|
||||
@@ -65,7 +65,7 @@ class KotlinVariableInplaceIntroducer(
|
||||
editor
|
||||
) {
|
||||
private val suggestedNames = suggestedNames.toTypedArray()
|
||||
private lateinit var expressionTypeCheckBox: JCheckBox
|
||||
private var expressionTypeCheckBox: JCheckBox? = null
|
||||
|
||||
init {
|
||||
initFormComponents {
|
||||
@@ -86,22 +86,24 @@ class KotlinVariableInplaceIntroducer(
|
||||
}
|
||||
|
||||
if (expressionType != null && !noTypeInference) {
|
||||
expressionTypeCheckBox = NonFocusableCheckBox("Specify type explicitly")
|
||||
expressionTypeCheckBox.isSelected = false
|
||||
expressionTypeCheckBox.setMnemonic('t')
|
||||
expressionTypeCheckBox.addActionListener {
|
||||
runWriteCommandAndRestart {
|
||||
updateVariableName()
|
||||
if (expressionTypeCheckBox.isSelected) {
|
||||
val renderedType = IdeDescriptorRenderers.SOURCE_CODE_SHORT_NAMES_IN_TYPES.renderType(expressionType)
|
||||
addedVariable.setTypeReference(KtPsiFactory(myProject).createType(renderedType))
|
||||
}
|
||||
else {
|
||||
addedVariable.setTypeReference(null)
|
||||
expressionTypeCheckBox = NonFocusableCheckBox("Specify type explicitly").apply {
|
||||
isSelected = false
|
||||
setMnemonic('t')
|
||||
addActionListener {
|
||||
runWriteCommandAndRestart {
|
||||
updateVariableName()
|
||||
if (isSelected) {
|
||||
val renderedType = IdeDescriptorRenderers.SOURCE_CODE_SHORT_NAMES_IN_TYPES.renderType(expressionType)
|
||||
addedVariable.setTypeReference(KtPsiFactory(myProject).createType(renderedType))
|
||||
}
|
||||
else {
|
||||
addedVariable.setTypeReference(null)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
addComponent(this)
|
||||
}
|
||||
addComponent(expressionTypeCheckBox)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -140,7 +142,7 @@ class KotlinVariableInplaceIntroducer(
|
||||
override fun getInitialName() = super.getInitialName().quoteIfNeeded()
|
||||
|
||||
override fun updateTitle(variable: KtProperty?, value: String?) {
|
||||
expressionTypeCheckBox.isEnabled = value == null || KotlinNameSuggester.isIdentifier(value)
|
||||
expressionTypeCheckBox?.isEnabled = value == null || KotlinNameSuggester.isIdentifier(value)
|
||||
// No preview to update
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user