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