diff --git a/idea/src/org/jetbrains/jet/plugin/completion/JetKeywordCompletionContributor.java b/idea/src/org/jetbrains/jet/plugin/completion/JetKeywordCompletionContributor.java index e4fd1beb534..6f7a57c8492 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/JetKeywordCompletionContributor.java +++ b/idea/src/org/jetbrains/jet/plugin/completion/JetKeywordCompletionContributor.java @@ -3,6 +3,12 @@ package org.jetbrains.jet.plugin.completion; import com.intellij.codeInsight.completion.*; import com.intellij.codeInsight.lookup.LookupElementBuilder; import com.intellij.patterns.PlatformPatterns; +import com.intellij.patterns.PsiElementPattern; +import com.intellij.psi.PsiElement; +import com.intellij.psi.filters.NotFilter; +import com.intellij.psi.filters.TextFilter; +import com.intellij.psi.filters.position.FilterPattern; +import com.intellij.psi.filters.position.LeftNeighbour; import com.intellij.util.ProcessingContext; import org.jetbrains.annotations.NotNull; @@ -14,7 +20,7 @@ import org.jetbrains.annotations.NotNull; */ public class JetKeywordCompletionContributor extends CompletionContributor { - private static class JetKeywordCompletionProvider extends CompletionProvider { + private static class JetTopKeywordCompletionProvider extends CompletionProvider { private final static String[] COMPLETE_KEYWORD = new String[] { "namespace", "as", "type", "class", "this", "super", "val", "var", "fun", "for", "null", "true", @@ -43,6 +49,12 @@ public class JetKeywordCompletionContributor extends CompletionContributor { } public JetKeywordCompletionContributor() { - extend(CompletionType.BASIC, PlatformPatterns.psiElement(), new JetKeywordCompletionProvider()); + + PsiElementPattern.Capture notDotPlace = + PlatformPatterns.psiElement().and(new FilterPattern(new NotFilter(new LeftNeighbour(new TextFilter("."))))); + + extend(CompletionType.BASIC, + notDotPlace, + new JetTopKeywordCompletionProvider()); } } diff --git a/idea/testData/completion/keywords/AfterDot.kt b/idea/testData/completion/keywords/AfterDot.kt new file mode 100644 index 00000000000..f6d11044f90 --- /dev/null +++ b/idea/testData/completion/keywords/AfterDot.kt @@ -0,0 +1,9 @@ +fun foo() { + val str : String + str. +} + +// ABSENT: namespace, as, type, class, this, super, val, var, fun, for, null, true +// ABSENT: false, is, in, throw, return, break, continue, object, if, try, else, while +// ABSENT: do, when, trait, This + diff --git a/idea/testData/completion/keywords/AfterSpaceAndDot.kt b/idea/testData/completion/keywords/AfterSpaceAndDot.kt new file mode 100644 index 00000000000..bd0a7028c99 --- /dev/null +++ b/idea/testData/completion/keywords/AfterSpaceAndDot.kt @@ -0,0 +1,6 @@ +fun foo() { + val str : String + str. +} + +// ABSENT: public, val, in \ No newline at end of file