Refactorization: Simplified Tokenizer::simplifyAddBracesToCommand() and Tokenizer::simplifyAddBracesPair()
This commit is contained in:
parent
4ee56d2306
commit
a0ff992c4a
|
@ -4410,10 +4410,8 @@ Token *Tokenizer::simplifyAddBracesToCommand(Token *tok)
|
||||||
if (tokPossibleDo &&
|
if (tokPossibleDo &&
|
||||||
tokPossibleDo->str()=="}")
|
tokPossibleDo->str()=="}")
|
||||||
tokPossibleDo=tokPossibleDo->link();
|
tokPossibleDo=tokPossibleDo->link();
|
||||||
if (tokPossibleDo)
|
|
||||||
tokPossibleDo=tokPossibleDo->previous();
|
|
||||||
if (!tokPossibleDo ||
|
if (!tokPossibleDo ||
|
||||||
tokPossibleDo->str()!="do")
|
tokPossibleDo->strAt(-1) != "do")
|
||||||
tokEnd=simplifyAddBracesPair(tok,true);
|
tokEnd=simplifyAddBracesPair(tok,true);
|
||||||
} else if (tok->str()=="do") {
|
} else if (tok->str()=="do") {
|
||||||
tokEnd=simplifyAddBracesPair(tok,false);
|
tokEnd=simplifyAddBracesPair(tok,false);
|
||||||
|
@ -4431,16 +4429,15 @@ Token *Tokenizer::simplifyAddBracesToCommand(Token *tok)
|
||||||
tokEnd=simplifyAddBracesPair(tok,true);
|
tokEnd=simplifyAddBracesPair(tok,true);
|
||||||
if (!tokEnd)
|
if (!tokEnd)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
Token * tokEndNext=tokEnd->next();
|
if (tokEnd->strAt(1) == "else") {
|
||||||
if (tokEndNext && tokEndNext->str()=="else") {
|
Token * tokEndNextNext= tokEnd->tokAt(2);
|
||||||
Token * tokEndNextNext=tokEndNext->next();
|
if (!tokEndNextNext || tokEndNextNext->str() == "}")
|
||||||
if (tokEndNextNext && tokEndNextNext->str()=="if")
|
syntaxError(tokEndNextNext);
|
||||||
|
if (tokEndNextNext->str() == "if")
|
||||||
// do not change "else if ..." to "else { if ... }"
|
// do not change "else if ..." to "else { if ... }"
|
||||||
tokEnd=simplifyAddBracesToCommand(tokEndNextNext);
|
tokEnd=simplifyAddBracesToCommand(tokEndNextNext);
|
||||||
else if (Token::simpleMatch(tokEndNext, "else }"))
|
|
||||||
syntaxError(tokEndNext);
|
|
||||||
else
|
else
|
||||||
tokEnd=simplifyAddBracesPair(tokEndNext,false);
|
tokEnd=simplifyAddBracesPair(tokEnd->next(),false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4450,29 +4447,25 @@ Token *Tokenizer::simplifyAddBracesToCommand(Token *tok)
|
||||||
Token *Tokenizer::simplifyAddBracesPair(Token *tok, bool commandWithCondition)
|
Token *Tokenizer::simplifyAddBracesPair(Token *tok, bool commandWithCondition)
|
||||||
{
|
{
|
||||||
Token * tokCondition=tok->next();
|
Token * tokCondition=tok->next();
|
||||||
|
if (!tokCondition) // Missing condition
|
||||||
|
return tok;
|
||||||
|
|
||||||
Token *tokAfterCondition=tokCondition;
|
Token *tokAfterCondition=tokCondition;
|
||||||
if (commandWithCondition) {
|
if (commandWithCondition) {
|
||||||
if (!tokCondition) {
|
|
||||||
// Missing condition
|
|
||||||
return tok;
|
|
||||||
}
|
|
||||||
if (tokCondition->str()=="(")
|
if (tokCondition->str()=="(")
|
||||||
tokAfterCondition=tokCondition->link();
|
tokAfterCondition=tokCondition->link();
|
||||||
else
|
else
|
||||||
tokAfterCondition=nullptr;
|
syntaxError(tok); // Bad condition
|
||||||
if (!tokAfterCondition || tokAfterCondition->strAt(1) == "]") {
|
|
||||||
// Bad condition
|
if (!tokAfterCondition || tokAfterCondition->strAt(1) == "]")
|
||||||
syntaxError(tok);
|
syntaxError(tok); // Bad condition
|
||||||
}
|
|
||||||
tokAfterCondition=tokAfterCondition->next();
|
tokAfterCondition=tokAfterCondition->next();
|
||||||
}
|
if (!tokAfterCondition || Token::Match(tokAfterCondition, ")|}|,")) {
|
||||||
if (!tokAfterCondition ||
|
|
||||||
((tokAfterCondition->tokType()==Token::eBracket ||
|
|
||||||
tokAfterCondition->tokType()==Token::eExtendedOp)&&
|
|
||||||
Token::Match(tokAfterCondition,")|}|>|,"))) {
|
|
||||||
// No tokens left where to add braces around
|
// No tokens left where to add braces around
|
||||||
return tok;
|
return tok;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
Token * tokBracesEnd=nullptr;
|
Token * tokBracesEnd=nullptr;
|
||||||
if (tokAfterCondition->str()=="{") {
|
if (tokAfterCondition->str()=="{") {
|
||||||
// already surrounded by braces
|
// already surrounded by braces
|
||||||
|
@ -4497,24 +4490,17 @@ Token *Tokenizer::simplifyAddBracesPair(Token *tok, bool commandWithCondition)
|
||||||
if (tokEnd->str()!="}") {
|
if (tokEnd->str()!="}") {
|
||||||
// Token does not end with brace
|
// Token does not end with brace
|
||||||
// Look for ; to add own closing brace after it
|
// Look for ; to add own closing brace after it
|
||||||
while (tokEnd &&
|
while (tokEnd && !Token::Match(tokEnd, ";|)|}")) {
|
||||||
tokEnd->str()!=";" &&
|
if (tokEnd->tokType()==Token::eBracket || tokEnd->str() == "(") {
|
||||||
!((tokEnd->tokType()==Token::eBracket ||
|
tokEnd = tokEnd->link();
|
||||||
tokEnd->tokType()==Token::eExtendedOp)&&
|
if (!tokEnd) {
|
||||||
Token::Match(tokEnd,")|}|>"))) {
|
|
||||||
if (tokEnd->tokType()==Token::eBracket ||
|
|
||||||
(tokEnd->tokType()==Token::eExtendedOp && tokEnd->str()=="(")) {
|
|
||||||
Token *tokInnerCloseBraket=tokEnd->link();
|
|
||||||
if (!tokInnerCloseBraket) {
|
|
||||||
// Inner bracket does not close
|
// Inner bracket does not close
|
||||||
return tok;
|
return tok;
|
||||||
}
|
}
|
||||||
tokEnd=tokInnerCloseBraket;
|
|
||||||
}
|
}
|
||||||
tokEnd=tokEnd->next();
|
tokEnd=tokEnd->next();
|
||||||
}
|
}
|
||||||
if (!tokEnd ||
|
if (!tokEnd || tokEnd->str() != ";") {
|
||||||
tokEnd->str()!=";") {
|
|
||||||
// No trailing ;
|
// No trailing ;
|
||||||
return tok;
|
return tok;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue