TokenList::validateAst: optimised ~25%
This commit is contained in:
parent
ecccce0608
commit
ab6167e3e6
|
@ -1183,7 +1183,7 @@ void TokenList::validateAst() const
|
||||||
throw InternalError(tok, "Syntax Error: AST broken, ternary operator lacks ':'.", InternalError::AST);
|
throw InternalError(tok, "Syntax Error: AST broken, ternary operator lacks ':'.", InternalError::AST);
|
||||||
|
|
||||||
// Check for endless recursion
|
// Check for endless recursion
|
||||||
const Token* parent=tok->astParent();
|
const Token* parent = tok->astParent();
|
||||||
if (parent) {
|
if (parent) {
|
||||||
std::set < const Token* > astTokens; // list of anchestors
|
std::set < const Token* > astTokens; // list of anchestors
|
||||||
astTokens.insert(tok);
|
astTokens.insert(tok);
|
||||||
|
@ -1195,9 +1195,12 @@ void TokenList::validateAst() const
|
||||||
astTokens.insert(parent);
|
astTokens.insert(parent);
|
||||||
} while ((parent = parent->astParent()) != nullptr);
|
} while ((parent = parent->astParent()) != nullptr);
|
||||||
safeAstTokens.insert(astTokens.begin(), astTokens.end());
|
safeAstTokens.insert(astTokens.begin(), astTokens.end());
|
||||||
} else
|
} else if (tok->str() == ";") {
|
||||||
|
safeAstTokens.clear();
|
||||||
|
} else {
|
||||||
safeAstTokens.insert(tok);
|
safeAstTokens.insert(tok);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::string& TokenList::file(const Token *tok) const
|
const std::string& TokenList::file(const Token *tok) const
|
||||||
|
|
Loading…
Reference in New Issue