Parse other use-site targeted annotations

This commit is contained in:
Yan Zhulanow
2015-07-16 17:17:08 +03:00
parent d56a3f97c6
commit 1010658a85
5 changed files with 264 additions and 4 deletions
@@ -134,6 +134,10 @@ public interface JetTokens {
JetToken EOL_OR_SEMICOLON = new JetToken("EOL_OR_SEMICOLON");
JetKeywordToken FILE_KEYWORD = JetKeywordToken.softKeyword("file");
JetKeywordToken FIELD_KEYWORD = JetKeywordToken.softKeyword("field");
JetKeywordToken PROPERTY_KEYWORD = JetKeywordToken.softKeyword("property");
JetKeywordToken RECEIVER_KEYWORD = JetKeywordToken.softKeyword("receiver");
JetKeywordToken PARAM_KEYWORD = JetKeywordToken.softKeyword("param");
JetKeywordToken SPARAM_KEYWORD = JetKeywordToken.softKeyword("sparam");
JetKeywordToken IMPORT_KEYWORD = JetKeywordToken.softKeyword("import");
JetKeywordToken WHERE_KEYWORD = JetKeywordToken.softKeyword("where");
JetKeywordToken BY_KEYWORD = JetKeywordToken.softKeyword("by");
@@ -176,7 +180,7 @@ public interface JetTokens {
OVERRIDE_KEYWORD, PRIVATE_KEYWORD, PUBLIC_KEYWORD, INTERNAL_KEYWORD, PROTECTED_KEYWORD,
CATCH_KEYWORD, FINALLY_KEYWORD, OUT_KEYWORD, FINAL_KEYWORD, VARARG_KEYWORD, REIFIED_KEYWORD,
DYNAMIC_KEYWORD, COMPANION_KEYWORD, CONSTRUCTOR_KEYWORD, INIT_KEYWORD, SEALED_KEYWORD,
FIELD_KEYWORD
FIELD_KEYWORD, PROPERTY_KEYWORD, RECEIVER_KEYWORD, PARAM_KEYWORD, SPARAM_KEYWORD
);
/*
@@ -64,7 +64,8 @@ public class JetParsing extends AbstractJetParsing {
private static final TokenSet LAMBDA_VALUE_PARAMETER_FIRST =
TokenSet.orSet(TokenSet.create(IDENTIFIER, LBRACKET), MODIFIER_KEYWORDS);
private static final TokenSet SOFT_KEYWORDS_AT_MEMBER_START = TokenSet.create(CONSTRUCTOR_KEYWORD, INIT_KEYWORD);
private static final TokenSet ANNOTATION_TARGETS = TokenSet.create(FILE_KEYWORD, FIELD_KEYWORD);
private static final TokenSet ANNOTATION_TARGETS = TokenSet.create(
FILE_KEYWORD, FIELD_KEYWORD, GET_KEYWORD, SET_KEYWORD, PROPERTY_KEYWORD, RECEIVER_KEYWORD, PARAM_KEYWORD, SPARAM_KEYWORD);
static JetParsing createForTopLevel(SemanticWhitespaceAwarePsiBuilder builder) {
JetParsing jetParsing = new JetParsing(builder);
@@ -544,8 +545,18 @@ public class JetParsing extends AbstractJetParsing {
* : annotationPrefix "[" unescapedAnnotation+ "]"
* ;
*
* annotationUseSiteTarget
* : "file"
* : "field"
* : "property"
* : "get"
* : "set"
* : "param"
* : "sparam"
* ;
*
* annotationPrefix:
* : ("@" (":" ("file" | "field"))?)
* : ("@" (annotationUseSiteTarget ":")?)
* ;
*/
private boolean parseAnnotationOrList(AnnotationParsingMode mode) {