From 79d5c2e3ed2e9a4dec4a737db2cd67d8519cf646 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Wed, 25 Jan 2012 17:32:59 +0400 Subject: [PATCH] Remove "ref" and "default" keywords from completion. Start using tokens for getting keyword completion constants. --- .../JetKeywordCompletionContributor.java | 65 ++++++++++++++----- .../completion/keywords/InFunctionScope.kt | 2 - .../completion/keywords/InParametersList.kt | 2 - .../completion/keywords/InTypeScope.kt | 2 - 4 files changed, 49 insertions(+), 22 deletions(-) diff --git a/idea/src/org/jetbrains/jet/plugin/completion/JetKeywordCompletionContributor.java b/idea/src/org/jetbrains/jet/plugin/completion/JetKeywordCompletionContributor.java index af001ad3809..0e6b5eb5570 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/JetKeywordCompletionContributor.java +++ b/idea/src/org/jetbrains/jet/plugin/completion/JetKeywordCompletionContributor.java @@ -18,12 +18,16 @@ import com.intellij.psi.util.PsiTreeUtil; import com.intellij.util.ProcessingContext; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.lang.psi.*; +import org.jetbrains.jet.lexer.JetToken; import org.jetbrains.jet.plugin.completion.handlers.JetFunctionInsertHandler; import org.jetbrains.jet.plugin.completion.handlers.JetKeywordInsertHandler; +import java.util.ArrayList; import java.util.Collection; import java.util.List; +import static org.jetbrains.jet.lexer.JetTokens.*; + /** * A keyword contributor for Kotlin * @@ -42,7 +46,7 @@ public class JetKeywordCompletionContributor extends CompletionContributor { new LeftNeighbour(new TextFilter(".")) )); - private final static List FUNCTION_KEYWORDS = Lists.newArrayList("get", "set"); + private final static List FUNCTION_KEYWORDS = Lists.newArrayList(GET_KEYWORD.toString(), SET_KEYWORD.toString()); private static class CommentFilter implements ElementFilter { @Override @@ -169,29 +173,58 @@ public class JetKeywordCompletionContributor extends CompletionContributor { public JetKeywordCompletionContributor() { registerScopeKeywordsCompletion(new InTopFilter(), - "abstract", "class", "enum", "final", "fun", "get", "import", "inline", - "internal", "open", "package", "private", "protected", "public", "set", - "trait", "type", "val", "var"); + ABSTRACT_KEYWORD, CLASS_KEYWORD, ENUM_KEYWORD, + FINAL_KEYWORD, FUN_KEYWORD, GET_KEYWORD, + IMPORT_KEYWORD, INLINE_KEYWORD, INTERNAL_KEYWORD, + OPEN_KEYWORD, PACKAGE_KEYWORD, PRIVATE_KEYWORD, + PROTECTED_KEYWORD, PUBLIC_KEYWORD, SET_KEYWORD, + TRAIT_KEYWORD, TYPE_KEYWORD, VAL_KEYWORD, + VAR_KEYWORD); registerScopeKeywordsCompletion(new InClassBodyFilter(), - "abstract", "class", "enum", "final", "fun", "get", "inline", "internal", - "object", "open", "override", "private", "protected", "public", "set", "trait", - "type", "val", "var"); + ABSTRACT_KEYWORD, CLASS_KEYWORD, ENUM_KEYWORD, + FINAL_KEYWORD, FUN_KEYWORD, GET_KEYWORD, + INLINE_KEYWORD, INTERNAL_KEYWORD, OBJECT_KEYWORD, + OPEN_KEYWORD, OVERRIDE_KEYWORD, PRIVATE_KEYWORD, + PROTECTED_KEYWORD, PUBLIC_KEYWORD, SET_KEYWORD, + TRAIT_KEYWORD, TYPE_KEYWORD, VAL_KEYWORD, + VAR_KEYWORD); registerScopeKeywordsCompletion(new InNonClassBlockFilter(), - "as", "break", "by", "catch", "class", "continue", "default", "do", "else", - "enum", "false", "finally", "for", "fun", "get", "if", "in", "inline", - "internal", "is", "null", "object", "private", "protected", "public", "ref", - "return", "set", "super", "This", "this", "throw", "trait", "true", "try", - "type", "val", "var", "vararg", "when", "where", "while"); + AS_KEYWORD, BREAK_KEYWORD, BY_KEYWORD, + CATCH_KEYWORD, CLASS_KEYWORD, CONTINUE_KEYWORD, + DO_KEYWORD, ELSE_KEYWORD, ENUM_KEYWORD, + FALSE_KEYWORD, FINALLY_KEYWORD, FOR_KEYWORD, + FUN_KEYWORD, GET_KEYWORD, IF_KEYWORD, + IN_KEYWORD, INLINE_KEYWORD, INTERNAL_KEYWORD, + IS_KEYWORD, NULL_KEYWORD, OBJECT_KEYWORD, + PRIVATE_KEYWORD, PROTECTED_KEYWORD, PUBLIC_KEYWORD, + RETURN_KEYWORD, SET_KEYWORD, SUPER_KEYWORD, + CAPITALIZED_THIS_KEYWORD, THIS_KEYWORD, THROW_KEYWORD, + TRAIT_KEYWORD, TRUE_KEYWORD, TRY_KEYWORD, + TYPE_KEYWORD, VAL_KEYWORD, VAR_KEYWORD, + VARARG_KEYWORD, WHEN_KEYWORD, WHERE_KEYWORD, + WHILE_KEYWORD); - registerScopeKeywordsCompletion(new InPropertyFilter(), "else", "false", "if", "null", "this", "true"); + registerScopeKeywordsCompletion(new InPropertyFilter(), + ELSE_KEYWORD, FALSE_KEYWORD, IF_KEYWORD, + NULL_KEYWORD, THIS_KEYWORD, TRUE_KEYWORD); - registerScopeKeywordsCompletion(new InParametersFilter(), "ref", "out"); + registerScopeKeywordsCompletion(new InParametersFilter(), OUT_KEYWORD); } - private void registerScopeKeywordsCompletion(final ElementFilter placeFilter, String... keywords) { - extend(CompletionType.BASIC, getPlacePattern(placeFilter), new KeywordsCompletionProvider(keywords)); + private void registerScopeKeywordsCompletion(final ElementFilter placeFilter, JetToken... keywords) { + extend(CompletionType.BASIC, getPlacePattern(placeFilter), + new KeywordsCompletionProvider(convertTokensToStrings(keywords))); + } + + private static String[] convertTokensToStrings(JetToken... keywords) { + final ArrayList strings = new ArrayList(keywords.length); + for (JetToken keyword : keywords) { + strings.add(keyword.toString()); + } + + return strings.toArray(new String[strings.size()]); } private static ElementPattern getPlacePattern(final ElementFilter placeFilter) { diff --git a/idea/testData/completion/keywords/InFunctionScope.kt b/idea/testData/completion/keywords/InFunctionScope.kt index 1f51914c8e1..9e3f6aebb2b 100644 --- a/idea/testData/completion/keywords/InFunctionScope.kt +++ b/idea/testData/completion/keywords/InFunctionScope.kt @@ -10,7 +10,6 @@ fun foo() { // EXIST: catch // EXIST: class // EXIST: continue -// EXIST: default // EXIST: do // EXIST: else // EXIST: enum @@ -35,7 +34,6 @@ fun foo() { // EXIST: private // EXIST: protected // EXIST: public -// EXIST: ref // EXIST: return // EXIST: set // EXIST: super diff --git a/idea/testData/completion/keywords/InParametersList.kt b/idea/testData/completion/keywords/InParametersList.kt index 38b0beec93c..936832f8078 100644 --- a/idea/testData/completion/keywords/InParametersList.kt +++ b/idea/testData/completion/keywords/InParametersList.kt @@ -10,7 +10,6 @@ fun test() { // ABSENT: catch // ABSENT: class // ABSENT: continue -// ABSENT: default // ABSENT: do // ABSENT: else // ABSENT: enum @@ -35,7 +34,6 @@ fun test() { // ABSENT: private // ABSENT: protected // ABSENT: public -// EXIST: ref // ABSENT: return // ABSENT: set // ABSENT: super diff --git a/idea/testData/completion/keywords/InTypeScope.kt b/idea/testData/completion/keywords/InTypeScope.kt index e83a1f01f90..71218fbdc50 100644 --- a/idea/testData/completion/keywords/InTypeScope.kt +++ b/idea/testData/completion/keywords/InTypeScope.kt @@ -10,7 +10,6 @@ fun foo() { // EXIST: catch // EXIST: class // EXIST: continue -// EXIST: default // EXIST: do // EXIST: else // EXIST: enum @@ -35,7 +34,6 @@ fun foo() { // EXIST: private // EXIST: protected // EXIST: public -// EXIST: ref // EXIST: return // EXIST: set // EXIST: super