summary |
shortlog |
log |
commit | commitdiff |
review |
tree
raw |
patch |
inline | side by side (from parent 1:
8d60995)
Removed possibility to have if-then -construct without else, because the
implementation changed parsing rules and some existing code was broken.
The feature might be added in future, if better implementation is found.
refs #6894
related to change (refs #6888)
Change-Id: I1c729c4176cfaf867ba3dbf13fd73fbc14f41e61
NO_SEMICOLON_BEFORE.add(SCLTerminals.EOF);
NO_SEMICOLON_BEFORE.add(SCLTerminals.SYMBOL);
NO_SEMICOLON_BEFORE.add(SCLTerminals.THEN);
NO_SEMICOLON_BEFORE.add(SCLTerminals.EOF);
NO_SEMICOLON_BEFORE.add(SCLTerminals.SYMBOL);
NO_SEMICOLON_BEFORE.add(SCLTerminals.THEN);
+ NO_SEMICOLON_BEFORE.add(SCLTerminals.ELSE);
NO_SEMICOLON_BEFORE.add(SCLTerminals.IN);
NO_SEMICOLON_BEFORE.add(SCLTerminals.RBRACE);
NO_SEMICOLON_BEFORE.add(SCLTerminals.RBRACKET);
NO_SEMICOLON_BEFORE.add(SCLTerminals.IN);
NO_SEMICOLON_BEFORE.add(SCLTerminals.RBRACE);
NO_SEMICOLON_BEFORE.add(SCLTerminals.RBRACKET);
int loc = Locations.endOf(prevToken.location);
push(new Token(SCLTerminals.RBRACE, loc, loc, "implicit }"));
}
int loc = Locations.endOf(prevToken.location);
push(new Token(SCLTerminals.RBRACE, loc, loc, "implicit }"));
}
- if(indentations.get(indentations.size()-1) == level && symbolId != SCLTerminals.ELSE)
+ if(indentations.get(indentations.size()-1) == level)
push(new Token(SCLTerminals.SEMICOLON, symbolStart, symbolStart, "implicit ;"));
}
}
push(new Token(SCLTerminals.SEMICOLON, symbolStart, symbolStart, "implicit ;"));
}
}
case SCLTerminals.RBRACE:
case SCLTerminals.RPAREN:
case SCLTerminals.RBRACKET:
case SCLTerminals.RBRACE:
case SCLTerminals.RPAREN:
case SCLTerminals.RBRACKET:
- //case SCLTerminals.ELSE:
+ case SCLTerminals.ELSE:
case SCLTerminals.IN:
int removedToken = SCLTerminals.EOF;
while(!indentations.isEmpty()) {
case SCLTerminals.IN:
int removedToken = SCLTerminals.EOF;
while(!indentations.isEmpty()) {
}
if(indentations.isEmpty())
throw error(symbolStart, symbolEnd, "No corresponding opening parenthesis for '" + symbol.text + "'.");
}
if(indentations.isEmpty())
throw error(symbolStart, symbolEnd, "No corresponding opening parenthesis for '" + symbol.text + "'.");
- if(symbolId == SCLTerminals.THEN && removedToken == SCLTerminals.WHEN)
- curToken = symbol = new Token(SCLTerminals.THEN_AFTER_WHEN, symbol.location, symbol.text);
+ if(symbolId == SCLTerminals.THEN) {
+ if(removedToken == SCLTerminals.WHEN)
+ curToken = symbol = new Token(SCLTerminals.THEN_AFTER_WHEN, symbol.location, symbol.text);
+ else {
+ indentations.add(-1);
+ indentationTokens.add(SCLTerminals.THEN);
+ }
+ }
- //if(symbolId == SCLTerminals.THEN)
- // indentations.add(-1);
return;
case SCLTerminals.EOF:
while(indentations.size() > 1 && indentations.get(indentations.size()-1) >= 0) {
return;
case SCLTerminals.EOF:
while(indentations.size() > 1 && indentations.get(indentations.size()-1) >= 0) {
@Test public void Guards1() { test(); }
@Test public void Guards2() { test(); }
@Test public void IdAsOperator() { test(); }
@Test public void Guards1() { test(); }
@Test public void Guards2() { test(); }
@Test public void IdAsOperator() { test(); }
- @Test public void IfWithoutElse() { test(); }
+ //@Test public void IfWithoutElse() { test(); }
@Test public void IllegalChar() { test(); }
@Test public void ImportJavaConstructor() { test(); }
@Test public void ImportRef() { test(); }
@Test public void IllegalChar() { test(); }
@Test public void ImportJavaConstructor() { test(); }
@Test public void ImportRef() { test(); }