Cosmetics
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
+8
-8
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+6
-8
@@ -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--;
|
||||
}
|
||||
|
||||
|
||||
+11
-11
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user