More tests, minor fixes

This commit is contained in:
Andrey Breslav
2010-12-21 19:46:20 +03:00
parent b521a7a244
commit 198c46528c
19 changed files with 445 additions and 91 deletions
@@ -431,6 +431,7 @@ public class JetParsing extends AbstractJetParsing {
* ;
*/
private void parseClassBody() {
// TODO: enum classes
assert at(LBRACE);
PsiBuilder.Marker body = mark();
advance(); // LBRACE
@@ -1107,7 +1108,7 @@ public class JetParsing extends AbstractJetParsing {
advance(); // DOT
}
userType.done(USER_TYPE);
userType.done(TYPE_REFERENCE);
}
/*
@@ -1245,13 +1246,13 @@ public class JetParsing extends AbstractJetParsing {
error("Expecting a parameter declaration");
break;
}
if (!parseValueParameter()) {
if (isFunctionTypeContents) {
parseModifierList(); // lazy, out, ref
parseTypeRef();
} else {
errorAndAdvance("Expecting a parameter declaration");
if (isFunctionTypeContents) {
if (!tryParseValueParameter()) {
parseModifierList(); // lazy, out, ref
parseTypeRef();
}
} else {
parseValueParameter();
}
if (!at(COMMA)) break;
advance(); // COMMA
@@ -1266,7 +1267,7 @@ public class JetParsing extends AbstractJetParsing {
* : modifiers functionParameterRest
* ;
*/
private boolean parseValueParameter() {
private boolean tryParseValueParameter() {
PsiBuilder.Marker parameter = mark();
int lastId = findLastBefore(TokenSet.create(IDENTIFIER), TokenSet.create(COMMA, RPAR, COLON), false);
@@ -1281,4 +1282,20 @@ public class JetParsing extends AbstractJetParsing {
return true;
}
/*
* functionParameter
* : modifiers functionParameterRest
* ;
*/
private void parseValueParameter() {
PsiBuilder.Marker parameter = mark();
int lastId = findLastBefore(TokenSet.create(IDENTIFIER), TokenSet.create(COMMA, RPAR, COLON), false);
createTruncatedBuilder(lastId).parseModifierList();
parseFunctionParameterRest();
parameter.done(VALUE_PARAMETER);
}
}