Made parser aware of templates in function name position.
This commit is contained in:
@@ -508,7 +508,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
|
||||
parseParenthesizedExpression();
|
||||
}
|
||||
else if (at(IDE_TEMPLATE_START)) {
|
||||
parseIdeTemplate();
|
||||
myJetParsing.parseIdeTemplate();
|
||||
}
|
||||
else if (at(HASH)) {
|
||||
parseTupleExpression();
|
||||
@@ -1836,22 +1836,6 @@ public class JetExpressionParsing extends AbstractJetParsing {
|
||||
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();
|
||||
PsiBuilder.Marker declaration = mark();
|
||||
|
||||
@@ -987,7 +987,10 @@ public class JetParsing extends AbstractJetParsing {
|
||||
private void parseReceiverType(String title, TokenSet nameFollow, int lastDot) {
|
||||
if (lastDot == -1) { // There's no explicit receiver type specified
|
||||
parseAnnotations(false);
|
||||
expect(IDENTIFIER, "Expecting " + title + " name or receiver type", nameFollow);
|
||||
|
||||
if (!parseIdeTemplate()) {
|
||||
expect(IDENTIFIER, "Expecting " + title + " name or receiver type", nameFollow);
|
||||
}
|
||||
} else {
|
||||
createTruncatedBuilder(lastDot).parseTypeRef();
|
||||
|
||||
@@ -1618,6 +1621,20 @@ public class JetParsing extends AbstractJetParsing {
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
* "<#<" expression ">#>"
|
||||
*/
|
||||
boolean parseIdeTemplate() {
|
||||
if (at(IDE_TEMPLATE_START)) {
|
||||
advance();
|
||||
expect(IDENTIFIER, "Expecting identifier inside template");
|
||||
expect(IDE_TEMPLATE_END, "Expecting IDE template end after identifier");
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected JetParsing create(SemanticWhitespaceAwarePsiBuilder builder) {
|
||||
return createForTopLevel(builder);
|
||||
|
||||
Reference in New Issue
Block a user