Smart completion includes constructor parameters for instantiation items
This commit is contained in:
@@ -99,14 +99,18 @@ class TypeInstantiationItems(val resolveSession: ResolveSessionForBodies, val bi
|
||||
}
|
||||
else {
|
||||
//TODO: when constructor has one parameter of lambda type with more than one parameter, generate special additional item
|
||||
itemText += "()"
|
||||
val baseInsertHandler =
|
||||
(if (visibleConstructors.size == 0)
|
||||
KotlinFunctionInsertHandler.NO_PARAMETERS_HANDLER
|
||||
else if (visibleConstructors.size == 1)
|
||||
KotlinLookupElementFactory.getDefaultInsertHandler(visibleConstructors.single())
|
||||
else
|
||||
KotlinFunctionInsertHandler.WITH_PARAMETERS_HANDLER) as KotlinFunctionInsertHandler
|
||||
itemText += when (visibleConstructors.size) {
|
||||
0 -> "()"
|
||||
1 -> DescriptorRenderer.SHORT_NAMES_IN_TYPES.renderFunctionParameters(visibleConstructors.single())
|
||||
else -> "(...)"
|
||||
}
|
||||
|
||||
val baseInsertHandler = when (visibleConstructors.size) {
|
||||
0 -> KotlinFunctionInsertHandler.NO_PARAMETERS_HANDLER
|
||||
1 -> KotlinLookupElementFactory.getDefaultInsertHandler(visibleConstructors.single()) as KotlinFunctionInsertHandler
|
||||
else -> KotlinFunctionInsertHandler.WITH_PARAMETERS_HANDLER
|
||||
}
|
||||
|
||||
insertHandler = object : InsertHandler<LookupElement> {
|
||||
override fun handleInsert(context: InsertionContext, item: LookupElement) {
|
||||
context.getDocument().replaceString(context.getStartOffset(), context.getTailOffset(), typeText)
|
||||
|
||||
@@ -2,4 +2,4 @@ import java.util.Date
|
||||
|
||||
var a : Date = <caret>
|
||||
|
||||
// EXIST: { lookupString:"Date", itemText:"Date()" }
|
||||
// EXIST: { lookupString:"Date", itemText:"Date(...)" }
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
class Foo(val p1: String, val p2: Any?)
|
||||
|
||||
var a : Foo = <caret>
|
||||
|
||||
// EXIST: { lookupString:"Foo", itemText:"Foo(p1: String, p2: Any?)" }
|
||||
@@ -186,6 +186,12 @@ public class JvmSmartCompletionTestGenerated extends AbstractJvmSmartCompletionT
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("ConstructorWithParameters.kt")
|
||||
public void testConstructorWithParameters() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/smart/ConstructorWithParameters.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("EmptyPrefix.kt")
|
||||
public void testEmptyPrefix() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/smart/EmptyPrefix.kt");
|
||||
|
||||
Reference in New Issue
Block a user