diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java index e7c1c2b670f..98a18631337 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java @@ -12552,6 +12552,12 @@ public class AST2CPPTests extends AST2CPPTestBase { parseAndCheckBindings(getAboveComment(), CPP, true /* use GNU extensions */); } + // void foo([[maybe_unused]] int a); + public void testCxx11AttributeBeforeParameterDeclaration_530729() throws Exception { + parseAndCheckBindings(); + } + + // struct CType { // char m_Array[4]; // }; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java index 4ff13c545f0..8dbe4c4a689 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java @@ -3062,6 +3062,8 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser { protected ICPPASTParameterDeclaration parameterDeclaration() throws BacktrackException, EndOfFileException { final int startOffset= LA(1).getOffset(); + List attributes = attributeSpecifierSeq(); + if (LT(1) == IToken.tLBRACKET && supportParameterInfoBlock) { skipBrackets(IToken.tLBRACKET, IToken.tRBRACKET, 0); } @@ -3076,6 +3078,8 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser { declSpec= lie.fDeclSpec; declarator= addInitializer(lie, DeclarationOptions.PARAMETER); } + + addAttributeSpecifiers(attributes, (ICPPASTDeclSpecifier) declSpec); final ICPPASTParameterDeclaration parm = getNodeFactory().newParameterDeclaration(declSpec, declarator); final int endOffset = figureEndOffset(declSpec, declarator);