Introduce Variable: Fix exception on trying to extract variable of functional type

#KT-14004 Fixed
This commit is contained in:
Alexey Sedunov
2016-09-23 15:32:55 +03:00
parent 06936328ab
commit ca482c32c6
2 changed files with 18 additions and 15 deletions

View File

@@ -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

View File

@@ -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
}