SymbolDatabase: Throw InternalError if parsing fails
This commit is contained in:
parent
4a36520af2
commit
9f92685b92
|
@ -118,8 +118,10 @@ void SymbolDatabase::createSymbolDatabaseFindAllScopes()
|
||||||
// skip variable declaration
|
// skip variable declaration
|
||||||
else if (Token::Match(tok2, "*|&|>"))
|
else if (Token::Match(tok2, "*|&|>"))
|
||||||
continue;
|
continue;
|
||||||
|
else if (Token::Match(tok2, "%name% (") && _tokenizer->isFunctionHead(tok2->next(), "{;"))
|
||||||
|
continue;
|
||||||
else
|
else
|
||||||
break; // bail
|
throw InternalError(tok2, "SymbolDatabase bailout; unhandled code", InternalError::SYNTAX);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
break; // bail
|
break; // bail
|
||||||
|
|
|
@ -606,7 +606,7 @@ private:
|
||||||
}
|
}
|
||||||
|
|
||||||
void garbageCode43() { // #6703
|
void garbageCode43() { // #6703
|
||||||
checkCode("int { }; struct A<void> a = { }");
|
ASSERT_THROW(checkCode("int { }; struct A<void> a = { }"), InternalError);
|
||||||
}
|
}
|
||||||
|
|
||||||
void garbageCode44() { // #6704
|
void garbageCode44() { // #6704
|
||||||
|
@ -1238,7 +1238,7 @@ private:
|
||||||
void garbageSymbolDatabase() {
|
void garbageSymbolDatabase() {
|
||||||
checkCode("void f( { u = 1 ; } ) { }");
|
checkCode("void f( { u = 1 ; } ) { }");
|
||||||
|
|
||||||
checkCode("{ }; void namespace A::f; { g() { int } }");
|
ASSERT_THROW(checkCode("{ }; void namespace A::f; { g() { int } }"), InternalError);
|
||||||
|
|
||||||
ASSERT_THROW(checkCode("class Foo {}; class Bar : public Foo"), InternalError);
|
ASSERT_THROW(checkCode("class Foo {}; class Bar : public Foo"), InternalError);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue