@@ -8545,26 +8545,34 @@ void Tokenizer::findGarbageCode() const
85458545 syntaxError (tok);
85468546 }
85478547
8548- if (tok->isControlFlowKeyword () && Token::Match (tok, " if|while|for|switch" )) { // if|while|for|switch (EXPR) { ... }
8549- if (tok->previous () && !Token::Match (tok->previous (), " %name%|:|;|{|}|)" )) {
8550- if (Token::Match (tok->previous (), " [,(]" )) {
8551- const Token *prev = tok->previous ();
8552- while (prev && prev->str () != " (" ) {
8553- if (prev->str () == " )" )
8554- prev = prev->link ();
8555- prev = prev->previous ();
8548+ if (tok->isControlFlowKeyword ()) {
8549+ if (Token::Match (tok, " if|while|for|switch" )) { // if|while|for|switch (EXPR) { ... }
8550+ if (tok->previous () && !Token::Match (tok->previous (), " %name%|:|;|{|}|)" )) {
8551+ if (Token::Match (tok->previous (), " [,(]" )) {
8552+ const Token *prev = tok->previous ();
8553+ while (prev && prev->str () != " (" ) {
8554+ if (prev->str () == " )" )
8555+ prev = prev->link ();
8556+ prev = prev->previous ();
8557+ }
8558+ if (prev && Token::Match (prev->previous (), " %name% (" ))
8559+ unknownMacroError (prev->previous ());
85568560 }
8557- if (prev && Token::Match (prev-> previous ( ), " %name% ( " ))
8558- unknownMacroError (prev-> previous () );
8561+ if (! Token::simpleMatch (tok-> tokAt (- 2 ), " operator \"\" if " ))
8562+ syntaxError (tok );
85598563 }
8560- if (!Token::simpleMatch (tok->tokAt (- 2 ), " operator \"\" if " ))
8564+ if (!Token::Match (tok->next ( ), " ( !!) " ))
85618565 syntaxError (tok);
8566+ if (tok->str () != " for" ) {
8567+ if (isGarbageExpr (tok->next (), tok->linkAt (1 ), cpp && (mSettings .standards .cpp >=Standards::cppstd_t ::CPP17)))
8568+ syntaxError (tok);
8569+ }
85628570 }
8563- if (! Token::Match (tok-> next () , " ( !!) " ))
8564- syntaxError ( tok);
8565- if (tok->str () != " for " ) {
8566- if (isGarbageExpr (tok->next (), tok ->linkAt (1 ), cpp && ( mSettings . standards . cpp >=Standards:: cppstd_t ::CPP17) ))
8567- syntaxError (tok);
8571+ if (Token::simpleMatch (tok, " do { " )) {
8572+ if (! Token::simpleMatch ( tok-> linkAt ( 1 ), " } while ( " ))
8573+ syntaxError (tok->linkAt ( 1 ));
8574+ if (! Token::simpleMatch (tok->linkAt ( 1 ) ->linkAt (2 ), " ) ; " ))
8575+ syntaxError (tok-> linkAt ( 1 )-> linkAt ( 2 ) );
85688576 }
85698577 }
85708578
0 commit comments