@@ -8674,8 +8674,6 @@ void Tokenizer::findGarbageCode() const
86748674 if (Token::Match (tok->next (), " )|]|>|%assign%|%or%|%oror%|==|!=|/|>=|<=|&&" ))
86758675 syntaxError (tok);
86768676 }
8677- if ((!isCPP () || !Token::simpleMatch (tok->previous (), " operator" )) && Token::Match (tok, " [,;] ," ))
8678- syntaxError (tok);
86798677 if (Token::simpleMatch (tok, " ." ) &&
86808678 !Token::simpleMatch (tok->previous (), " ." ) &&
86818679 !Token::simpleMatch (tok->next (), " ." ) &&
@@ -8703,22 +8701,28 @@ void Tokenizer::findGarbageCode() const
87038701 syntaxError (tok);
87048702 if (Token::Match (tok, " ! %comp%" ))
87058703 syntaxError (tok);
8706- if (Token::Match (tok, " ] %name%" ) && (!isCPP () || !(tok->tokAt (-1 ) && Token::simpleMatch (tok->tokAt (-2 ), " delete [" ))))
8707- syntaxError (tok);
8704+ if (Token::Match (tok, " ] %name%" ) && (!isCPP () || !(tok->tokAt (-1 ) && Token::simpleMatch (tok->tokAt (-2 ), " delete [" )))) {
8705+ if (tok->next ()->isUpperCaseName ())
8706+ unknownMacroError (tok->next ());
8707+ else
8708+ syntaxError (tok);
8709+ }
87088710
87098711 if (tok->link () && Token::Match (tok, " [([]" ) && (!tok->tokAt (-1 ) || !tok->tokAt (-1 )->isControlFlowKeyword ())) {
87108712 const Token* const end = tok->link ();
87118713 for (const Token* inner = tok->next (); inner != end; inner = inner->next ()) {
87128714 if (inner->str () == " {" )
87138715 inner = inner->link ();
8714- else if (inner->str () == " ;" ) {
8716+ else if (inner->str () == " ;" || ( Token::simpleMatch (inner, " , , " ) && (! isCPP () || ! Token::simpleMatch (inner-> previous (), " operator " ))) ) {
87158717 if (tok->tokAt (-1 ) && tok->tokAt (-1 )->isUpperCaseName ())
87168718 unknownMacroError (tok->tokAt (-1 ));
87178719 else
87188720 syntaxError (inner);
87198721 }
87208722 }
87218723 }
8724+ if ((!isCPP () || !Token::simpleMatch (tok->previous (), " operator" )) && Token::Match (tok, " [,;] ," ))
8725+ syntaxError (tok);
87228726 }
87238727
87248728 // ternary operator without :
0 commit comments