KT-9723 Completion of override property in constructor produces bad formatting
#KT-9723 Fixed
This commit is contained in:
+13
-3
@@ -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)
|
||||
|
||||
+11
@@ -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"
|
||||
+11
@@ -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"
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
interface I {
|
||||
val p: Int
|
||||
}
|
||||
|
||||
class CCCC(over<caret>val x: Int) : I
|
||||
|
||||
// ELEMENT_TEXT: "override val p: Int"
|
||||
+7
@@ -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"
|
||||
+12
@@ -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"
|
||||
+12
@@ -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"
|
||||
+18
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user