diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/LookupElementFactory.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/LookupElementFactory.kt index d2a8fe1ea03..9526c72b015 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/LookupElementFactory.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/LookupElementFactory.kt @@ -169,11 +169,20 @@ public class LookupElementFactory( } var element = LookupElementBuilder.create(lookupObject, name) + val insertHandler = getDefaultInsertHandler(descriptor) + element = element.withInsertHandler(insertHandler) + when (descriptor) { is FunctionDescriptor -> { val returnType = descriptor.getReturnType() element = element.withTypeText(if (returnType != null) DescriptorRenderer.SHORT_NAMES_IN_TYPES.renderType(returnType) else "") - element = element.appendTailText(DescriptorRenderer.SHORT_NAMES_IN_TYPES.renderFunctionParameters(descriptor), false) + + val insertsLambda = (insertHandler as KotlinFunctionInsertHandler).lambdaInfo != null + if (insertsLambda) { + element = element.appendTailText(" {...} ", false) + } + + element = element.appendTailText(DescriptorRenderer.SHORT_NAMES_IN_TYPES.renderFunctionParameters(descriptor), insertsLambda) } is VariableDescriptor -> { @@ -232,9 +241,6 @@ public class LookupElementFactory( element = element.withStrikeoutness(true) } - val insertHandler = getDefaultInsertHandler(descriptor) - element = element.withInsertHandler(insertHandler) - if (insertHandler is KotlinFunctionInsertHandler && insertHandler.lambdaInfo != null) { element.putUserData(KotlinCompletionCharFilter.ACCEPT_OPENING_BRACE, Unit) } diff --git a/idea/idea-completion/testData/basic/common/SubstitutedSignature3.kt b/idea/idea-completion/testData/basic/common/SubstitutedSignature3.kt index 01cfde847bf..f0af4361c6c 100644 --- a/idea/idea-completion/testData/basic/common/SubstitutedSignature3.kt +++ b/idea/idea-completion/testData/basic/common/SubstitutedSignature3.kt @@ -1,5 +1,5 @@ fun foo(list: List) { list. } -// EXIST: { itemText: "firstOrNull", tailText: "(predicate: (String) -> Boolean) for Iterable in kotlin", typeText: "String?" } -// EXIST: { itemText: "toMap", tailText: "(selector: (String) -> K) for Iterable in kotlin", typeText: "Map" } +// EXIST: { itemText: "firstOrNull", tailText: " {...} (predicate: (String) -> Boolean) for Iterable in kotlin", typeText: "String?" } +// EXIST: { itemText: "toMap", tailText: " {...} (selector: (String) -> K) for Iterable in kotlin", typeText: "Map" } diff --git a/idea/idea-completion/testData/handlers/smart/SAMExpected1.kt b/idea/idea-completion/testData/handlers/smart/SAMExpected1.kt index 3bd44948bd8..b717b24dcf3 100644 --- a/idea/idea-completion/testData/handlers/smart/SAMExpected1.kt +++ b/idea/idea-completion/testData/handlers/smart/SAMExpected1.kt @@ -1,4 +1,4 @@ var a : Runnable = // ELEMENT_TEXT: Runnable -// TAIL_TEXT: "(function: () -> Unit) (java.lang)" +// TAIL_TEXT: " {...} (function: () -> Unit) (java.lang)" diff --git a/idea/idea-completion/testData/handlers/smart/SAMExpected1.kt.after b/idea/idea-completion/testData/handlers/smart/SAMExpected1.kt.after index dd80a9ada21..dd389f324f5 100644 --- a/idea/idea-completion/testData/handlers/smart/SAMExpected1.kt.after +++ b/idea/idea-completion/testData/handlers/smart/SAMExpected1.kt.after @@ -1,4 +1,4 @@ var a : Runnable = Runnable { } // ELEMENT_TEXT: Runnable -// TAIL_TEXT: "(function: () -> Unit) (java.lang)" +// TAIL_TEXT: " {...} (function: () -> Unit) (java.lang)" diff --git a/idea/idea-completion/testData/smart/SAMExpected1.kt b/idea/idea-completion/testData/smart/SAMExpected1.kt index 977ce676675..55c9bfde739 100644 --- a/idea/idea-completion/testData/smart/SAMExpected1.kt +++ b/idea/idea-completion/testData/smart/SAMExpected1.kt @@ -1,3 +1,3 @@ var a : Runnable = -// EXIST: {"lookupString":"Runnable", "itemText":"Runnable", "tailText":"(function: () -> Unit) (java.lang)", "typeText":"Runnable"} +// EXIST: {"lookupString":"Runnable", "itemText":"Runnable", "tailText":" {...} (function: () -> Unit) (java.lang)", "typeText":"Runnable"} diff --git a/idea/idea-completion/testData/smart/generics/GenericFunction4.kt b/idea/idea-completion/testData/smart/generics/GenericFunction4.kt index 6b2f65c5274..3dcc801f313 100644 --- a/idea/idea-completion/testData/smart/generics/GenericFunction4.kt +++ b/idea/idea-completion/testData/smart/generics/GenericFunction4.kt @@ -2,5 +2,5 @@ fun foo(list: List): Collection { return list. } -// EXIST: { lookupString: "map", tailText: "(transform: (String) -> Int) for Iterable in kotlin", typeText: "List" } +// EXIST: { lookupString: "map", tailText: " {...} (transform: (String) -> Int) for Iterable in kotlin", typeText: "List" } // ABSENT: filter