From c7af6de16bcec22b9866b0d0e63ce01634e5d736 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Thu, 20 Sep 2012 16:11:59 +0400 Subject: [PATCH] KT-1187 Wrong unnecessary completion #KT-1187 Fixed --- .../org/jetbrains/jet/cli/jvm/compiler/TipsManager.java | 3 ++- .../completion/basic/DoNotCompleteForErrorReceivers.kt | 7 +++++++ .../jetbrains/jet/completion/JetBasicCompletionTest.java | 4 ++++ 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 idea/testData/completion/basic/DoNotCompleteForErrorReceivers.kt diff --git a/compiler/backend/src/org/jetbrains/jet/cli/jvm/compiler/TipsManager.java b/compiler/backend/src/org/jetbrains/jet/cli/jvm/compiler/TipsManager.java index 544133a19eb..1e6f4e894a2 100644 --- a/compiler/backend/src/org/jetbrains/jet/cli/jvm/compiler/TipsManager.java +++ b/compiler/backend/src/org/jetbrains/jet/cli/jvm/compiler/TipsManager.java @@ -36,6 +36,7 @@ import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.lang.resolve.scopes.JetScopeUtils; import org.jetbrains.jet.lang.resolve.scopes.receivers.ExpressionReceiver; import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor; +import org.jetbrains.jet.lang.types.ErrorUtils; import org.jetbrains.jet.lang.types.JetType; import org.jetbrains.jet.lang.types.NamespaceType; import org.jetbrains.jet.lang.types.expressions.ExpressionTypingUtils; @@ -61,7 +62,7 @@ public final class TipsManager { JetScope resolutionScope = context.get(BindingContext.RESOLUTION_SCOPE, expression); JetType expressionType = context.get(BindingContext.EXPRESSION_TYPE, receiverExpression); - if (expressionType != null && resolutionScope != null) { + if (expressionType != null && resolutionScope != null && !ErrorUtils.isErrorType(expressionType)) { if (!(expressionType instanceof NamespaceType)) { ExpressionReceiver receiverDescriptor = new ExpressionReceiver(receiverExpression, expressionType); Set descriptors = new HashSet(); diff --git a/idea/testData/completion/basic/DoNotCompleteForErrorReceivers.kt b/idea/testData/completion/basic/DoNotCompleteForErrorReceivers.kt new file mode 100644 index 00000000000..d5036432850 --- /dev/null +++ b/idea/testData/completion/basic/DoNotCompleteForErrorReceivers.kt @@ -0,0 +1,7 @@ +// KT-1187 Wrong unnecessary completion + +fun anyfun() { + a.b.c.d.e.f. +} + +// NUMBER: 0 \ 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 194e53bab08..12f9e227f9e 100644 --- a/idea/tests/org/jetbrains/jet/completion/JetBasicCompletionTest.java +++ b/idea/tests/org/jetbrains/jet/completion/JetBasicCompletionTest.java @@ -56,6 +56,10 @@ public class JetBasicCompletionTest extends JetCompletionTestBase { doTest(); } + public void testDoNotCompleteForErrorReceivers() { + doTest(); + } + public void testExtendClassName() { doTest(); }