From 8d79ea4a2f57f27b908ee71553545f5bd6a011dc Mon Sep 17 00:00:00 2001 From: Evgeny Gerashchenko Date: Thu, 2 Feb 2012 14:19:42 +0400 Subject: [PATCH] Added templates for val and var. Removed corresponding keywords from completion. --- .../jet/lang/parsing/JetParsing.java | 4 ++- .../JetKeywordCompletionContributor.java | 30 ++++++++++++------- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetParsing.java b/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetParsing.java index 77ee3bdbd67..d3894567682 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetParsing.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetParsing.java @@ -810,7 +810,9 @@ public class JetParsing extends AbstractJetParsing { if (at(COLON)) { advance(); // COLON - parseTypeRef(); + if (!parseIdeTemplate()) { + parseTypeRef(); + } } parseTypeConstraintsGuarded(typeParametersDeclared); diff --git a/idea/src/org/jetbrains/jet/plugin/completion/JetKeywordCompletionContributor.java b/idea/src/org/jetbrains/jet/plugin/completion/JetKeywordCompletionContributor.java index e7a9f190138..ce7e5f860fc 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/JetKeywordCompletionContributor.java +++ b/idea/src/org/jetbrains/jet/plugin/completion/JetKeywordCompletionContributor.java @@ -54,6 +54,12 @@ public class JetKeywordCompletionContributor extends CompletionContributor { private static final String IF_ELSE_TEMPLATE = "if (<##>) {\n<##>\n} else {\n<##>\n}"; private static final String IF_ELSE_ONELINE_TEMPLATE = "if (<##>) <##> else <##>"; private static final String FUN_TEMPLATE = "fun <##>(<##>) : <##> {\n<##>\n}"; + private static final String VAL_SIMPLE_TEMPLATE = "val <##> = <##>"; + private static final String VAL_WITH_TYPE_TEMPLATE = "val <##> : <##> = <##>"; + private static final String VAL_WITH_GETTER_TEMPLATE = "val <##> : <##>\nget() {\n<##>\n}"; + private static final String VAR_SIMPLE_TEMPLATE = "var <##> = <##>"; + private static final String VAR_WITH_TYPE_TEMPLATE = "var <##> : <##> = <##>"; + private static final String VAR_WITH_GETTER_AND_SETTER_TEMPLATE = "var <##> : <##>\nget() {\n<##>\n}\nset(value) {\n<##>\n}"; private static class CommentFilter implements ElementFilter { @Override @@ -190,8 +196,7 @@ public class JetKeywordCompletionContributor extends CompletionContributor { 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); + TRAIT_KEYWORD, TYPE_KEYWORD); registerScopeKeywordsCompletion(new InClassBodyFilter(), ABSTRACT_KEYWORD, CLASS_KEYWORD, ENUM_KEYWORD, @@ -199,8 +204,7 @@ public class JetKeywordCompletionContributor extends CompletionContributor { 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); + TRAIT_KEYWORD, TYPE_KEYWORD); registerScopeKeywordsCompletion(new InNonClassBlockFilter(), AS_KEYWORD, BREAK_KEYWORD, BY_KEYWORD, @@ -214,7 +218,7 @@ public class JetKeywordCompletionContributor extends CompletionContributor { 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, + TYPE_KEYWORD, VARARG_KEYWORD, WHEN_KEYWORD, WHERE_KEYWORD, WHILE_KEYWORD); @@ -225,11 +229,17 @@ public class JetKeywordCompletionContributor extends CompletionContributor { registerScopeKeywordsCompletion(new InParametersFilter(), OUT_KEYWORD); // templates - registerScopeKeywordsCompletion(new InTopFilter(), FUN_TEMPLATE); - registerScopeKeywordsCompletion(new InClassBodyFilter(), FUN_TEMPLATE); - registerScopeKeywordsCompletion(new InNonClassBlockFilter(), IF_TEMPLATE, IF_ELSE_TEMPLATE, IF_ELSE_ONELINE_TEMPLATE, FUN_TEMPLATE); - registerScopeKeywordsCompletion(new InPropertyFilter(), IF_ELSE_ONELINE_TEMPLATE); - registerScopeKeywordsCompletion(new InParametersFilter(), ArrayUtil.EMPTY_STRING_ARRAY); + registerScopeKeywordsCompletion(new InTopFilter(), + FUN_TEMPLATE, VAL_WITH_TYPE_TEMPLATE, VAL_WITH_GETTER_TEMPLATE, + VAR_WITH_TYPE_TEMPLATE, VAR_WITH_GETTER_AND_SETTER_TEMPLATE); + registerScopeKeywordsCompletion(new InClassBodyFilter(), + FUN_TEMPLATE, VAL_WITH_TYPE_TEMPLATE, VAL_WITH_GETTER_TEMPLATE, + VAR_WITH_TYPE_TEMPLATE, VAR_WITH_GETTER_AND_SETTER_TEMPLATE); + registerScopeKeywordsCompletion(new InNonClassBlockFilter(), + IF_TEMPLATE, IF_ELSE_TEMPLATE, IF_ELSE_ONELINE_TEMPLATE, + FUN_TEMPLATE, VAL_SIMPLE_TEMPLATE, VAR_SIMPLE_TEMPLATE); + registerScopeKeywordsCompletion(new InPropertyFilter(), + IF_ELSE_ONELINE_TEMPLATE); } private void registerScopeKeywordsCompletion(final ElementFilter placeFilter, String... keywords) {