@@ -3543,6 +3543,7 @@ void Tokenizer::combineOperators()
35433543 }
35443544 if (simplify) {
35453545 tok->str (tok->str () + " :" );
3546+ tok->tokType (Token::Type::eKeyword); // we need to preserve the keyword type after setting a non-keyword string
35463547 tok->deleteNext ();
35473548 }
35483549 } else if (tok->str () == " ->" ) {
@@ -10278,6 +10279,8 @@ void Tokenizer::simplifyOperatorName()
1027810279 for (Token *tok = list.front (); tok; tok = tok->next ()) {
1027910280 if (Token::Match (tok, " using|:: operator %op%|%name% ;" )) {
1028010281 tok->next ()->str (" operator" + tok->strAt (2 ));
10282+ tok->next ()->tokType (Token::Type::eKeyword); // we need to preserve the keyword type after setting a non-keyword string
10283+ // TODO: tok->next()->isOperatorKeyword(true);
1028110284 tok->next ()->deleteNext ();
1028210285 continue ;
1028310286 }
@@ -10287,6 +10290,8 @@ void Tokenizer::simplifyOperatorName()
1028710290 // operator op
1028810291 if (Token::Match (tok, " operator %op% (" ) && !operatorEnd (tok->linkAt (2 ))) {
1028910292 tok->str (tok->str () + tok->strAt (1 ));
10293+ tok->tokType (Token::Type::eKeyword); // we need to preserve the keyword type after setting a non-keyword string
10294+ // TODO: tok->isOperatorKeyword(true);
1029010295 tok->deleteNext ();
1029110296 continue ;
1029210297 }
@@ -10359,11 +10364,15 @@ void Tokenizer::simplifyOperatorName()
1035910364 const bool returnsRef = Token::simpleMatch (par, " ( & (" ) && tok->next ()->isName ();
1036010365 if (par && !op.empty ()) {
1036110366 if (returnsRef) {
10362- par->next ()->insertToken (" operator" + op)->isOperatorKeyword (true );
10367+ Token* tok_op = par->next ()->insertToken (" operator" + op);
10368+ // TODO: tok_op->tokType(Token::Type::eKeyword); // the given token is not a keyword but should be treated as such
10369+ tok_op->isOperatorKeyword (true );
1036310370 tok->deleteThis ();
1036410371 }
1036510372 else {
1036610373 tok->str (" operator" + op);
10374+ tok->tokType (Token::Type::eKeyword); // we need to preserve the keyword type after setting a non-keyword string
10375+ // TODO: tok->isOperatorKeyword(true);
1036710376 Token::eraseTokens (tok, par);
1036810377 }
1036910378 }
0 commit comments