diff --git a/idea/src/org/jetbrains/jet/plugin/completion/JetReferenceCharFilter.java b/idea/src/org/jetbrains/jet/plugin/completion/JetReferenceCharFilter.java index d4f27513ea9..41e0df2599f 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/JetReferenceCharFilter.java +++ b/idea/src/org/jetbrains/jet/plugin/completion/JetReferenceCharFilter.java @@ -16,7 +16,6 @@ package org.jetbrains.jet.plugin.completion; -import com.intellij.codeInsight.completion.CompletionCharFilter; import com.intellij.codeInsight.lookup.CharFilter; import com.intellij.codeInsight.lookup.Lookup; import com.intellij.psi.PsiFile; @@ -24,8 +23,6 @@ import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.psi.JetFile; public class JetReferenceCharFilter extends CharFilter { - private final static CharFilter delegate = new CompletionCharFilter(); - @Override @Nullable public Result acceptChar(char c, int prefixLength, Lookup lookup) { @@ -34,10 +31,13 @@ public class JetReferenceCharFilter extends CharFilter { return null; } - if (c == '.') { - return Result.HIDE_LOOKUP; + if (c == '.' && prefixLength == 0 && !lookup.isSelectionTouched()) { + int caret = lookup.getEditor().getCaretModel().getOffset(); + if (caret > 0 && lookup.getEditor().getDocument().getCharsSequence().charAt(caret - 1) == '.') { + return Result.HIDE_LOOKUP; + } } - return delegate.acceptChar(c, prefixLength, lookup); + return null; } } \ No newline at end of file diff --git a/idea/testData/completion/confidence/CompleteOnDotOutOfRanges.kt b/idea/testData/completion/confidence/CompleteOnDotOutOfRanges.kt new file mode 100644 index 00000000000..4d0dfbaedbd --- /dev/null +++ b/idea/testData/completion/confidence/CompleteOnDotOutOfRanges.kt @@ -0,0 +1,3 @@ +fun test() { + 12.in +} \ No newline at end of file diff --git a/idea/testData/completion/confidence/CompleteOnDotOutOfRanges.kt.after b/idea/testData/completion/confidence/CompleteOnDotOutOfRanges.kt.after new file mode 100644 index 00000000000..2c8d387e41f --- /dev/null +++ b/idea/testData/completion/confidence/CompleteOnDotOutOfRanges.kt.after @@ -0,0 +1,3 @@ +fun test() { + 12.inc(). +} \ No newline at end of file diff --git a/idea/testData/completion/confidence/NoAutoCompletionForRangeOperator.kt b/idea/testData/completion/confidence/NoAutoCompletionForRangeOperator.kt new file mode 100644 index 00000000000..df9b659ce3c --- /dev/null +++ b/idea/testData/completion/confidence/NoAutoCompletionForRangeOperator.kt @@ -0,0 +1,4 @@ +fun test() { + for (i in 12.) { + } +} diff --git a/idea/testData/completion/confidence/NoAutoCompletionForRangeOperator.kt.after b/idea/testData/completion/confidence/NoAutoCompletionForRangeOperator.kt.after new file mode 100644 index 00000000000..66e6eb5c241 --- /dev/null +++ b/idea/testData/completion/confidence/NoAutoCompletionForRangeOperator.kt.after @@ -0,0 +1,4 @@ +fun test() { + for (i in 12.. ) { + } +} diff --git a/idea/tests/org/jetbrains/jet/completion/confidence/JetConfidenceTest.java b/idea/tests/org/jetbrains/jet/completion/confidence/JetConfidenceTest.java index 946441feaef..2df7715ab63 100644 --- a/idea/tests/org/jetbrains/jet/completion/confidence/JetConfidenceTest.java +++ b/idea/tests/org/jetbrains/jet/completion/confidence/JetConfidenceTest.java @@ -30,6 +30,9 @@ import java.io.File; * @author Nikolay Krasko */ public class JetConfidenceTest extends LightCompletionTestCase { + public void testCompleteOnDotOutOfRanges() { + doTest("."); + } public void testImportAsConfidence() { doTest("as"); @@ -51,6 +54,10 @@ public class JetConfidenceTest extends LightCompletionTestCase { doTest("mm"); } + public void testNoAutoCompletionForRangeOperator() { + doTest("."); + } + protected void doTest(String completionActivateType) { configureByFile(getBeforeFileName()); type(completionActivateType + " ");