diff --git a/idea/src/org/jetbrains/jet/plugin/intentions/SpecifyTypeExplicitlyAction.java b/idea/src/org/jetbrains/jet/plugin/intentions/SpecifyTypeExplicitlyAction.java index 66fc2a98241..e88c3c5f4fc 100644 --- a/idea/src/org/jetbrains/jet/plugin/intentions/SpecifyTypeExplicitlyAction.java +++ b/idea/src/org/jetbrains/jet/plugin/intentions/SpecifyTypeExplicitlyAction.java @@ -142,15 +142,24 @@ public class SpecifyTypeExplicitlyAction extends PsiElementBaseIntentionAction { PsiElement anchor = property.getNameIdentifier(); if (anchor == null) return; anchor = anchor.getNextSibling(); - if (anchor == null || !(anchor instanceof PsiWhiteSpace)) return; + if (anchor != null) { + if (!(anchor instanceof PsiWhiteSpace)) { + return; + } + } JetTypeReference typeReference = JetPsiFactory.createType(project, DescriptorRenderer.TEXT.renderType(exprType)); ASTNode colon = JetPsiFactory.createColonNode(project); - ASTNode anchorNode = anchor.getNode().getTreeNext(); + ASTNode anchorNode = anchor == null ? null : anchor.getNode().getTreeNext(); + if (anchor == null) { + property.getNode().addChild(JetPsiFactory.createWhiteSpace(project).getNode(), anchorNode); + } property.getNode().addChild(colon, anchorNode); property.getNode().addChild(JetPsiFactory.createWhiteSpace(project).getNode(), anchorNode); property.getNode().addChild(typeReference.getNode(), anchorNode); property.getNode().addChild(JetPsiFactory.createWhiteSpace(project).getNode(), anchorNode); - anchor.delete(); + if (anchor != null) { + anchor.delete(); + } ReferenceToClassesShortening.compactReferenceToClasses(Collections.singletonList(property)); } diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/RemovePartsFromPropertyFix.java b/idea/src/org/jetbrains/jet/plugin/quickfix/RemovePartsFromPropertyFix.java index f67c6452cb3..cdd63eb870a 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/RemovePartsFromPropertyFix.java +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/RemovePartsFromPropertyFix.java @@ -28,6 +28,7 @@ import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.types.ErrorUtils; import org.jetbrains.jet.lang.types.JetType; import org.jetbrains.jet.plugin.JetBundle; +import org.jetbrains.jet.plugin.intentions.SpecifyTypeExplicitlyAction; /** * @author svtk @@ -105,7 +106,7 @@ public class RemovePartsFromPropertyFix extends JetIntentionAction newElement.deleteChildInternal(setter.getNode()); } JetExpression initializer = newElement.getInitializer(); - boolean needImport = false; + JetType typeToAdd = null; if (removeInitializer && initializer != null) { PsiElement nameIdentifier = newElement.getNameIdentifier(); assert nameIdentifier != null; @@ -114,14 +115,13 @@ public class RemovePartsFromPropertyFix extends JetIntentionAction newElement.deleteChildRange(nextSibling, initializer); if (newElement.getPropertyTypeRef() == null && type != null) { - newElement = AddReturnTypeFix.addPropertyType(project, newElement, type); - needImport = true; + typeToAdd = type; } } - if (needImport) { - ImportInsertHelper.addImportDirectivesIfNeeded(type, (JetFile)file); + element = (JetProperty) element.replace(newElement); + if (typeToAdd != null) { + SpecifyTypeExplicitlyAction.addTypeAnnotation(project, element, typeToAdd); } - element.replace(newElement); } public static JetIntentionActionFactory createFactory() { diff --git a/idea/testData/quickfix/abstract/afterAbstractPropertyWIthInitializer2.kt b/idea/testData/quickfix/abstract/afterAbstractPropertyWIthInitializer2.kt index 50e6e0f7847..81f638130d9 100644 --- a/idea/testData/quickfix/abstract/afterAbstractPropertyWIthInitializer2.kt +++ b/idea/testData/quickfix/abstract/afterAbstractPropertyWIthInitializer2.kt @@ -1,4 +1,4 @@ // "Remove initializer from property" "true" abstract class A { - abstract var i : Int + abstract var i : Int } diff --git a/idea/testData/quickfix/abstract/afterAbstractPropertyWIthInitializer3.kt b/idea/testData/quickfix/abstract/afterAbstractPropertyWIthInitializer3.kt index 50e6e0f7847..81f638130d9 100644 --- a/idea/testData/quickfix/abstract/afterAbstractPropertyWIthInitializer3.kt +++ b/idea/testData/quickfix/abstract/afterAbstractPropertyWIthInitializer3.kt @@ -1,4 +1,4 @@ // "Remove initializer from property" "true" abstract class A { - abstract var i : Int + abstract var i : Int } diff --git a/idea/testData/quickfix/abstract/afterAbstractPropertyWithGetter2.kt b/idea/testData/quickfix/abstract/afterAbstractPropertyWithGetter2.kt index 8e7404cd9e2..8c46acf78ae 100644 --- a/idea/testData/quickfix/abstract/afterAbstractPropertyWithGetter2.kt +++ b/idea/testData/quickfix/abstract/afterAbstractPropertyWithGetter2.kt @@ -1,5 +1,4 @@ // "Remove getter and initializer from property" "true" abstract class B { - abstract val i : Int - + abstract val i : Int } \ No newline at end of file diff --git a/idea/testData/quickfix/typeImports/afterHasThisImport.kt b/idea/testData/quickfix/typeImports/afterHasThisImport.kt index 0a46e672869..93cc34496cd 100644 --- a/idea/testData/quickfix/typeImports/afterHasThisImport.kt +++ b/idea/testData/quickfix/typeImports/afterHasThisImport.kt @@ -9,7 +9,7 @@ import java.util.List class M { trait A { - val l : List? + val l : List? } } } \ No newline at end of file diff --git a/idea/testData/quickfix/typeImports/afterNoImportJavaLang.kt b/idea/testData/quickfix/typeImports/afterNoImportJavaLang.kt index c730bfb7a63..f6840e83a1f 100644 --- a/idea/testData/quickfix/typeImports/afterNoImportJavaLang.kt +++ b/idea/testData/quickfix/typeImports/afterNoImportJavaLang.kt @@ -3,6 +3,6 @@ package a class M { trait A { - abstract val e : Exception + abstract val e : Exception } } \ No newline at end of file diff --git a/idea/testData/quickfix/typeImports/afterNoImportJetStandard.kt b/idea/testData/quickfix/typeImports/afterNoImportJetStandard.kt index 042f74ac7cb..0226b53df62 100644 --- a/idea/testData/quickfix/typeImports/afterNoImportJetStandard.kt +++ b/idea/testData/quickfix/typeImports/afterNoImportJetStandard.kt @@ -3,6 +3,6 @@ package a class M { trait A { - abstract val i : Int + abstract val i : Int } } \ No newline at end of file diff --git a/idea/testData/quickfix/typeImports/afterToImport1.kt b/idea/testData/quickfix/typeImports/afterToImport1.kt index 36072dbb45c..bc1f01048e7 100644 --- a/idea/testData/quickfix/typeImports/afterToImport1.kt +++ b/idea/testData/quickfix/typeImports/afterToImport1.kt @@ -6,6 +6,6 @@ import java.util.List class M { trait A { - abstract val l : List? + abstract val l : List? } } \ No newline at end of file