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