@@ -47,7 +47,7 @@ struct ForwardTraversal {
4747 if (checkScope (lambdaEndToken).isModified ())
4848 return Progress::Break;
4949 if (out)
50- *out = lambdaEndToken;
50+ *out = lambdaEndToken-> next () ;
5151 // Skip class scope
5252 } else if (tok->str () == " {" && tok->scope () && tok->scope ()->isClassOrStruct ()) {
5353 if (out)
@@ -291,6 +291,9 @@ struct ForwardTraversal {
291291 if (!analyzer->lowerToPossible ())
292292 return Progress::Break;
293293 } else if (tok->link () && tok->str () == " }" ) {
294+ const Scope* scope = tok->scope ();
295+ if (!scope)
296+ return Progress::Break;
294297 if (Token::Match (tok->link ()->previous (), " )|else {" )) {
295298 const bool inElse = Token::simpleMatch (tok->link ()->previous (), " else {" );
296299 const Token* condTok = getCondTokFromEnd (tok);
@@ -305,9 +308,11 @@ struct ForwardTraversal {
305308 analyzer->assume (condTok, !inElse, tok);
306309 if (Token::simpleMatch (tok, " } else {" ))
307310 tok = tok->linkAt (2 );
308- } else if (Token::simpleMatch (tok-> link ()-> previous (), " try { " ) ) {
311+ } else if (scope-> type == Scope::eTry ) {
309312 if (!analyzer->lowerToPossible ())
310313 return Progress::Break;
314+ } else if (scope->type == Scope::eLambda) {
315+ return Progress::Break;
311316 } else if (Token::simpleMatch (tok->next (), " else {" )) {
312317 tok = tok->linkAt (2 );
313318 }
0 commit comments