File tree Expand file tree Collapse file tree 2 files changed +7
-2
lines changed Expand file tree Collapse file tree 2 files changed +7
-2
lines changed Original file line number Diff line number Diff line change @@ -1587,12 +1587,13 @@ static Token * createAstAtToken(Token *tok)
15871587 do {
15881588 tok2 = tok2->next ();
15891589 tok2->setCpp11init (false );
1590- if (Token::simpleMatch (tok2, " decltype" )) {
1590+ if (Token::Match (tok2, " decltype|noexcept ( " )) {
15911591 AST_state state (cpp);
15921592 Token *tok3 = tok2->tokAt (2 );
15931593 compileExpression (tok3, state);
1594+ tok2 = tok2->linkAt (1 );
15941595 }
1595- } while (tok2 != endTok);
1596+ } while (tok2 != endTok && ! precedes (endTok, tok2) );
15961597 }
15971598 return endTok;
15981599 }
Original file line number Diff line number Diff line change @@ -393,6 +393,7 @@ class TestTokenizer : public TestFixture {
393393 TEST_CASE (astrefqualifier);
394394 TEST_CASE (astthrowdelete);
395395 TEST_CASE (asttrailingdecltype);
396+ TEST_CASE (astnoexcept);
396397 TEST_CASE (astvardecl);
397398 TEST_CASE (astnewscoped);
398399
@@ -7026,6 +7027,9 @@ class TestTokenizer : public TestFixture {
70267027 ASSERT_EQUALS (" Cc& MakeSpancdata.(csize.(,(" ,
70277028 testAst (" template <typename C> constexpr auto MakeSpan(C &c) -> decltype(MakeSpan(c.data(), c.size())) {}" ));
70287029 }
7030+ void astnoexcept () {
7031+ ASSERT_EQUALS (" noexceptaswap.b((" , testAst (" void f() noexcept(noexcept(a.swap(b))) {}" ));
7032+ }
70297033
70307034 // Verify that returning a newly constructed object generates the correct AST even when the class name is scoped
70317035 // Addresses https://trac.cppcheck.net/ticket/9700
You can’t perform that action at this time.
0 commit comments