diff --git a/lib/tokenize.cpp b/lib/tokenize.cpp index 1ec62857d..658d37499 100644 --- a/lib/tokenize.cpp +++ b/lib/tokenize.cpp @@ -9578,7 +9578,7 @@ void Tokenizer::simplifyOperatorName() par = par->next(); done = false; } - if (Token::Match(par, "[<>+-*&/=.!]") || Token::Match(par, "==|!=|<=|>=")) + if (Token::Match(par, "[<>+-*&/=.!]") || Token::Match(par, "==|!=|<=|>=|>>|<<")) { op += par->str(); par = par->next(); diff --git a/test/testtokenize.cpp b/test/testtokenize.cpp index 07939f3dd..12ccf43ce 100644 --- a/test/testtokenize.cpp +++ b/test/testtokenize.cpp @@ -323,6 +323,7 @@ private: TEST_CASE(simplifyOperatorName2); TEST_CASE(simplifyOperatorName3); TEST_CASE(simplifyOperatorName4); + TEST_CASE(simplifyOperatorName5); // Some simple cleanups of unhandled macros in the global scope TEST_CASE(removeMacrosInGlobalScope); @@ -5617,6 +5618,17 @@ private: ASSERT_EQUALS(result, tokenizeAndStringify(code,false)); } + void simplifyOperatorName5() + { + const char code1[] = "std::istream & operator >> (std::istream & s, Fred &f);"; + const char result1[] = "std :: istream & operator>> ( std :: istream & s , Fred & f ) ;"; + ASSERT_EQUALS(result1, tokenizeAndStringify(code1,false)); + + const char code2[] = "std::ostream & operator << (std::ostream & s, const Fred &f);"; + const char result2[] = "std :: ostream & operator<< ( std :: ostream & s , const Fred & f ) ;"; + ASSERT_EQUALS(result2, tokenizeAndStringify(code2,false)); + } + void removeMacrosInGlobalScope() { // remove some unhandled macros in the global scope.