diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetSimpleNameExpression.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetSimpleNameExpression.java index d5e997aeee0..d4390b95beb 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetSimpleNameExpression.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetSimpleNameExpression.java @@ -49,9 +49,10 @@ public class JetSimpleNameExpression extends JetReferenceExpression { public JetExpression getReceiverExpression() { PsiElement parent = getParent(); if (parent instanceof JetQualifiedExpression && !isImportDirectiveExpression()) { - JetQualifiedExpression qualifiedExpression = (JetQualifiedExpression) parent; - if (!isFirstPartInQualifiedExpression(qualifiedExpression)) { - return qualifiedExpression.getReceiverExpression(); + JetExpression receiverExpression = ((JetQualifiedExpression) parent).getReceiverExpression(); + // Name expression can't be receiver for itself + if (receiverExpression != this) { + return receiverExpression; } } else if (parent instanceof JetCallExpression) { @@ -63,18 +64,10 @@ public class JetSimpleNameExpression extends JetReferenceExpression { return qualifiedExpression.getReceiverExpression(); } } + return null; } - // Check that this is simple name expression is first part in full qualified name: firstPart.otherPart.otherPart.call() - private boolean isFirstPartInQualifiedExpression(JetQualifiedExpression qualifiedExpression) { - if (qualifiedExpression.getParent() instanceof JetQualifiedExpression) { - return isFirstPartInQualifiedExpression((JetQualifiedExpression) qualifiedExpression.getParent()); - } - - return qualifiedExpression.getFirstChild() == this; - } - public boolean isImportDirectiveExpression() { PsiElement parent = getParent(); if (parent == null) return false; diff --git a/idea/testData/completion/basic/InLongDotQualifiedExpression.kt b/idea/testData/completion/basic/InLongDotQualifiedExpression.kt new file mode 100644 index 00000000000..bcdb7fbd391 --- /dev/null +++ b/idea/testData/completion/basic/InLongDotQualifiedExpression.kt @@ -0,0 +1,8 @@ +// For KT-2796 + +fun test() { + val bVal = 1 + b.app().app() // b is not there +} + +// EXIST: bVal \ No newline at end of file diff --git a/idea/tests/org/jetbrains/jet/completion/JetBasicCompletionTest.java b/idea/tests/org/jetbrains/jet/completion/JetBasicCompletionTest.java index 15490066c16..62884e5e00e 100644 --- a/idea/tests/org/jetbrains/jet/completion/JetBasicCompletionTest.java +++ b/idea/tests/org/jetbrains/jet/completion/JetBasicCompletionTest.java @@ -153,6 +153,10 @@ public class JetBasicCompletionTest extends JetCompletionTestBase { doTest(); } + public void testInLongDotQualifiedExpression() { + doTest(); + } + public void testInMiddleOfNamespace() { doTest(); }