Added templates for class and trait.
This commit is contained in:
@@ -388,7 +388,9 @@ public class JetParsing extends AbstractJetParsing {
|
|||||||
assert _atSet(CLASS_KEYWORD, TRAIT_KEYWORD);
|
assert _atSet(CLASS_KEYWORD, TRAIT_KEYWORD);
|
||||||
advance(); // CLASS_KEYWORD or TRAIT_KEYWORD
|
advance(); // CLASS_KEYWORD or TRAIT_KEYWORD
|
||||||
|
|
||||||
expect(IDENTIFIER, "Class name expected", CLASS_NAME_RECOVERY_SET);
|
if (!parseIdeTemplate()) {
|
||||||
|
expect(IDENTIFIER, "Class name expected", CLASS_NAME_RECOVERY_SET);
|
||||||
|
}
|
||||||
boolean typeParametersDeclared = parseTypeParameterList(TYPE_PARAMETER_GT_RECOVERY_SET);
|
boolean typeParametersDeclared = parseTypeParameterList(TYPE_PARAMETER_GT_RECOVERY_SET);
|
||||||
|
|
||||||
PsiBuilder.Marker beforeConstructorModifiers = mark();
|
PsiBuilder.Marker beforeConstructorModifiers = mark();
|
||||||
@@ -446,29 +448,31 @@ public class JetParsing extends AbstractJetParsing {
|
|||||||
myBuilder.enableNewlines();
|
myBuilder.enableNewlines();
|
||||||
advance(); // LBRACE
|
advance(); // LBRACE
|
||||||
|
|
||||||
while (!eof() && !at(RBRACE)) {
|
if (!parseIdeTemplate()) {
|
||||||
PsiBuilder.Marker entryOrMember = mark();
|
while (!eof() && !at(RBRACE)) {
|
||||||
|
PsiBuilder.Marker entryOrMember = mark();
|
||||||
|
|
||||||
TokenSet constructorNameFollow = TokenSet.create(SEMICOLON, COLON, LPAR, LT, LBRACE);
|
TokenSet constructorNameFollow = TokenSet.create(SEMICOLON, COLON, LPAR, LT, LBRACE);
|
||||||
int lastId = findLastBefore(ENUM_MEMBER_FIRST, constructorNameFollow, false);
|
int lastId = findLastBefore(ENUM_MEMBER_FIRST, constructorNameFollow, false);
|
||||||
TokenDetector enumDetector = new TokenDetector(ENUM_KEYWORD);
|
TokenDetector enumDetector = new TokenDetector(ENUM_KEYWORD);
|
||||||
createTruncatedBuilder(lastId).parseModifierList(MODIFIER_LIST, enumDetector, false);
|
createTruncatedBuilder(lastId).parseModifierList(MODIFIER_LIST, enumDetector, false);
|
||||||
|
|
||||||
IElementType type;
|
IElementType type;
|
||||||
if (at(IDENTIFIER)) {
|
if (at(IDENTIFIER)) {
|
||||||
parseEnumEntry();
|
parseEnumEntry();
|
||||||
type = ENUM_ENTRY;
|
type = ENUM_ENTRY;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
type = parseMemberDeclarationRest(enumDetector.isDetected());
|
type = parseMemberDeclarationRest(enumDetector.isDetected());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type == null) {
|
if (type == null) {
|
||||||
errorAndAdvance("Expecting an enum entry or member declaration");
|
errorAndAdvance("Expecting an enum entry or member declaration");
|
||||||
entryOrMember.drop();
|
entryOrMember.drop();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
entryOrMember.done(type);
|
entryOrMember.done(type);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -522,11 +526,13 @@ public class JetParsing extends AbstractJetParsing {
|
|||||||
myBuilder.enableNewlines();
|
myBuilder.enableNewlines();
|
||||||
expect(LBRACE, "Expecting a class body", TokenSet.create(LBRACE));
|
expect(LBRACE, "Expecting a class body", TokenSet.create(LBRACE));
|
||||||
|
|
||||||
while (!eof()) {
|
if (!parseIdeTemplate()) {
|
||||||
if (at(RBRACE)) {
|
while (!eof()) {
|
||||||
break;
|
if (at(RBRACE)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
parseMemberDeclaration();
|
||||||
}
|
}
|
||||||
parseMemberDeclaration();
|
|
||||||
}
|
}
|
||||||
expect(RBRACE, "Missing '}");
|
expect(RBRACE, "Missing '}");
|
||||||
myBuilder.restoreNewlinesState();
|
myBuilder.restoreNewlinesState();
|
||||||
|
|||||||
@@ -60,6 +60,8 @@ public class JetKeywordCompletionContributor extends CompletionContributor {
|
|||||||
private static final String VAR_SIMPLE_TEMPLATE = "var <#<name>#> = <#<value>#>";
|
private static final String VAR_SIMPLE_TEMPLATE = "var <#<name>#> = <#<value>#>";
|
||||||
private static final String VAR_WITH_TYPE_TEMPLATE = "var <#<name>#> : <#<varType>#> = <#<initial>#>";
|
private static final String VAR_WITH_TYPE_TEMPLATE = "var <#<name>#> : <#<varType>#> = <#<initial>#>";
|
||||||
private static final String VAR_WITH_GETTER_AND_SETTER_TEMPLATE = "var <#<name>#> : <#<varType>#>\nget() {\n<#<body>#>\n}\nset(value) {\n<#<body>#>\n}";
|
private static final String VAR_WITH_GETTER_AND_SETTER_TEMPLATE = "var <#<name>#> : <#<varType>#>\nget() {\n<#<body>#>\n}\nset(value) {\n<#<body>#>\n}";
|
||||||
|
private static final String TRAIT_TEMPLATE = "trait <#<name>#> {\n<#<body>#>\n}";
|
||||||
|
private static final String CLASS_TEMPLATE = "class <#<name>#> {\n<#<body>#>\n}";
|
||||||
|
|
||||||
private static class CommentFilter implements ElementFilter {
|
private static class CommentFilter implements ElementFilter {
|
||||||
@Override
|
@Override
|
||||||
@@ -191,24 +193,24 @@ public class JetKeywordCompletionContributor extends CompletionContributor {
|
|||||||
|
|
||||||
public JetKeywordCompletionContributor() {
|
public JetKeywordCompletionContributor() {
|
||||||
registerScopeKeywordsCompletion(new InTopFilter(),
|
registerScopeKeywordsCompletion(new InTopFilter(),
|
||||||
ABSTRACT_KEYWORD, CLASS_KEYWORD, ENUM_KEYWORD,
|
ABSTRACT_KEYWORD, ENUM_KEYWORD,
|
||||||
FINAL_KEYWORD, GET_KEYWORD,
|
FINAL_KEYWORD, GET_KEYWORD,
|
||||||
IMPORT_KEYWORD, INLINE_KEYWORD, INTERNAL_KEYWORD,
|
IMPORT_KEYWORD, INLINE_KEYWORD, INTERNAL_KEYWORD,
|
||||||
OPEN_KEYWORD, PACKAGE_KEYWORD, PRIVATE_KEYWORD,
|
OPEN_KEYWORD, PACKAGE_KEYWORD, PRIVATE_KEYWORD,
|
||||||
PROTECTED_KEYWORD, PUBLIC_KEYWORD, SET_KEYWORD,
|
PROTECTED_KEYWORD, PUBLIC_KEYWORD, SET_KEYWORD,
|
||||||
TRAIT_KEYWORD, TYPE_KEYWORD);
|
TYPE_KEYWORD);
|
||||||
|
|
||||||
registerScopeKeywordsCompletion(new InClassBodyFilter(),
|
registerScopeKeywordsCompletion(new InClassBodyFilter(),
|
||||||
ABSTRACT_KEYWORD, CLASS_KEYWORD, ENUM_KEYWORD,
|
ABSTRACT_KEYWORD, ENUM_KEYWORD,
|
||||||
FINAL_KEYWORD, GET_KEYWORD,
|
FINAL_KEYWORD, GET_KEYWORD,
|
||||||
INLINE_KEYWORD, INTERNAL_KEYWORD, OBJECT_KEYWORD,
|
INLINE_KEYWORD, INTERNAL_KEYWORD, OBJECT_KEYWORD,
|
||||||
OPEN_KEYWORD, OVERRIDE_KEYWORD, PRIVATE_KEYWORD,
|
OPEN_KEYWORD, OVERRIDE_KEYWORD, PRIVATE_KEYWORD,
|
||||||
PROTECTED_KEYWORD, PUBLIC_KEYWORD, SET_KEYWORD,
|
PROTECTED_KEYWORD, PUBLIC_KEYWORD, SET_KEYWORD,
|
||||||
TRAIT_KEYWORD, TYPE_KEYWORD);
|
TYPE_KEYWORD);
|
||||||
|
|
||||||
registerScopeKeywordsCompletion(new InNonClassBlockFilter(),
|
registerScopeKeywordsCompletion(new InNonClassBlockFilter(),
|
||||||
AS_KEYWORD, BREAK_KEYWORD, BY_KEYWORD,
|
AS_KEYWORD, BREAK_KEYWORD, BY_KEYWORD,
|
||||||
CATCH_KEYWORD, CLASS_KEYWORD, CONTINUE_KEYWORD,
|
CATCH_KEYWORD, CONTINUE_KEYWORD,
|
||||||
DO_KEYWORD, ELSE_KEYWORD, ENUM_KEYWORD,
|
DO_KEYWORD, ELSE_KEYWORD, ENUM_KEYWORD,
|
||||||
FALSE_KEYWORD, FINALLY_KEYWORD, FOR_KEYWORD,
|
FALSE_KEYWORD, FINALLY_KEYWORD, FOR_KEYWORD,
|
||||||
GET_KEYWORD,
|
GET_KEYWORD,
|
||||||
@@ -217,7 +219,7 @@ public class JetKeywordCompletionContributor extends CompletionContributor {
|
|||||||
PRIVATE_KEYWORD, PROTECTED_KEYWORD, PUBLIC_KEYWORD,
|
PRIVATE_KEYWORD, PROTECTED_KEYWORD, PUBLIC_KEYWORD,
|
||||||
RETURN_KEYWORD, SET_KEYWORD, SUPER_KEYWORD,
|
RETURN_KEYWORD, SET_KEYWORD, SUPER_KEYWORD,
|
||||||
CAPITALIZED_THIS_KEYWORD, THIS_KEYWORD, THROW_KEYWORD,
|
CAPITALIZED_THIS_KEYWORD, THIS_KEYWORD, THROW_KEYWORD,
|
||||||
TRAIT_KEYWORD, TRUE_KEYWORD, TRY_KEYWORD,
|
TRUE_KEYWORD, TRY_KEYWORD,
|
||||||
TYPE_KEYWORD,
|
TYPE_KEYWORD,
|
||||||
VARARG_KEYWORD, WHEN_KEYWORD, WHERE_KEYWORD,
|
VARARG_KEYWORD, WHEN_KEYWORD, WHERE_KEYWORD,
|
||||||
WHILE_KEYWORD);
|
WHILE_KEYWORD);
|
||||||
@@ -231,13 +233,16 @@ public class JetKeywordCompletionContributor extends CompletionContributor {
|
|||||||
// templates
|
// templates
|
||||||
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,
|
||||||
|
TRAIT_TEMPLATE, CLASS_TEMPLATE);
|
||||||
registerScopeKeywordsCompletion(new InClassBodyFilter(),
|
registerScopeKeywordsCompletion(new InClassBodyFilter(),
|
||||||
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,
|
||||||
|
TRAIT_TEMPLATE, CLASS_TEMPLATE);
|
||||||
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);
|
||||||
registerScopeKeywordsCompletion(new InPropertyFilter(),
|
registerScopeKeywordsCompletion(new InPropertyFilter(),
|
||||||
IF_ELSE_ONELINE_TEMPLATE);
|
IF_ELSE_ONELINE_TEMPLATE);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user