File tree Expand file tree Collapse file tree 2 files changed +22
-1
lines changed Expand file tree Collapse file tree 2 files changed +22
-1
lines changed Original file line number Diff line number Diff line change @@ -470,7 +470,7 @@ static bool iscast(const Token *tok, bool cpp)
470
470
if (Token::Match (tok->link (), " ) %assign%|,|..." ))
471
471
return false ;
472
472
473
- if (tok->previous () && tok->previous ()->isName () && tok->strAt (- 1 ) != " return" &&
473
+ if (tok->previous () && tok->previous ()->isName () && ! Token::Match ( tok->previous (), " return|case " ) &&
474
474
(!cpp || !Token::Match (tok->previous (), " delete|throw" )))
475
475
return false ;
476
476
@@ -600,6 +600,10 @@ static bool iscpp11init_impl(const Token * const tok)
600
600
if (Token::simpleMatch (castTok->astParent (), " case" ))
601
601
return true ;
602
602
}
603
+ if (findParent (colonTok->previous (), [](const Token *parent){
604
+ return parent->str () == " case" ;
605
+ }))
606
+ return true ;
603
607
const Token* caseTok = colonTok->tokAt (-2 );
604
608
while (caseTok && Token::Match (caseTok->tokAt (-1 ), " ::|%name%" ))
605
609
caseTok = caseTok->tokAt (-1 );
Original file line number Diff line number Diff line change @@ -7071,6 +7071,23 @@ class TestTokenizer : public TestFixture {
7071
7071
" }\n " ));
7072
7072
ASSERT_EQUALS (" " , errout_str ());
7073
7073
7074
+ ASSERT_NO_THROW (tokenizeAndStringify (" int foo() {\n "
7075
+ " connect([]( const int& f ) {\n "
7076
+ " switch( f )\n "
7077
+ " {\n "
7078
+ " case (int)1:\n "
7079
+ " {\n "
7080
+ " A r(f);\n "
7081
+ " if (1) {}\n "
7082
+ " }\n "
7083
+ " break;\n "
7084
+ " }\n "
7085
+ " return 0;\n "
7086
+ " });\n "
7087
+ " return 0;\n "
7088
+ " }\n " ));
7089
+ ASSERT_EQUALS (" " , errout_str ());
7090
+
7074
7091
// #11378
7075
7092
ASSERT_EQUALS (" gT{(&[{= 0return" , testAst (" auto g = T{ [&]() noexcept -> int { return 0; } };" ));
7076
7093
You can’t perform that action at this time.
0 commit comments