Cosmetics

This commit is contained in:
Andrey Breslav
2011-01-03 17:14:03 +03:00
parent c4fa51c16e
commit 4430176902
7 changed files with 84 additions and 87 deletions
@@ -69,7 +69,7 @@ import static org.jetbrains.jet.lexer.JetTokens.*;
IElementType tt = tt();
if (recoverySet == null || recoverySet.contains(tt)
|| (recoverySet.contains(EOL_OR_SEMICOLON)
&& (eof() || tt == SEMICOLON || myBuilder.eolInLastWhitespace()))) {
&& (eof() || tt == SEMICOLON || myBuilder.newlineBeforeCurrentToken()))) {
error(message);
}
else {
@@ -103,7 +103,7 @@ import static org.jetbrains.jet.lexer.JetTokens.*;
if (expectation == EOL_OR_SEMICOLON) {
if (eof()) return true;
if (token == SEMICOLON) return true;
if (myBuilder.eolInLastWhitespace()) return true;
if (myBuilder.newlineBeforeCurrentToken()) return true;
}
if (token == IDENTIFIER && expectation instanceof JetKeywordToken) {
JetKeywordToken expectedKeyword = (JetKeywordToken) expectation;
@@ -132,7 +132,7 @@ import static org.jetbrains.jet.lexer.JetTokens.*;
if (set.contains(EOL_OR_SEMICOLON)) {
if (eof()) return true;
if (token == SEMICOLON) return true;
if (myBuilder.eolInLastWhitespace()) return true;
if (myBuilder.newlineBeforeCurrentToken()) return true;
}
if (token == IDENTIFIER) {
JetKeywordToken keywordToken = SOFT_KEYWORD_TEXTS.get(myBuilder.getTokenText());
@@ -229,7 +229,7 @@ import static org.jetbrains.jet.lexer.JetTokens.*;
}
protected boolean eol() {
return myBuilder.eolInLastWhitespace() || eof();
return myBuilder.newlineBeforeCurrentToken() || eof();
}
protected abstract JetParsing create(SemanticWhitespaceAwarePsiBuilder builder);
@@ -143,7 +143,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
precedence.parseHigherPrecedence(this);
while (!myBuilder.eolInLastWhitespace() && atSet(precedence.getOperations())) {
while (!myBuilder.newlineBeforeCurrentToken() && atSet(precedence.getOperations())) {
advance(); // operation
precedence.parseRightHandSide(this);
expression.done(BINARY_EXPRESSION);
@@ -187,7 +187,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
PsiBuilder.Marker expression = mark();
parseAtomicExpression();
while (true) {
if (myBuilder.eolInLastWhitespace()) {
if (myBuilder.newlineBeforeCurrentToken()) {
break;
} else if (at(LBRACKET)) {
parseArrayAccess();
@@ -211,7 +211,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
});
if (gtPos >= 0) {
myJetParsing.parseTypeArgumentList();
if (!myBuilder.eolInLastWhitespace() && at(LPAR)) parseValueArgumentList();
if (!myBuilder.newlineBeforeCurrentToken() && at(LPAR)) parseValueArgumentList();
parseCallWithClosure();
expression.done(CALL_EXPRESSION);
} else {
@@ -247,7 +247,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
* expression functionLiteral?
*/
protected boolean parseCallWithClosure() {
if (!myBuilder.eolInLastWhitespace() && at(LBRACE)) {
if (!myBuilder.newlineBeforeCurrentToken() && at(LBRACE)) {
parseFunctionLiteral();
return true;
}
@@ -405,7 +405,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
myJetParsing.parseAttributeList();
myBuilder.disableEols();
myBuilder.disableNewlines();
expect(CASE_KEYWORD, "Expecting 'case' to start pattern matching", TokenSet.create(RBRACE, IF_KEYWORD, DOUBLE_ARROW));
parsePattern();
@@ -417,7 +417,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
}
expect(DOUBLE_ARROW, "Expecting '=>'", TokenSet.create(RBRACE));
myBuilder.restoreEolsState();
myBuilder.restoreNewlinesState();
parseExpression();
@@ -517,7 +517,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
PsiBuilder.Marker indices = mark();
myBuilder.disableEols();
myBuilder.disableNewlines();
advance(); // LBRACKET
while (true) {
@@ -532,7 +532,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
}
expect(RBRACKET, "Expecting ']'");
myBuilder.restoreEolsState();
myBuilder.restoreNewlinesState();
indices.done(INDICES);
}
@@ -578,7 +578,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
PsiBuilder.Marker literal = mark();
myBuilder.enableEols();
myBuilder.enableNewlines();
advance(); // LBRACE
int doubleArrowPos = matchTokenStreamPredicate(new FirstBefore(new At(DOUBLE_ARROW), new At(RBRACE)) {
@@ -652,7 +652,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
body.done(BODY);
expect(RBRACE, "Expecting '}'");
myBuilder.restoreEolsState();
myBuilder.restoreNewlinesState();
literal.done(FUNCTION_LITERAL);
}
@@ -664,7 +664,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
PsiBuilder.Marker list = mark();
expect(LPAR, "Expecting a parameter list in parentheses (...)", TokenSet.create(DOUBLE_ARROW, COLON));
myBuilder.disableEols();
myBuilder.disableNewlines();
if (!at(RPAR)) {
while (true) {
@@ -691,7 +691,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
}
}
myBuilder.restoreEolsState();
myBuilder.restoreNewlinesState();
expect(RPAR, "Expecting ')", TokenSet.create(DOUBLE_ARROW, COLON));
list.done(VALUE_PARAMETER_LIST);
@@ -709,7 +709,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
while (at(SEMICOLON)) advance(); // SEMICOLON
} else if (at(RBRACE)) {
break;
} else if (!myBuilder.eolInLastWhitespace()) {
} else if (!myBuilder.newlineBeforeCurrentToken()) {
errorUntil("Unexpected tokens (use ';' to separate expressions on the same line", TokenSet.create(EOL_OR_SEMICOLON));
}
}
@@ -802,7 +802,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
advance(); // FOR_KEYWORD
myBuilder.disableEols();
myBuilder.disableNewlines();
expect(LPAR, "Expecting '(' to open a loop range", TokenSet.create(RPAR, VAL_KEYWORD, VAR_KEYWORD, IDENTIFIER));
PsiBuilder.Marker parameter = mark();
@@ -821,7 +821,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
range.done(LOOP_RANGE);
expectNoAdvance(RPAR, "Expecting ')'");
myBuilder.restoreEolsState();
myBuilder.restoreNewlinesState();
parseControlStructureBody();
@@ -920,7 +920,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
* "(" expression ")"
*/
private void parseCondition() {
myBuilder.disableEols();
myBuilder.disableNewlines();
expect(LPAR, "Expecting a condition in parentheses '(...)'");
PsiBuilder.Marker condition = mark();
@@ -928,7 +928,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
condition.done(CONDITION);
expect(RPAR, "Expecting ')");
myBuilder.restoreEolsState();
myBuilder.restoreNewlinesState();
}
/*
@@ -1006,13 +1006,13 @@ public class JetExpressionParsing extends AbstractJetParsing {
PsiBuilder.Marker typeof = mark();
advance(); // TYPEOF_KEYWORD
myBuilder.disableEols();
myBuilder.disableNewlines();
expect(LPAR, "Expecting '('");
parseExpression();
expect(RPAR, "Expecting ')'");
myBuilder.restoreEolsState();
myBuilder.restoreNewlinesState();
typeof.done(TYPEOF);
}
@@ -1027,7 +1027,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
PsiBuilder.Marker mark = mark();
myBuilder.disableEols();
myBuilder.disableNewlines();
advance(); // LPAR
if (!at(RPAR)) {
@@ -1044,7 +1044,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
}
expect(RPAR, "Expecting ')'");
myBuilder.restoreEolsState();
myBuilder.restoreNewlinesState();
mark.done(TUPLE);
}
@@ -1059,7 +1059,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
// This may be "this < foo" or "this<foo>", thus the backtracking
PsiBuilder.Marker supertype = mark();
myBuilder.disableEols();
myBuilder.disableNewlines();
advance(); // LT
myJetParsing.parseTypeRef();
@@ -1071,7 +1071,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
else {
supertype.rollbackTo();
}
myBuilder.restoreEolsState();
myBuilder.restoreNewlinesState();
}
}
@@ -1083,7 +1083,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
public void parseValueArgumentList() {
PsiBuilder.Marker list = mark();
myBuilder.disableEols();
myBuilder.disableNewlines();
expect(LPAR, "Expecting an argument list", TokenSet.create(RPAR));
if (!at(RPAR)) {
@@ -1100,7 +1100,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
}
expect(RPAR, "Expecting ')'");
myBuilder.restoreEolsState();
myBuilder.restoreNewlinesState();
list.done(VALUE_ARGUMENT_LIST);
}
@@ -263,7 +263,7 @@ public class JetParsing extends AbstractJetParsing {
PsiBuilder.Marker properties = mark();
myBuilder.disableEols();
myBuilder.disableNewlines();
expect(LPAR, "Expecting a property list in parentheses '( ... )'");
// Property list
@@ -284,7 +284,7 @@ public class JetParsing extends AbstractJetParsing {
}
expect(RPAR, "Expecting ')' to close a property list");
myBuilder.restoreEolsState();
myBuilder.restoreNewlinesState();
consumeIf(SEMICOLON);
@@ -340,7 +340,7 @@ public class JetParsing extends AbstractJetParsing {
assert at(LBRACKET);
PsiBuilder.Marker annotation = mark();
myBuilder.disableEols();
myBuilder.disableNewlines();
advance(); // LBRACKET
while (true) {
@@ -356,7 +356,7 @@ public class JetParsing extends AbstractJetParsing {
}
expect(RBRACKET, "Expecting ']' to close an attribute annotation");
myBuilder.restoreEolsState();
myBuilder.restoreNewlinesState();
annotation.done(ATTRIBUTE_ANNOTATION);
}
@@ -398,7 +398,7 @@ public class JetParsing extends AbstractJetParsing {
return NAMESPACE;
}
myBuilder.enableEols();
myBuilder.enableNewlines();
advance(); // LBRACE
PsiBuilder.Marker namespaceBody = mark();
@@ -406,7 +406,7 @@ public class JetParsing extends AbstractJetParsing {
namespaceBody.done(NAMESPACE_BODY);
expect(RBRACE, "Expecting '}'");
myBuilder.restoreEolsState();
myBuilder.restoreNewlinesState();
return NAMESPACE;
}
@@ -460,7 +460,7 @@ public class JetParsing extends AbstractJetParsing {
PsiBuilder.Marker classBody = mark();
myBuilder.enableEols();
myBuilder.enableNewlines();
advance(); // LBRACE
while (!eof() && !at(RBRACE)) {
@@ -490,7 +490,7 @@ public class JetParsing extends AbstractJetParsing {
}
expect(RBRACE, "Expecting '}' to close enum class body");
myBuilder.restoreEolsState();
myBuilder.restoreNewlinesState();
classBody.done(CLASS_BODY);
}
@@ -535,7 +535,7 @@ public class JetParsing extends AbstractJetParsing {
assert at(LBRACE);
PsiBuilder.Marker body = mark();
myBuilder.enableEols();
myBuilder.enableNewlines();
advance(); // LBRACE
while (!eof()) {
@@ -545,7 +545,7 @@ public class JetParsing extends AbstractJetParsing {
parseMemberDeclaration();
}
expect(RBRACE, "Missing '}");
myBuilder.restoreEolsState();
myBuilder.restoreNewlinesState();
body.done(CLASS_BODY);
}
@@ -819,7 +819,7 @@ public class JetParsing extends AbstractJetParsing {
return true;
}
myBuilder.disableEols();
myBuilder.disableNewlines();
expect(LPAR, "Expecting '('", TokenSet.create(RPAR, IDENTIFIER, COLON, LBRACE, EQ));
if (setter) {
PsiBuilder.Marker setterParameter = mark();
@@ -836,7 +836,7 @@ public class JetParsing extends AbstractJetParsing {
}
if (!at(RPAR)) errorUntil("Expecting ')'", TokenSet.create(RPAR, COLON, LBRACE, EQ, EOL_OR_SEMICOLON));
expect(RPAR, "Expecting ')'", TokenSet.create(RPAR, COLON, LBRACE, EQ));
myBuilder.restoreEolsState();
myBuilder.restoreNewlinesState();
if (at(COLON)) {
advance();
@@ -928,13 +928,13 @@ public class JetParsing extends AbstractJetParsing {
public void parseBlock() {
PsiBuilder.Marker block = mark();
myBuilder.enableEols();
myBuilder.enableNewlines();
expect(LBRACE, "Expecting '{' to open a block");
myExpressionParsing.parseExpressions();
expect(RBRACE, "Expecting '}");
myBuilder.restoreEolsState();
myBuilder.restoreNewlinesState();
block.done(BLOCK);
}
@@ -1038,7 +1038,7 @@ public class JetParsing extends AbstractJetParsing {
assert at(LPAR);
PsiBuilder.Marker cons = mark();
myBuilder.disableEols();
myBuilder.disableNewlines();
advance(); // LPAR
while (true) {
@@ -1048,7 +1048,7 @@ public class JetParsing extends AbstractJetParsing {
}
expect(RPAR, "')' expected");
myBuilder.restoreEolsState();
myBuilder.restoreNewlinesState();
cons.done(PRIMARY_CONSTRUCTOR_PARAMETERS_LIST);
}
@@ -1107,7 +1107,7 @@ public class JetParsing extends AbstractJetParsing {
PsiBuilder.Marker list = mark();
if (at(LT)) {
myBuilder.disableEols();
myBuilder.disableNewlines();
advance(); // LT
while (true) {
@@ -1119,7 +1119,7 @@ public class JetParsing extends AbstractJetParsing {
}
expect(GT, "Missing '>'", recoverySet);
myBuilder.restoreEolsState();
myBuilder.restoreNewlinesState();
if (at(WHERE_KEYWORD)) {
parseTypeConstraintList();
@@ -1262,7 +1262,7 @@ public class JetParsing extends AbstractJetParsing {
PsiBuilder.Marker list = mark();
myBuilder.disableEols();
myBuilder.disableNewlines();
advance(); // LT
while (true) {
@@ -1273,7 +1273,7 @@ public class JetParsing extends AbstractJetParsing {
}
expect(GT, "Expecting a '>'");
myBuilder.restoreEolsState();
myBuilder.restoreNewlinesState();
list.done(TYPE_ARGUMENT_LIST);
}
@@ -1289,7 +1289,7 @@ public class JetParsing extends AbstractJetParsing {
PsiBuilder.Marker tuple = mark();
myBuilder.disableEols();
myBuilder.disableNewlines();
advance(); // LPAR
if (!at(RPAR)) {
@@ -1318,7 +1318,7 @@ public class JetParsing extends AbstractJetParsing {
}
expect(RPAR, "Expecting ')");
myBuilder.restoreEolsState();
myBuilder.restoreNewlinesState();
tuple.done(TUPLE_TYPE);
}
@@ -1333,7 +1333,7 @@ public class JetParsing extends AbstractJetParsing {
PsiBuilder.Marker functionType = mark();
myBuilder.disableEols();
myBuilder.disableNewlines();
advance(); // LBRACE
int lastLPar = findLastBefore(TokenSet.create(LPAR), TokenSet.create(RBRACE, COLON), false);
@@ -1348,7 +1348,7 @@ public class JetParsing extends AbstractJetParsing {
parseFunctionTypeContents();
expect(RBRACE, "Expecting '}");
myBuilder.restoreEolsState();
myBuilder.restoreNewlinesState();
functionType.done(FUNCTION_TYPE);
}
@@ -1382,7 +1382,7 @@ public class JetParsing extends AbstractJetParsing {
public void parseValueParameterList(boolean isFunctionTypeContents, TokenSet recoverySet) {
PsiBuilder.Marker parameters = mark();
myBuilder.disableEols();
myBuilder.disableNewlines();
expect(LPAR, "Expecting '(", recoverySet);
if (!at(RPAR)) {
@@ -1407,7 +1407,7 @@ public class JetParsing extends AbstractJetParsing {
}
}
expect(RPAR, "Expecting ')'", recoverySet);
myBuilder.restoreEolsState();
myBuilder.restoreNewlinesState();
parameters.done(VALUE_PARAMETER_LIST);
}
@@ -6,9 +6,8 @@ import com.intellij.lang.PsiBuilder;
* @author abreslav
*/
public interface SemanticWhitespaceAwarePsiBuilder extends PsiBuilder {
// TODO: Wrong name, should be something like "EOL before current token"
boolean eolInLastWhitespace();
void disableEols();
void enableEols();
void restoreEolsState();
boolean newlineBeforeCurrentToken();
void disableNewlines();
void enableNewlines();
void restoreNewlinesState();
}
@@ -14,23 +14,23 @@ public class SemanticWhitespaceAwarePsiBuilderAdapter extends PsiBuilderAdapter
}
@Override
public boolean eolInLastWhitespace() {
return myBuilder.eolInLastWhitespace();
public boolean newlineBeforeCurrentToken() {
return myBuilder.newlineBeforeCurrentToken();
}
@Override
public void disableEols() {
myBuilder.disableEols();
public void disableNewlines() {
myBuilder.disableNewlines();
}
@Override
public void enableEols() {
myBuilder.enableEols();
public void enableNewlines() {
myBuilder.enableNewlines();
}
@Override
public void restoreEolsState() {
myBuilder.restoreEolsState();
public void restoreNewlinesState() {
myBuilder.restoreNewlinesState();
}
}
@@ -1,7 +1,5 @@
package org.jetbrains.jet.lang.parsing;
import com.intellij.psi.tree.IElementType;
/**
* @author abreslav
*/
@@ -14,20 +12,20 @@ public class SemanticWhitespaceAwarePsiBuilderForByClause extends SemanticWhites
}
@Override
public void disableEols() {
super.disableEols();
public void disableNewlines() {
super.disableNewlines();
stackSize++;
}
@Override
public void enableEols() {
super.enableEols();
public void enableNewlines() {
super.enableNewlines();
stackSize++;
}
@Override
public void restoreEolsState() {
super.restoreEolsState();
public void restoreNewlinesState() {
super.restoreNewlinesState();
stackSize--;
}
@@ -12,16 +12,16 @@ import java.util.Stack;
* @author abreslav
*/
public class SemanticWhitespaceAwarePsiBuilderImpl extends PsiBuilderAdapter implements SemanticWhitespaceAwarePsiBuilder {
private final Stack<Boolean> eolsEnabled = new Stack<Boolean>();
private final Stack<Boolean> newlinesEnabled = new Stack<Boolean>();
public SemanticWhitespaceAwarePsiBuilderImpl(final PsiBuilder delegate) {
super(delegate);
eolsEnabled.push(true);
newlinesEnabled.push(true);
}
@Override
public boolean eolInLastWhitespace() {
if (!eolsEnabled.peek()) return false;
public boolean newlineBeforeCurrentToken() {
if (!newlinesEnabled.peek()) return false;
if (eof()) return true;
// TODO: maybe, memoize this somehow?
for (int i = 1; i <= getCurrentOffset(); i++) {
@@ -46,19 +46,19 @@ public class SemanticWhitespaceAwarePsiBuilderImpl extends PsiBuilderAdapter imp
}
@Override
public void disableEols() {
eolsEnabled.push(false);
public void disableNewlines() {
newlinesEnabled.push(false);
}
@Override
public void enableEols() {
eolsEnabled.push(true);
public void enableNewlines() {
newlinesEnabled.push(true);
}
@Override
public void restoreEolsState() {
assert eolsEnabled.size() > 1;
eolsEnabled.pop();
public void restoreNewlinesState() {
assert newlinesEnabled.size() > 1;
newlinesEnabled.pop();
}
}