From 7f6ebaa6b28b55baf1badfc05c57cee34f7124c0 Mon Sep 17 00:00:00 2001 From: IOBYTE Date: Mon, 18 Nov 2019 00:38:53 -0500 Subject: [PATCH] fix syntax error for VTK_LEGACY_BODY(vtkMatrix3x3::operator[], "VTK 7.0"); (#2372) --- lib/tokenize.cpp | 2 ++ test/testtokenize.cpp | 26 ++++++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/lib/tokenize.cpp b/lib/tokenize.cpp index 93649c2c2..b42a0a159 100644 --- a/lib/tokenize.cpp +++ b/lib/tokenize.cpp @@ -10880,6 +10880,8 @@ void Tokenizer::simplifyOperatorName() done = false; } else if (Token::Match(par, ".|%op%|,")) { // check for operator in template + if (par->str() == "," && !op.empty()) + break; if (!(Token::Match(par, "<|>") && !op.empty())) { op += par->str(); par = par->next(); diff --git a/test/testtokenize.cpp b/test/testtokenize.cpp index 1706366f3..6846a7f9d 100644 --- a/test/testtokenize.cpp +++ b/test/testtokenize.cpp @@ -407,6 +407,7 @@ private: TEST_CASE(simplifyOperatorName20); TEST_CASE(simplifyOperatorName21); TEST_CASE(simplifyOperatorName22); + TEST_CASE(simplifyOperatorName23); TEST_CASE(simplifyNullArray); @@ -6521,6 +6522,31 @@ private: tokenizeAndStringify(code)); } + void simplifyOperatorName23() { + { + const char code[] = "double *vtkMatrix3x3::operator[](const unsigned int i) {" + " VTK_LEGACY_BODY(vtkMatrix3x3::operator[], \"VTK 7.0\");" + " return &(this->Element[i][0]);" + "}"; + ASSERT_EQUALS("double * vtkMatrix3x3 :: operator[] ( const unsigned int i ) { " + "VTK_LEGACY_BODY ( vtkMatrix3x3 :: operator[] , \"VTK 7.0\" ) ; " + "return & ( this . Element [ i ] [ 0 ] ) ; " + "}", + tokenizeAndStringify(code)); + } + { + const char code[] = "double *vtkMatrix3x3::operator,(const unsigned int i) {" + " VTK_LEGACY_BODY(vtkMatrix3x3::operator,, \"VTK 7.0\");" + " return &(this->Element[i][0]);" + "}"; + ASSERT_EQUALS("double * vtkMatrix3x3 :: operator, ( const unsigned int i ) { " + "VTK_LEGACY_BODY ( vtkMatrix3x3 :: operator, , \"VTK 7.0\" ) ; " + "return & ( this . Element [ i ] [ 0 ] ) ; " + "}", + tokenizeAndStringify(code)); + } + } + void simplifyNullArray() { ASSERT_EQUALS("* ( foo . bar [ 5 ] ) = x ;", tokenizeAndStringify("0[foo.bar[5]] = x;")); }