diff --git a/src/libs/3rdparty/cplusplus/Parser.cpp b/src/libs/3rdparty/cplusplus/Parser.cpp index 4cf890d8f79..54b7c045703 100644 --- a/src/libs/3rdparty/cplusplus/Parser.cpp +++ b/src/libs/3rdparty/cplusplus/Parser.cpp @@ -2113,6 +2113,11 @@ bool Parser::parseParameterDeclarationList(ParameterDeclarationListAST *&node) bool Parser::parseParameterDeclaration(ParameterDeclarationAST *&node) { DEBUG_THIS_RULE(); + if (_languageFeatures.cxx11Enabled) { + SpecifierListAST *attr_specifier_seq = nullptr; + while (parseStdAttributeSpecifier(attr_specifier_seq)) + ; + } SpecifierListAST *decl_specifier_seq = nullptr; if (parseDeclSpecifierSeq(decl_specifier_seq)) { ParameterDeclarationAST *ast = new (_pool) ParameterDeclarationAST; diff --git a/tests/auto/cplusplus/ast/tst_ast.cpp b/tests/auto/cplusplus/ast/tst_ast.cpp index 603d8f908d4..6759c72430d 100644 --- a/tests/auto/cplusplus/ast/tst_ast.cpp +++ b/tests/auto/cplusplus/ast/tst_ast.cpp @@ -1338,7 +1338,7 @@ void tst_AST::cpp11_variadic_inheritance() void tst_AST::cpp11_attributes() { QSharedPointer unit(parseDeclaration( - "[[noreturn]] void f() {throw \"error\";}", + "[[noreturn]] void f([[maybe_unused]] int v) {throw \"error\";}", false, false, true)); AST *ast = unit->ast(); QVERIFY(ast != nullptr);