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");