KT-9723 Completion of override property in constructor produces bad formatting

#KT-9723 Fixed
This commit is contained in:
Valentin Kipyatkov
2015-10-27 21:14:02 +03:00
parent c643eb14a1
commit acc451bc54
8 changed files with 91 additions and 3 deletions
@@ -30,6 +30,7 @@ import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
import org.jetbrains.kotlin.idea.JetDescriptorIconProvider
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
import org.jetbrains.kotlin.idea.completion.handlers.skipSpaces
import org.jetbrains.kotlin.idea.core.completion.DeclarationLookupObject
import org.jetbrains.kotlin.idea.core.overrideImplement.OverrideMembersHandler
import org.jetbrains.kotlin.idea.core.overrideImplement.generateMember
@@ -99,10 +100,11 @@ class OverridesCompletion(
}
override fun handleInsert(context: InsertionContext) {
val dummyMemberText = if (isConstructorParameter) "override val dummy" else "override fun dummy() {}"
val dummyMemberText = if (isConstructorParameter) "override val dummy: Dummy $" else "override fun dummy() {}"
context.document.replaceString(context.startOffset, context.tailOffset, dummyMemberText)
PsiDocumentManager.getInstance(context.project).commitAllDocuments()
val psiDocumentManager = PsiDocumentManager.getInstance(context.project)
psiDocumentManager.commitAllDocuments()
val dummyMember = context.file.findElementAt(context.startOffset)!!.getStrictParentOfType<KtNamedDeclaration>()!!
@@ -116,7 +118,15 @@ class OverridesCompletion(
ShortenReferences.DEFAULT.process(insertedMember)
if (isConstructorParameter) {
context.editor.moveCaret(insertedMember.endOffset)
psiDocumentManager.doPostponedOperationsAndUnblockDocument(context.document)
val offset = insertedMember.endOffset
val chars = context.document.charsSequence
val commaOffset = chars.skipSpaces(offset)
assert(chars[commaOffset] == '$') { "Incorrect char at index: '${chars[commaOffset]}', '$' expected" }
context.document.deleteString(offset, commaOffset + 1)
context.editor.moveCaret(offset)
}
else {
moveCaretIntoGeneratedElement(context.editor, insertedMember)
@@ -0,0 +1,11 @@
interface I {
val p: Int
}
class CCCC(
over<caret>
private val v1: Int,
private val v2: Int
) : I
// ELEMENT_TEXT: "override val p: Int"
@@ -0,0 +1,11 @@
interface I {
val p: Int
}
class CCCC(
override val p: Int<caret>
private val v1: Int,
private val v2: Int
) : I
// ELEMENT_TEXT: "override val p: Int"
@@ -0,0 +1,7 @@
interface I {
val p: Int
}
class CCCC(over<caret>val x: Int) : I
// ELEMENT_TEXT: "override val p: Int"
@@ -0,0 +1,7 @@
interface I {
val p: Int
}
class CCCC(override val p: Int<caret>val x: Int) : I
// ELEMENT_TEXT: "override val p: Int"
@@ -0,0 +1,12 @@
package ppp
interface I {
val p: Nested
interface Nested
}
class CCCC(over<caret>val x: Int) : I {
}
// ELEMENT_TEXT: "override val p: I.Nested"
@@ -0,0 +1,12 @@
package ppp
interface I {
val p: Nested
interface Nested
}
class CCCC(override val p: I.Nested<caret>val x: Int) : I {
}
// ELEMENT_TEXT: "override val p: I.Nested"
@@ -429,6 +429,24 @@ public class BasicCompletionHandlerTestGenerated extends AbstractBasicCompletion
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/handlers/basic/override/ValInConstructorParameter.kt");
doTest(fileName);
}
@TestMetadata("ValInConstructorParameter2.kt")
public void testValInConstructorParameter2() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/handlers/basic/override/ValInConstructorParameter2.kt");
doTest(fileName);
}
@TestMetadata("ValInConstructorParameter3.kt")
public void testValInConstructorParameter3() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/handlers/basic/override/ValInConstructorParameter3.kt");
doTest(fileName);
}
@TestMetadata("ValInConstructorParameter4.kt")
public void testValInConstructorParameter4() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/handlers/basic/override/ValInConstructorParameter4.kt");
doTest(fileName);
}
}
@TestMetadata("idea/idea-completion/testData/handlers/basic/parameterNameAndType")