Added parsing of <#<template>#> blocks.
This commit is contained in:
@@ -84,7 +84,8 @@ public class JetExpressionParsing extends AbstractJetParsing {
|
||||
IDENTIFIER, // SimpleName
|
||||
FIELD_IDENTIFIER, // Field reference
|
||||
|
||||
PACKAGE_KEYWORD // for absolute qualified names
|
||||
PACKAGE_KEYWORD, // for absolute qualified names
|
||||
IDE_TEMPLATE_START
|
||||
);
|
||||
|
||||
private static final TokenSet STATEMENT_FIRST = TokenSet.orSet(
|
||||
@@ -102,7 +103,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
|
||||
);
|
||||
|
||||
/*package*/ static final TokenSet EXPRESSION_FOLLOW = TokenSet.create(
|
||||
SEMICOLON, ARROW, COMMA, RBRACE, RPAR, RBRACKET
|
||||
SEMICOLON, ARROW, COMMA, RBRACE, RPAR, RBRACKET, IDE_TEMPLATE_END
|
||||
);
|
||||
|
||||
@SuppressWarnings({"UnusedDeclaration"})
|
||||
@@ -506,6 +507,9 @@ public class JetExpressionParsing extends AbstractJetParsing {
|
||||
if (at(LPAR)) {
|
||||
parseParenthesizedExpression();
|
||||
}
|
||||
else if (at(IDE_TEMPLATE_START)) {
|
||||
parseIdeTemplate();
|
||||
}
|
||||
else if (at(HASH)) {
|
||||
parseTupleExpression();
|
||||
}
|
||||
@@ -1831,6 +1835,22 @@ public class JetExpressionParsing extends AbstractJetParsing {
|
||||
parseExpression();
|
||||
argument.done(VALUE_ARGUMENT);
|
||||
}
|
||||
|
||||
/*
|
||||
* "<#<" expression ">#>"
|
||||
*/
|
||||
private void parseIdeTemplate() {
|
||||
PsiBuilder.Marker placeholder = mark();
|
||||
|
||||
advance();
|
||||
if (at(IDE_TEMPLATE_END)) {
|
||||
error("Expecting IDE template");
|
||||
} else {
|
||||
parseExpression();
|
||||
}
|
||||
expect(IDE_TEMPLATE_END, "");
|
||||
placeholder.done(PARENTHESIZED);
|
||||
}
|
||||
|
||||
public void parseObjectLiteral() {
|
||||
PsiBuilder.Marker literal = mark();
|
||||
|
||||
@@ -197,6 +197,8 @@ LONG_TEMPLATE_ENTRY_END=\}
|
||||
\!in{IDENTIFIER_PART} { yypushback(3); return JetTokens.EXCL; }
|
||||
\!is{IDENTIFIER_PART} { yypushback(3); return JetTokens.EXCL; }
|
||||
|
||||
"<#<" { return JetTokens.IDE_TEMPLATE_START ; }
|
||||
">#>" { return JetTokens.IDE_TEMPLATE_END ; }
|
||||
"===" { return JetTokens.EQEQEQ ; }
|
||||
"!==" { return JetTokens.EXCLEQEQEQ; }
|
||||
"!in" { return JetTokens.NOT_IN; }
|
||||
|
||||
@@ -114,6 +114,9 @@ public interface JetTokens {
|
||||
JetToken HASH = new JetToken("HASH");
|
||||
JetToken AT = new JetToken("AT");
|
||||
JetToken ATAT = new JetToken("ATAT");
|
||||
|
||||
JetToken IDE_TEMPLATE_START = new JetToken("IDE_TEMPLATE_START");
|
||||
JetToken IDE_TEMPLATE_END = new JetToken("IDE_TEMPLATE_END");
|
||||
|
||||
TokenSet LABELS = TokenSet.create(AT, ATAT, LABEL_IDENTIFIER);
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user