Fix another SymbolDatabase bailout (#1157)
This commit is contained in:
parent
270635eb1f
commit
4f9073159a
|
@ -123,7 +123,12 @@ void SymbolDatabase::createSymbolDatabaseFindAllScopes()
|
||||||
continue;
|
continue;
|
||||||
else if (Token::Match(tok2, "%name% ["))
|
else if (Token::Match(tok2, "%name% ["))
|
||||||
continue;
|
continue;
|
||||||
else
|
// skip template
|
||||||
|
else if (Token::simpleMatch(tok->previous(), "template class") &&
|
||||||
|
Token::simpleMatch(tok2->previous(), "> ;")) {
|
||||||
|
tok = tok2;
|
||||||
|
continue;
|
||||||
|
} else
|
||||||
throw InternalError(tok2, "SymbolDatabase bailout; unhandled code", InternalError::SYNTAX);
|
throw InternalError(tok2, "SymbolDatabase bailout; unhandled code", InternalError::SYNTAX);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
@ -274,6 +274,7 @@ private:
|
||||||
TEST_CASE(symboldatabase60);
|
TEST_CASE(symboldatabase60);
|
||||||
TEST_CASE(symboldatabase61);
|
TEST_CASE(symboldatabase61);
|
||||||
TEST_CASE(symboldatabase62);
|
TEST_CASE(symboldatabase62);
|
||||||
|
TEST_CASE(symboldatabase63);
|
||||||
|
|
||||||
TEST_CASE(enum1);
|
TEST_CASE(enum1);
|
||||||
TEST_CASE(enum2);
|
TEST_CASE(enum2);
|
||||||
|
@ -2928,6 +2929,12 @@ private:
|
||||||
ASSERT(db && db->scopeList.size() == 5);
|
ASSERT(db && db->scopeList.size() == 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void symboldatabase63() {
|
||||||
|
GET_SYMBOL_DB("template class T<int> ; void foo() { }");
|
||||||
|
ASSERT(db != nullptr);
|
||||||
|
ASSERT(db && db->scopeList.size() == 2);
|
||||||
|
}
|
||||||
|
|
||||||
void enum1() {
|
void enum1() {
|
||||||
GET_SYMBOL_DB("enum BOOL { FALSE, TRUE }; enum BOOL b;");
|
GET_SYMBOL_DB("enum BOOL { FALSE, TRUE }; enum BOOL b;");
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue