Added parsing of <#<template>#> blocks.
This commit is contained in:
@@ -84,7 +84,8 @@ public class JetExpressionParsing extends AbstractJetParsing {
|
|||||||
IDENTIFIER, // SimpleName
|
IDENTIFIER, // SimpleName
|
||||||
FIELD_IDENTIFIER, // Field reference
|
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(
|
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(
|
/*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"})
|
@SuppressWarnings({"UnusedDeclaration"})
|
||||||
@@ -506,6 +507,9 @@ public class JetExpressionParsing extends AbstractJetParsing {
|
|||||||
if (at(LPAR)) {
|
if (at(LPAR)) {
|
||||||
parseParenthesizedExpression();
|
parseParenthesizedExpression();
|
||||||
}
|
}
|
||||||
|
else if (at(IDE_TEMPLATE_START)) {
|
||||||
|
parseIdeTemplate();
|
||||||
|
}
|
||||||
else if (at(HASH)) {
|
else if (at(HASH)) {
|
||||||
parseTupleExpression();
|
parseTupleExpression();
|
||||||
}
|
}
|
||||||
@@ -1831,6 +1835,22 @@ public class JetExpressionParsing extends AbstractJetParsing {
|
|||||||
parseExpression();
|
parseExpression();
|
||||||
argument.done(VALUE_ARGUMENT);
|
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() {
|
public void parseObjectLiteral() {
|
||||||
PsiBuilder.Marker literal = mark();
|
PsiBuilder.Marker literal = mark();
|
||||||
|
|||||||
@@ -197,6 +197,8 @@ LONG_TEMPLATE_ENTRY_END=\}
|
|||||||
\!in{IDENTIFIER_PART} { yypushback(3); return JetTokens.EXCL; }
|
\!in{IDENTIFIER_PART} { yypushback(3); return JetTokens.EXCL; }
|
||||||
\!is{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.EQEQEQ ; }
|
||||||
"!==" { return JetTokens.EXCLEQEQEQ; }
|
"!==" { return JetTokens.EXCLEQEQEQ; }
|
||||||
"!in" { return JetTokens.NOT_IN; }
|
"!in" { return JetTokens.NOT_IN; }
|
||||||
|
|||||||
@@ -114,6 +114,9 @@ public interface JetTokens {
|
|||||||
JetToken HASH = new JetToken("HASH");
|
JetToken HASH = new JetToken("HASH");
|
||||||
JetToken AT = new JetToken("AT");
|
JetToken AT = new JetToken("AT");
|
||||||
JetToken ATAT = new JetToken("ATAT");
|
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);
|
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