Tokenizer: Fixed cppcheck and compiler warnings
This commit is contained in:
parent
d97b3bd9d9
commit
d961a6ec9e
|
@ -6467,27 +6467,27 @@ void Tokenizer::simplifyEnum()
|
||||||
Token *enumType = 0;
|
Token *enumType = 0;
|
||||||
Token *typeTokenStart = 0;
|
Token *typeTokenStart = 0;
|
||||||
Token *typeTokenEnd = 0;
|
Token *typeTokenEnd = 0;
|
||||||
bool enumClass = false;
|
|
||||||
|
|
||||||
// check for C++0x enum class
|
// check for C++0x enum class
|
||||||
if (Token::Match(tok->next(), "class|struct"))
|
if (Token::Match(tok->next(), "class|struct"))
|
||||||
{
|
|
||||||
tok->deleteNext();
|
tok->deleteNext();
|
||||||
enumClass = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// check for C++0x typed enumeration
|
// check for C++0x typed enumeration
|
||||||
if (Token::Match(tok->next(), "%type% :"))
|
if (Token::Match(tok->next(), "%type% :") || tok->next()->str() == ":")
|
||||||
{
|
{
|
||||||
|
int offset = 2;
|
||||||
|
if (tok->next()->str() != ":")
|
||||||
|
offset = 3;
|
||||||
|
|
||||||
// check for forward declaration
|
// check for forward declaration
|
||||||
/** @todo start substitution check at forward declaration */
|
/** @todo start substitution check at forward declaration */
|
||||||
const Token *temp = tok->tokAt(3);
|
const Token *temp = tok->tokAt(offset);
|
||||||
while (!Token::Match(temp, "{|;"))
|
while (!Token::Match(temp, "{|;"))
|
||||||
temp = temp->next();
|
temp = temp->next();
|
||||||
if (temp->str() == ";")
|
if (temp->str() == ";")
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
typeTokenStart = tok->tokAt(3);
|
typeTokenStart = tok->tokAt(offset);
|
||||||
typeTokenEnd = typeTokenStart;
|
typeTokenEnd = typeTokenStart;
|
||||||
while (Token::Match(typeTokenEnd->next(), "signed|unsigned|char|short|int|long"))
|
while (Token::Match(typeTokenEnd->next(), "signed|unsigned|char|short|int|long"))
|
||||||
typeTokenEnd = typeTokenEnd->next();
|
typeTokenEnd = typeTokenEnd->next();
|
||||||
|
@ -6495,6 +6495,8 @@ void Tokenizer::simplifyEnum()
|
||||||
|
|
||||||
if (tok->tokAt(1)->str() == "{")
|
if (tok->tokAt(1)->str() == "{")
|
||||||
tok1 = tok->tokAt(2);
|
tok1 = tok->tokAt(2);
|
||||||
|
else if (tok->tokAt(1)->str() == ":")
|
||||||
|
tok1 = typeTokenEnd->tokAt(2);
|
||||||
else if (tok->tokAt(2)->str() == "{")
|
else if (tok->tokAt(2)->str() == "{")
|
||||||
{
|
{
|
||||||
enumType = tok->tokAt(1);
|
enumType = tok->tokAt(1);
|
||||||
|
|
|
@ -5469,6 +5469,13 @@ private:
|
||||||
|
|
||||||
void enum15() // C++0x features
|
void enum15() // C++0x features
|
||||||
{
|
{
|
||||||
|
{
|
||||||
|
const char code[] = "enum : char { a = 99 };\n"
|
||||||
|
"char c1 = a;";
|
||||||
|
const char expected[] = "; char c1 ; c1 = 99 ;";
|
||||||
|
ASSERT_EQUALS(expected, tok(code, false));
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
const char code[] = "enum class Enum1 { a };\n"
|
const char code[] = "enum class Enum1 { a };\n"
|
||||||
"Enum1 e1 = a;";
|
"Enum1 e1 = a;";
|
||||||
|
|
Loading…
Reference in New Issue