diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/ParameterNameAndTypeCompletion.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/ParameterNameAndTypeCompletion.kt index ff8b62981b3..99234ffd610 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/ParameterNameAndTypeCompletion.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/ParameterNameAndTypeCompletion.kt @@ -16,6 +16,7 @@ package org.jetbrains.kotlin.idea.completion +import com.intellij.codeInsight.completion.CompletionInitializationContext import com.intellij.codeInsight.completion.CompletionParameters import com.intellij.codeInsight.completion.InsertionContext import com.intellij.codeInsight.completion.PrefixMatcher @@ -23,10 +24,8 @@ import com.intellij.codeInsight.lookup.LookupElement import com.intellij.codeInsight.lookup.LookupElementDecorator import com.intellij.codeInsight.lookup.LookupElementPresentation import com.intellij.psi.PsiClass -import com.intellij.psi.PsiDocumentManager import com.intellij.psi.PsiElement import com.intellij.psi.codeStyle.CodeStyleSettingsManager -import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.descriptors.ClassDescriptorWithResolutionScopes import org.jetbrains.kotlin.descriptors.ClassifierDescriptor import org.jetbrains.kotlin.descriptors.DeclarationDescriptor @@ -35,7 +34,6 @@ import org.jetbrains.kotlin.idea.core.KotlinIndicesHelper import org.jetbrains.kotlin.idea.core.formatter.JetCodeStyleSettings import org.jetbrains.kotlin.idea.core.refactoring.EmptyValidator import org.jetbrains.kotlin.idea.core.refactoring.JetNameSuggester -import org.jetbrains.kotlin.idea.util.approximateFlexibleTypes import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.forEachDescendantOfType import org.jetbrains.kotlin.psi.psiUtil.parentsWithSelf @@ -185,15 +183,17 @@ class ParameterNameAndTypeCompletion( } override fun handleInsert(context: InsertionContext) { - super.handleInsert(context) - - PsiDocumentManager.getInstance(context.getProject()).doPostponedOperationsAndUnblockDocument(context.getDocument()) - val settings = CodeStyleSettingsManager.getInstance(context.getProject()).getCurrentSettings().getCustomSettings(javaClass()) val spaceBefore = if (settings.SPACE_BEFORE_TYPE_COLON) " " else "" val spaceAfter = if (settings.SPACE_AFTER_TYPE_COLON) " " else "" val text = parameterName + spaceBefore + ":" + spaceAfter - context.getDocument().insertString(context.getStartOffset(), text) + val startOffset = context.getStartOffset() + context.getDocument().insertString(startOffset, text) + + // update start offset so that it does not include the text we inserted + context.getOffsetMap().addOffset(CompletionInitializationContext.START_OFFSET, startOffset + text.length()) + + super.handleInsert(context) } } } \ No newline at end of file diff --git a/idea/idea-completion/testData/handlers/basic/parameterNameAndType/ParameterInFile2.kt b/idea/idea-completion/testData/handlers/basic/parameterNameAndType/ParameterInFile2.kt new file mode 100644 index 00000000000..744e27ae7d8 --- /dev/null +++ b/idea/idea-completion/testData/handlers/basic/parameterNameAndType/ParameterInFile2.kt @@ -0,0 +1,5 @@ +fun foo(xxx: java.io.File?) + +fun bar(x) + +// ELEMENT: xxx diff --git a/idea/idea-completion/testData/handlers/basic/parameterNameAndType/ParameterInFile2.kt.after b/idea/idea-completion/testData/handlers/basic/parameterNameAndType/ParameterInFile2.kt.after new file mode 100644 index 00000000000..886dfb92907 --- /dev/null +++ b/idea/idea-completion/testData/handlers/basic/parameterNameAndType/ParameterInFile2.kt.after @@ -0,0 +1,7 @@ +import java.io.File + +fun foo(xxx: java.io.File?) + +fun bar(xxx: File?) + +// ELEMENT: xxx 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 1df187a0ed7..c83546ef609 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 @@ -283,6 +283,12 @@ public class BasicCompletionHandlerTestGenerated extends AbstractBasicCompletion doTest(fileName); } + @TestMetadata("ParameterInFile2.kt") + public void testParameterInFile2() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/handlers/basic/parameterNameAndType/ParameterInFile2.kt"); + doTest(fileName); + } + @TestMetadata("Simple.kt") public void testSimple() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/handlers/basic/parameterNameAndType/Simple.kt");