add support for simplifying Qt emit in tokenizer

This commit is contained in:
Robert Reif 2011-08-25 20:54:35 -04:00
parent dfe89f395a
commit 423a1ff64e
2 changed files with 44 additions and 5 deletions

View File

@ -9970,7 +9970,13 @@ void Tokenizer::simplifyQtSignalsSlots()
{
for (Token *tok = _tokens; tok; tok = tok->next())
{
if (!Token::Match(tok, "class %var% :"))
// check for emit which can be outside of class
if (Token::Match(tok, "emit|Q_EMIT %var% (") &&
Token::simpleMatch(tok->tokAt(2)->link(), ") ;"))
{
tok->deleteThis();
}
else if (!Token::Match(tok, "class %var% :"))
continue;
if (tok->previous() && tok->previous()->str() == "enum")
@ -10015,6 +10021,11 @@ void Tokenizer::simplifyQtSignalsSlots()
tok2->str("protected:");
tok2->deleteNext();
}
else if (Token::Match(tok2->next(), "emit|Q_EMIT %var% (") &&
Token::simpleMatch(tok2->tokAt(3)->link(), ") ;"))
{
tok2->deleteNext();
}
}
}
}

View File

@ -5537,7 +5537,14 @@ private:
" void valueChanged(int newValue); "
"private: "
" int m_value; "
"};";
"}; "
"void Counter::setValue(int value) "
"{ "
" if (value != m_value) { "
" m_value = value; "
" emit valueChanged(value); "
" } "
"}";
const char result1 [] = "class Counter : public QObject "
"{ "
@ -5550,7 +5557,14 @@ private:
"void valueChanged ( int newValue ) ; "
"private: "
"int m_value ; "
"} ;";
"} ; "
"void Counter :: setValue ( int value ) "
"{ "
"if ( value != m_value ) { "
"m_value = value ; "
"valueChanged ( value ) ; "
"} "
"}";
ASSERT_EQUALS(result1, tokenizeAndStringify(code1,false));
@ -5566,7 +5580,14 @@ private:
" void valueChanged(int newValue); "
"private: "
" int m_value; "
"};";
"};"
"void Counter::setValue(int value) "
"{ "
" if (value != m_value) { "
" m_value = value; "
" emit valueChanged(value); "
" } "
"}";
const char result2 [] = "class Counter : public QObject "
"{ "
@ -5579,7 +5600,14 @@ private:
"void valueChanged ( int newValue ) ; "
"private: "
"int m_value ; "
"} ;";
"} ; "
"void Counter :: setValue ( int value ) "
"{ "
"if ( value != m_value ) { "
"m_value = value ; "
"valueChanged ( value ) ; "
"} "
"}";
ASSERT_EQUALS(result2, tokenizeAndStringify(code2,false));
}