From dc66d30076495f84a7173797aafe7832b449da11 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Wed, 11 Nov 2020 17:35:05 +0100 Subject: [PATCH] CPlusPlus: Support C++11 attributes also for function parameters Fixes: QTCREATORBUG-24636 Change-Id: I9dc3d2cc6ca102b09f6b040455fa901c362dae7d Reviewed-by: Christian Stenger --- src/libs/3rdparty/cplusplus/Parser.cpp | 5 +++++ tests/auto/cplusplus/ast/tst_ast.cpp | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) 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);