Made parser aware of templates in parameters, return type positions for all functions; of name, receiver positions for extension functions.
This commit is contained in:
@@ -965,8 +965,10 @@ public class JetParsing extends AbstractJetParsing {
|
|||||||
if (at(COLON)) {
|
if (at(COLON)) {
|
||||||
advance(); // COLON
|
advance(); // COLON
|
||||||
|
|
||||||
|
if (!parseIdeTemplate()) {
|
||||||
parseTypeRef();
|
parseTypeRef();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
parseTypeConstraintsGuarded(typeParameterListOccurred);
|
parseTypeConstraintsGuarded(typeParameterListOccurred);
|
||||||
|
|
||||||
@@ -992,6 +994,10 @@ public class JetParsing extends AbstractJetParsing {
|
|||||||
expect(IDENTIFIER, "Expecting " + title + " name or receiver type", nameFollow);
|
expect(IDENTIFIER, "Expecting " + title + " name or receiver type", nameFollow);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
if (parseIdeTemplate()) {
|
||||||
|
expect(DOT, "Expecting '.' after receiver template");
|
||||||
|
}
|
||||||
|
else {
|
||||||
createTruncatedBuilder(lastDot).parseTypeRef();
|
createTruncatedBuilder(lastDot).parseTypeRef();
|
||||||
|
|
||||||
if (atSet(RECEIVER_TYPE_TERMINATORS)) {
|
if (atSet(RECEIVER_TYPE_TERMINATORS)) {
|
||||||
@@ -1000,10 +1006,13 @@ public class JetParsing extends AbstractJetParsing {
|
|||||||
else {
|
else {
|
||||||
errorWithRecovery("Expecting '.' before a " + title + " name", nameFollow);
|
errorWithRecovery("Expecting '.' before a " + title + " name", nameFollow);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!parseIdeTemplate()) {
|
||||||
expect(IDENTIFIER, "Expecting " + title + " name", nameFollow);
|
expect(IDENTIFIER, "Expecting " + title + " name", nameFollow);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* functionBody
|
* functionBody
|
||||||
@@ -1537,6 +1546,7 @@ public class JetParsing extends AbstractJetParsing {
|
|||||||
myBuilder.disableNewlines();
|
myBuilder.disableNewlines();
|
||||||
expect(LPAR, "Expecting '(", recoverySet);
|
expect(LPAR, "Expecting '(", recoverySet);
|
||||||
|
|
||||||
|
if (!parseIdeTemplate()) {
|
||||||
if (!at(RPAR) && !atSet(recoverySet)) {
|
if (!at(RPAR) && !atSet(recoverySet)) {
|
||||||
while (true) {
|
while (true) {
|
||||||
if (at(COMMA)) {
|
if (at(COMMA)) {
|
||||||
@@ -1560,6 +1570,8 @@ public class JetParsing extends AbstractJetParsing {
|
|||||||
advance(); // COMMA
|
advance(); // COMMA
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
expect(RPAR, "Expecting ')'", recoverySet);
|
expect(RPAR, "Expecting ')'", recoverySet);
|
||||||
myBuilder.restoreNewlinesState();
|
myBuilder.restoreNewlinesState();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user