From 1413a3fe634bb49c1a7b9edfbed38f6fffc73eca Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Fri, 20 May 2016 20:30:45 +0300 Subject: [PATCH] KT-12328 Qualified function name inserted when typing before "if" #KT-12328 Fixed --- .../handlers/KotlinCallableInsertHandler.kt | 14 ++++++++++---- .../testData/handlers/basic/KT12328.kt | 5 +++++ .../testData/handlers/basic/KT12328.kt.after | 5 +++++ .../BasicCompletionHandlerTestGenerated.java | 6 ++++++ 4 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 idea/idea-completion/testData/handlers/basic/KT12328.kt create mode 100644 idea/idea-completion/testData/handlers/basic/KT12328.kt.after diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/handlers/KotlinCallableInsertHandler.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/handlers/KotlinCallableInsertHandler.kt index a335e461d09..9216a335753 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/handlers/KotlinCallableInsertHandler.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/handlers/KotlinCallableInsertHandler.kt @@ -37,7 +37,8 @@ abstract class KotlinCallableInsertHandler(val callType: CallType<*>) : BaseDecl } private fun addImport(context : InsertionContext, item : LookupElement) { - PsiDocumentManager.getInstance(context.project).commitAllDocuments() + val psiDocumentManager = PsiDocumentManager.getInstance(context.project) + psiDocumentManager.commitAllDocuments() val file = context.file val o = item.`object` @@ -50,10 +51,15 @@ abstract class KotlinCallableInsertHandler(val callType: CallType<*>) : BaseDecl } else if (callType == CallType.DEFAULT) { val fqName = descriptor.importableFqName ?: return - context.document.replaceString(context.startOffset, context.tailOffset, fqName.render()) + context.document.replaceString(context.startOffset, context.tailOffset, fqName.render() + " ") // insert space after for correct parsing - PsiDocumentManager.getInstance(context.project).commitAllDocuments() - ShortenReferences.DEFAULT.process(file, context.startOffset, context.tailOffset) + psiDocumentManager.commitAllDocuments() + + ShortenReferences.DEFAULT.process(file, context.startOffset, context.tailOffset - 1) + + psiDocumentManager.doPostponedOperationsAndUnblockDocument(context.document) + + context.document.deleteString(context.tailOffset - 1, context.tailOffset) // delete space } } } diff --git a/idea/idea-completion/testData/handlers/basic/KT12328.kt b/idea/idea-completion/testData/handlers/basic/KT12328.kt new file mode 100644 index 00000000000..888ff99293c --- /dev/null +++ b/idea/idea-completion/testData/handlers/basic/KT12328.kt @@ -0,0 +1,5 @@ +fun f() { + val v = if (x) a else b +} + +// ELEMENT: emptyList \ No newline at end of file diff --git a/idea/idea-completion/testData/handlers/basic/KT12328.kt.after b/idea/idea-completion/testData/handlers/basic/KT12328.kt.after new file mode 100644 index 00000000000..3766833952b --- /dev/null +++ b/idea/idea-completion/testData/handlers/basic/KT12328.kt.after @@ -0,0 +1,5 @@ +fun f() { + val v = emptyList<>()if (x) a else b +} + +// ELEMENT: emptyList \ No newline at end of file diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/handlers/BasicCompletionHandlerTestGenerated.java b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/handlers/BasicCompletionHandlerTestGenerated.java index 36f36385f9d..f72a13c896d 100644 --- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/handlers/BasicCompletionHandlerTestGenerated.java +++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/handlers/BasicCompletionHandlerTestGenerated.java @@ -137,6 +137,12 @@ public class BasicCompletionHandlerTestGenerated extends AbstractBasicCompletion doTest(fileName); } + @TestMetadata("KT12328.kt") + public void testKT12328() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/idea-completion/testData/handlers/basic/KT12328.kt"); + doTest(fileName); + } + @TestMetadata("NestedTypeArg.kt") public void testNestedTypeArg() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/idea-completion/testData/handlers/basic/NestedTypeArg.kt");