Skip to content

Commit fb74dde

Browse files
committed
generate token references during symbol database creation [skip ci]
1 parent fdd2939 commit fb74dde

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

lib/symboldatabase.cpp

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ SymbolDatabase::SymbolDatabase(Tokenizer& tokenizer, const Settings& settings, E
8585
createSymbolDatabaseEnums();
8686
createSymbolDatabaseEscapeFunctions();
8787
createSymbolDatabaseIncompleteVars();
88+
createTokenRefs();
8889
createSymbolDatabaseExprIds();
8990
debugSymbolDatabase();
9091
}
@@ -1622,13 +1623,13 @@ namespace {
16221623
key.parentOp += type;
16231624
}
16241625

1625-
for (const auto& ref: followAllReferences(op1)) {
1626+
for (const auto& ref: op1->refs()) {
16261627
if (ref.token->exprId() != 0) { // cppcheck-suppress useStlAlgorithm
16271628
key.operand1 = ref.token->exprId();
16281629
break;
16291630
}
16301631
}
1631-
for (const auto& ref: followAllReferences(op2)) {
1632+
for (const auto& ref: op2->refs()) {
16321633
if (ref.token->exprId() != 0) { // cppcheck-suppress useStlAlgorithm
16331634
key.operand2 = ref.token->exprId();
16341635
break;
@@ -1660,6 +1661,15 @@ namespace {
16601661
}
16611662
}
16621663

1664+
void SymbolDatabase::createTokenRefs()
1665+
{
1666+
for (const Token* tok = mTokenizer.list.front(); tok != mTokenizer.list.back(); tok = tok->next()) {
1667+
tok->refs(true);
1668+
tok->refs(false);
1669+
}
1670+
// TODO: debug output
1671+
}
1672+
16631673
void SymbolDatabase::createSymbolDatabaseExprIds()
16641674
{
16651675
// Find highest varId

lib/symboldatabase.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1415,6 +1415,7 @@ class CPPCHECKLIB SymbolDatabase {
14151415
void setArrayDimensionsUsingValueFlow();
14161416

14171417
void clangSetVariables(const std::vector<const Variable *> &variableList);
1418+
void createTokenRefs();
14181419
void createSymbolDatabaseExprIds();
14191420

14201421
/* returns the opening { if tok points to enum */

0 commit comments

Comments
 (0)