Added template for 'when' expression and entry.
This commit is contained in:
@@ -793,11 +793,13 @@ public class JetExpressionParsing extends AbstractJetParsing {
|
|||||||
* : whenCondition{","} "=>" element SEMI
|
* : whenCondition{","} "=>" element SEMI
|
||||||
*/
|
*/
|
||||||
private void parseWhenEntryNotElse() {
|
private void parseWhenEntryNotElse() {
|
||||||
while (true) {
|
if (!myJetParsing.parseIdeTemplate()) {
|
||||||
while (at(COMMA)) errorAndAdvance("Expecting a when-condition");
|
while (true) {
|
||||||
parseWhenCondition();
|
while (at(COMMA)) errorAndAdvance("Expecting a when-condition");
|
||||||
if (!at(COMMA)) break;
|
parseWhenCondition();
|
||||||
advance(); // COMMA
|
if (!at(COMMA)) break;
|
||||||
|
advance(); // COMMA
|
||||||
|
}
|
||||||
}
|
}
|
||||||
expect(ARROW, "Expecting '->' or 'when'", WHEN_CONDITION_RECOVERY_SET);
|
expect(ARROW, "Expecting '->' or 'when'", WHEN_CONDITION_RECOVERY_SET);
|
||||||
if (atSet(WHEN_CONDITION_RECOVERY_SET)) {
|
if (atSet(WHEN_CONDITION_RECOVERY_SET)) {
|
||||||
|
|||||||
@@ -65,6 +65,9 @@ public class JetKeywordCompletionContributor extends CompletionContributor {
|
|||||||
private static final String OBJECT_NAMED_TEMPLATE = "object <#<name>#> {\n<#<body>#>\n}";
|
private static final String OBJECT_NAMED_TEMPLATE = "object <#<name>#> {\n<#<body>#>\n}";
|
||||||
private static final String CLASS_OBJECT_TEMPLATE = "class object {\n<#<body>#>\n}";
|
private static final String CLASS_OBJECT_TEMPLATE = "class object {\n<#<body>#>\n}";
|
||||||
private static final String FOR_TEMPLATE = "for (<#<i>#> in <#<elements>#>) {\n<#<body>#>\n}";
|
private static final String FOR_TEMPLATE = "for (<#<i>#> in <#<elements>#>) {\n<#<body>#>\n}";
|
||||||
|
private static final String WHEN_TEMPLATE = "when (<#<expression>#>) {\n<#<condition>#> -> <#<value>#>\n" +
|
||||||
|
"else -> <#<elseValue>#>\n}";
|
||||||
|
private static final String WHEN_ENTRY_TEMPLATE = "<#<condition>#> -> <#<value>#>";
|
||||||
|
|
||||||
private static class CommentFilter implements ElementFilter {
|
private static class CommentFilter implements ElementFilter {
|
||||||
@Override
|
@Override
|
||||||
@@ -162,6 +165,18 @@ public class JetKeywordCompletionContributor extends CompletionContributor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static class InWhenFilter implements ElementFilter {
|
||||||
|
@Override
|
||||||
|
public boolean isAcceptable(Object element, PsiElement context) {
|
||||||
|
return PsiTreeUtil.getParentOfType(context, JetWhenExpression.class, false) != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isClassAcceptable(Class hintClass) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static class KeywordsCompletionProvider extends CompletionProvider<CompletionParameters> {
|
public static class KeywordsCompletionProvider extends CompletionProvider<CompletionParameters> {
|
||||||
|
|
||||||
private final Collection<LookupElement> elements;
|
private final Collection<LookupElement> elements;
|
||||||
@@ -224,7 +239,7 @@ public class JetKeywordCompletionContributor extends CompletionContributor {
|
|||||||
CAPITALIZED_THIS_KEYWORD, THIS_KEYWORD, THROW_KEYWORD,
|
CAPITALIZED_THIS_KEYWORD, THIS_KEYWORD, THROW_KEYWORD,
|
||||||
TRUE_KEYWORD, TRY_KEYWORD,
|
TRUE_KEYWORD, TRY_KEYWORD,
|
||||||
TYPE_KEYWORD,
|
TYPE_KEYWORD,
|
||||||
VARARG_KEYWORD, WHEN_KEYWORD, WHERE_KEYWORD,
|
VARARG_KEYWORD, WHERE_KEYWORD,
|
||||||
WHILE_KEYWORD);
|
WHILE_KEYWORD);
|
||||||
|
|
||||||
registerScopeKeywordsCompletion(new InPropertyFilter(),
|
registerScopeKeywordsCompletion(new InPropertyFilter(),
|
||||||
@@ -234,6 +249,8 @@ public class JetKeywordCompletionContributor extends CompletionContributor {
|
|||||||
registerScopeKeywordsCompletion(new InParametersFilter(), OUT_KEYWORD);
|
registerScopeKeywordsCompletion(new InParametersFilter(), OUT_KEYWORD);
|
||||||
|
|
||||||
// templates
|
// templates
|
||||||
|
registerScopeKeywordsCompletion(new InWhenFilter(),
|
||||||
|
WHEN_ENTRY_TEMPLATE);
|
||||||
registerScopeKeywordsCompletion(new InTopFilter(),
|
registerScopeKeywordsCompletion(new InTopFilter(),
|
||||||
FUN_TEMPLATE, VAL_WITH_TYPE_TEMPLATE, VAL_WITH_GETTER_TEMPLATE,
|
FUN_TEMPLATE, VAL_WITH_TYPE_TEMPLATE, VAL_WITH_GETTER_TEMPLATE,
|
||||||
VAR_WITH_TYPE_TEMPLATE, VAR_WITH_GETTER_AND_SETTER_TEMPLATE,
|
VAR_WITH_TYPE_TEMPLATE, VAR_WITH_GETTER_AND_SETTER_TEMPLATE,
|
||||||
@@ -245,9 +262,9 @@ public class JetKeywordCompletionContributor extends CompletionContributor {
|
|||||||
registerScopeKeywordsCompletion(new InNonClassBlockFilter(),
|
registerScopeKeywordsCompletion(new InNonClassBlockFilter(),
|
||||||
IF_TEMPLATE, IF_ELSE_TEMPLATE, IF_ELSE_ONELINE_TEMPLATE,
|
IF_TEMPLATE, IF_ELSE_TEMPLATE, IF_ELSE_ONELINE_TEMPLATE,
|
||||||
FUN_TEMPLATE, VAL_SIMPLE_TEMPLATE, VAR_SIMPLE_TEMPLATE,
|
FUN_TEMPLATE, VAL_SIMPLE_TEMPLATE, VAR_SIMPLE_TEMPLATE,
|
||||||
TRAIT_TEMPLATE, CLASS_TEMPLATE, OBJECT_NAMED_TEMPLATE, FOR_TEMPLATE);
|
TRAIT_TEMPLATE, CLASS_TEMPLATE, OBJECT_NAMED_TEMPLATE, FOR_TEMPLATE, WHEN_TEMPLATE);
|
||||||
registerScopeKeywordsCompletion(new InPropertyFilter(),
|
registerScopeKeywordsCompletion(new InPropertyFilter(),
|
||||||
IF_ELSE_ONELINE_TEMPLATE);
|
IF_ELSE_ONELINE_TEMPLATE, WHEN_TEMPLATE);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void registerScopeKeywordsCompletion(final ElementFilter placeFilter, String... keywords) {
|
private void registerScopeKeywordsCompletion(final ElementFilter placeFilter, String... keywords) {
|
||||||
|
|||||||
Reference in New Issue
Block a user