Override completion right after override modifier
#KT-25312 Fixed
This commit is contained in:
+14
-2
@@ -112,12 +112,24 @@ class OverridesCompletion(
|
||||
else -> "dummy() {}"
|
||||
}
|
||||
val dummyMemberText = dummyMemberHead + dummyMemberTail
|
||||
context.document.replaceString(context.startOffset, context.tailOffset, dummyMemberText)
|
||||
val override = KtTokens.OVERRIDE_KEYWORD.value
|
||||
|
||||
tailrec fun calcStartOffset(startOffset: Int, diff: Int = 0): Int {
|
||||
if (context.document.text[startOffset - 1].isWhitespace()) {
|
||||
return calcStartOffset(startOffset - 1, diff + 1)
|
||||
} else if (context.document.text.substring(startOffset - override.length, startOffset) == override) {
|
||||
return startOffset - override.length
|
||||
} else return diff + startOffset
|
||||
}
|
||||
|
||||
val startOffset = calcStartOffset(context.startOffset)
|
||||
val tailOffset = context.tailOffset
|
||||
context.document.replaceString(startOffset, tailOffset, dummyMemberText)
|
||||
|
||||
val psiDocumentManager = PsiDocumentManager.getInstance(context.project)
|
||||
psiDocumentManager.commitAllDocuments()
|
||||
|
||||
val dummyMember = context.file.findElementAt(context.startOffset)!!.getStrictParentOfType<KtNamedDeclaration>()!!
|
||||
val dummyMember = context.file.findElementAt(startOffset)!!.getStrictParentOfType<KtNamedDeclaration>()!!
|
||||
|
||||
// keep original modifiers
|
||||
val modifierList = KtPsiFactory(context.project).createModifierList(dummyMember.modifierList!!.text)
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
interface Interface {
|
||||
fun funA()
|
||||
}
|
||||
|
||||
expect class SClass : Interface { // there is no error highlighting about unimplemented members, see KT-25044
|
||||
override fu<caret>
|
||||
}
|
||||
// ELEMENT_TEXT: "override fun funA() {...}"
|
||||
@@ -0,0 +1,8 @@
|
||||
interface Interface {
|
||||
fun funA()
|
||||
}
|
||||
|
||||
expect class SClass : Interface { // there is no error highlighting about unimplemented members, see KT-25044
|
||||
override fun funA()<caret>
|
||||
}
|
||||
// ELEMENT_TEXT: "override fun funA() {...}"
|
||||
+5
@@ -521,6 +521,11 @@ public class BasicCompletionHandlerTestGenerated extends AbstractBasicCompletion
|
||||
runTest("idea/idea-completion/testData/handlers/basic/override/KeepModifiersBefore.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("kt25312.kt")
|
||||
public void testKt25312() throws Exception {
|
||||
runTest("idea/idea-completion/testData/handlers/basic/override/kt25312.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("OverrideFunction.kt")
|
||||
public void testOverrideFunction() throws Exception {
|
||||
runTest("idea/idea-completion/testData/handlers/basic/override/OverrideFunction.kt");
|
||||
|
||||
Reference in New Issue
Block a user