Tokenizer: Create syntax tree before creating symboldatabase
This commit is contained in:
parent
be90080976
commit
ad2d3394c8
|
@ -1696,6 +1696,9 @@ bool Tokenizer::simplifyTokens1(const std::string &configuration,
|
||||||
|
|
||||||
if (simplifyTokenList1(list.getFiles()[0].c_str())) {
|
if (simplifyTokenList1(list.getFiles()[0].c_str())) {
|
||||||
if (!noSymbolDB_AST) {
|
if (!noSymbolDB_AST) {
|
||||||
|
list.createAst();
|
||||||
|
list.validateAst();
|
||||||
|
|
||||||
createSymbolDatabase();
|
createSymbolDatabase();
|
||||||
|
|
||||||
// Use symbol database to identify rvalue references. Split && to & &. This is safe, since it doesn't delete any tokens (which might be referenced by symbol database)
|
// Use symbol database to identify rvalue references. Split && to & &. This is safe, since it doesn't delete any tokens (which might be referenced by symbol database)
|
||||||
|
@ -1704,14 +1707,13 @@ bool Tokenizer::simplifyTokens1(const std::string &configuration,
|
||||||
if (var && var->isRValueReference()) {
|
if (var && var->isRValueReference()) {
|
||||||
Token* endTok = const_cast<Token*>(var->typeEndToken());
|
Token* endTok = const_cast<Token*>(var->typeEndToken());
|
||||||
endTok->str("&");
|
endTok->str("&");
|
||||||
|
endTok->astOperand1(nullptr);
|
||||||
|
endTok->astOperand2(nullptr);
|
||||||
endTok->insertToken("&");
|
endTok->insertToken("&");
|
||||||
endTok->next()->scope(endTok->scope());
|
endTok->next()->scope(endTok->scope());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
list.createAst();
|
|
||||||
list.validateAst();
|
|
||||||
|
|
||||||
SymbolDatabase::setValueTypeInTokenList(list.front(), isCPP(), _settings->defaultSign, &_settings->library);
|
SymbolDatabase::setValueTypeInTokenList(list.front(), isCPP(), _settings->defaultSign, &_settings->library);
|
||||||
ValueFlow::setValues(&list, _symbolDatabase, _errorLogger, _settings);
|
ValueFlow::setValues(&list, _symbolDatabase, _errorLogger, _settings);
|
||||||
}
|
}
|
||||||
|
@ -3793,14 +3795,14 @@ bool Tokenizer::simplifyTokenList2()
|
||||||
|
|
||||||
Token::assignProgressValues(list.front());
|
Token::assignProgressValues(list.front());
|
||||||
|
|
||||||
// Create symbol database and then remove const keywords
|
|
||||||
createSymbolDatabase();
|
|
||||||
simplifyPointerConst();
|
|
||||||
|
|
||||||
list.createAst();
|
list.createAst();
|
||||||
// skipping this here may help improve performance. Might be enabled later on demand. #7208
|
// skipping this here may help improve performance. Might be enabled later on demand. #7208
|
||||||
// list.validateAst();
|
// list.validateAst();
|
||||||
|
|
||||||
|
// Create symbol database and then remove const keywords
|
||||||
|
createSymbolDatabase();
|
||||||
|
simplifyPointerConst();
|
||||||
|
|
||||||
ValueFlow::setValues(&list, _symbolDatabase, _errorLogger, _settings);
|
ValueFlow::setValues(&list, _symbolDatabase, _errorLogger, _settings);
|
||||||
|
|
||||||
if (_settings->terminated())
|
if (_settings->terminated())
|
||||||
|
|
Loading…
Reference in New Issue