From a84488f59afe63b1205bfe14a05be4a20e3569a0 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Mon, 20 Oct 2014 19:06:21 +0400 Subject: [PATCH] Fixed KT-5985 Smart completion does not insert comma for constructor of nested data class #KT-5985 Fixed --- .../jet/plugin/completion/ExpectedInfos.kt | 15 ++++++++++++--- .../handlers/smart/NestedDataClassComma.kt | 9 +++++++++ .../handlers/smart/NestedDataClassComma.kt.after | 9 +++++++++ 3 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 idea/testData/completion/handlers/smart/NestedDataClassComma.kt create mode 100644 idea/testData/completion/handlers/smart/NestedDataClassComma.kt.after diff --git a/idea/src/org/jetbrains/jet/plugin/completion/ExpectedInfos.kt b/idea/src/org/jetbrains/jet/plugin/completion/ExpectedInfos.kt index 5d43adb5d3a..2838b3989db 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/ExpectedInfos.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/ExpectedInfos.kt @@ -131,9 +131,18 @@ class ExpectedInfos(val bindingContext: BindingContext, val resolveSession: Reso val callOperationNode: ASTNode? if (parent is JetQualifiedExpression && callElement == parent.getSelectorExpression()) { val receiverExpression = parent.getReceiverExpression() - val expressionType = bindingContext[BindingContext.EXPRESSION_TYPE, receiverExpression] ?: return null - receiver = ExpressionReceiver(receiverExpression, expressionType) - callOperationNode = parent.getOperationTokenNode() + val expressionType = bindingContext[BindingContext.EXPRESSION_TYPE, receiverExpression] + if (expressionType != null) { + receiver = ExpressionReceiver(receiverExpression, expressionType) + callOperationNode = parent.getOperationTokenNode() + } + else if (bindingContext[BindingContext.QUALIFIER, receiverExpression] != null) { + receiver = ReceiverValue.NO_RECEIVER + callOperationNode = null + } + else { + return null + } } else { receiver = ReceiverValue.NO_RECEIVER diff --git a/idea/testData/completion/handlers/smart/NestedDataClassComma.kt b/idea/testData/completion/handlers/smart/NestedDataClassComma.kt new file mode 100644 index 00000000000..b5c221933a0 --- /dev/null +++ b/idea/testData/completion/handlers/smart/NestedDataClassComma.kt @@ -0,0 +1,9 @@ +class Outer { + private data class Nested(val v: Int, val v2: Int) + + fun foo(p: Int): Inner { + return Outer.Nested() + } +} + +// ELEMENT: p diff --git a/idea/testData/completion/handlers/smart/NestedDataClassComma.kt.after b/idea/testData/completion/handlers/smart/NestedDataClassComma.kt.after new file mode 100644 index 00000000000..a0f10e5ef2e --- /dev/null +++ b/idea/testData/completion/handlers/smart/NestedDataClassComma.kt.after @@ -0,0 +1,9 @@ +class Outer { + private data class Nested(val v: Int, val v2: Int) + + fun foo(p: Int): Inner { + return Outer.Nested(p, ) + } +} + +// ELEMENT: p