From b03f36cd719a8237e2433ce7e269c7c5b6fbdedf Mon Sep 17 00:00:00 2001 From: Simon Martin Date: Sat, 3 May 2014 21:35:04 +0200 Subject: [PATCH] Ticket #5709: Comma operator not properly tokenized. --- lib/tokenize.cpp | 3 ++- test/testtokenize.cpp | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/tokenize.cpp b/lib/tokenize.cpp index 904216979..7d8adb0d8 100644 --- a/lib/tokenize.cpp +++ b/lib/tokenize.cpp @@ -7086,6 +7086,7 @@ bool Tokenizer::simplifyRedundantParentheses() while (Token::Match(tok->previous(), "[{([,] ( !!{") && Token::Match(tok->link(), ") [;,])]") && + !Token::simpleMatch(tok->tokAt(-2), "operator ,") && // Ticket #5709 !Token::findsimplematch(tok, ",", tok->link())) { // We have "( ... )", remove the parentheses tok->link()->deleteThis(); @@ -10161,7 +10162,7 @@ void Tokenizer::simplifyOperatorName() } done = false; } - if (Token::Match(par, ".|%op%")) { + if (Token::Match(par, ".|%op%|,")) { op += par->str(); par = par->next(); done = false; diff --git a/test/testtokenize.cpp b/test/testtokenize.cpp index 413769b91..6f05d5b75 100644 --- a/test/testtokenize.cpp +++ b/test/testtokenize.cpp @@ -507,6 +507,7 @@ private: TEST_CASE(simplifyOperatorName6); // ticket #3194 TEST_CASE(simplifyOperatorName7); // ticket #4619 TEST_CASE(simplifyOperatorName8); // ticket #5706 + TEST_CASE(simplifyOperatorName9); // ticket #5709 - comma operator not properly tokenized TEST_CASE(simplifyNull); @@ -8173,6 +8174,11 @@ private: ASSERT_EQUALS(result6, tokenizeAndStringify(code6,false)); } + void simplifyOperatorName9() { // Ticket #5709 + const char code[] = "struct R { R operator, ( R b ) ; } ;"; + ASSERT_EQUALS(code, tokenizeAndStringify(code)); + } + void simplifyNull() { ASSERT_EQUALS("if ( ! p )", tokenizeAndStringify("if (p==NULL)")); ASSERT_EQUALS("f ( NULL ) ;", tokenizeAndStringify("f(NULL);"));