Merge pull request #194 from simartin/ticket_5121

Ticket #5121: Handle static variable declarations depending on one another
This commit is contained in:
Daniel Marjamäki 2013-10-30 22:09:44 -07:00
commit 352c459e28
2 changed files with 23 additions and 2 deletions

View File

@ -5288,9 +5288,9 @@ void Tokenizer::simplifyVarDecl(Token * tokBegin, Token * tokEnd, bool only_k_r_
if (tok2->str() == "=") { if (tok2->str() == "=") {
if (isstatic) { if (isstatic) {
if (Token::Match(tok2->next(), "%num% ,")) if (Token::Match(tok2->next(), "%num%|%var% ,")) // ticket #5121
tok2 = tok2->tokAt(2); tok2 = tok2->tokAt(2);
else if (Token::Match(tok2->next(), "( %num% ) ,")) { // ticket #4450 else if (Token::Match(tok2->next(), "( %num%|%var% ) ,")) { // ticket #4450
tok2->deleteNext(); tok2->deleteNext();
tok2->next()->deleteNext(); tok2->next()->deleteNext();
tok2 = tok2->tokAt(2); tok2 = tok2->tokAt(2);

View File

@ -5670,11 +5670,32 @@ private:
} }
{ {
// Ticket #4450
const char code[] = "static int large_eeprom_type = (13 | (5)), " const char code[] = "static int large_eeprom_type = (13 | (5)), "
"default_flash_type = 42;"; "default_flash_type = 42;";
ASSERT_EQUALS("static int large_eeprom_type = 13 ; static int default_flash_type = 42 ;", ASSERT_EQUALS("static int large_eeprom_type = 13 ; static int default_flash_type = 42 ;",
tokenizeAndStringify(code)); tokenizeAndStringify(code));
} }
{
// Ticket #5121
const char code[] = "unsigned int x;"
"static const unsigned int A = 1, B = A, C = 0, D = (A), E = 0;"
"void f() {"
" unsigned int *foo = &x;"
"}";
ASSERT_EQUALS("unsigned int x ; "
"const static unsigned int A = 1 ; "
"const static unsigned int B = A ; "
"const static unsigned int C = 0 ; "
"const static unsigned int D = A ; "
"const static unsigned int E = 0 ; "
"void f ( ) { "
"unsigned int * foo ; "
"foo = & x ; "
"}",
tokenizeAndStringify(code));
}
} }
void vardecl6() { void vardecl6() {