More correct completion of overrides in constructor parameters - '$' character confuses parser
This commit is contained in:
+6
-6
@@ -30,7 +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.completion.handlers.indexOfSkippingSpace
|
||||
import org.jetbrains.kotlin.idea.core.completion.DeclarationLookupObject
|
||||
import org.jetbrains.kotlin.idea.core.overrideImplement.OverrideMembersHandler
|
||||
import org.jetbrains.kotlin.idea.core.overrideImplement.generateMember
|
||||
@@ -102,7 +102,8 @@ class OverridesCompletion(
|
||||
}
|
||||
|
||||
override fun handleInsert(context: InsertionContext) {
|
||||
val dummyMemberText = if (isConstructorParameter) "override val dummy: Dummy $" else "override fun dummy() {}"
|
||||
val chars = context.document.charsSequence
|
||||
val dummyMemberText = if (isConstructorParameter) "override val dummy: Dummy ,@" else "override fun dummy() {}"
|
||||
context.document.replaceString(context.startOffset, context.tailOffset, dummyMemberText)
|
||||
|
||||
val psiDocumentManager = PsiDocumentManager.getInstance(context.project)
|
||||
@@ -123,10 +124,9 @@ class OverridesCompletion(
|
||||
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)
|
||||
val commaOffset = chars.indexOfSkippingSpace(',', offset)!!
|
||||
val atCharOffset = chars.indexOfSkippingSpace('@', commaOffset + 1)!!
|
||||
context.document.deleteString(offset, atCharOffset + 1)
|
||||
|
||||
context.editor.moveCaret(offset)
|
||||
}
|
||||
|
||||
+3
-4
@@ -1,12 +1,11 @@
|
||||
package ppp
|
||||
|
||||
interface I {
|
||||
val p: Nested
|
||||
|
||||
interface Nested
|
||||
val p: CCCC.Nested
|
||||
}
|
||||
|
||||
class CCCC(over<caret>val x: Int) : I {
|
||||
interface Nested
|
||||
}
|
||||
|
||||
// ELEMENT_TEXT: "override val p: I.Nested"
|
||||
// ELEMENT_TEXT: "override val p: CCCC.Nested"
|
||||
|
||||
+4
-5
@@ -1,12 +1,11 @@
|
||||
package ppp
|
||||
|
||||
interface I {
|
||||
val p: Nested
|
||||
val p: CCCC.Nested
|
||||
}
|
||||
|
||||
class CCCC(override val p: CCCC.Nested<caret>val x: Int) : I {
|
||||
interface Nested
|
||||
}
|
||||
|
||||
class CCCC(override val p: I.Nested<caret>val x: Int) : I {
|
||||
}
|
||||
|
||||
// ELEMENT_TEXT: "override val p: I.Nested"
|
||||
// ELEMENT_TEXT: "override val p: CCCC.Nested"
|
||||
|
||||
Reference in New Issue
Block a user