diff options
author | Nathan Ridge | 2018-09-17 05:52:22 +0000 |
---|---|---|
committer | Nathan Ridge | 2018-09-25 01:24:11 +0000 |
commit | b803d1030c8cc4458b31d3b796a41a43ca8c8051 (patch) | |
tree | bbfa6e4b8711d52d1bb72e21a1a3cba65fe28810 /core | |
parent | 732c4874ee94ec65bd90b12d44f55d57585471bb (diff) | |
download | org.eclipse.cdt-b803d1030c8cc4458b31d3b796a41a43ca8c8051.tar.gz org.eclipse.cdt-b803d1030c8cc4458b31d3b796a41a43ca8c8051.tar.xz org.eclipse.cdt-b803d1030c8cc4458b31d3b796a41a43ca8c8051.zip |
Bug 538615 - GNU-style attribute preceding standard attribute specifier
Change-Id: I8f736ab354b07fb14cba35dec10c8b6d96917d70
Diffstat (limited to 'core')
2 files changed, 8 insertions, 1 deletions
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 f685500cbea..65c9ce2333b 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 @@ -11666,6 +11666,11 @@ public class AST2CPPTests extends AST2CPPTestBase { parseAndCheckBindings(); } + // __attribute__((section(".example"))) alignas(4) static int waldo; + public void testAlignasAfterAttribute_538615() throws Exception { + parseAndCheckBindings(getAboveComment(), CPP, true /* use GNU extensions */); + } + // int operator "" _A(unsigned long long i) { return 1; } // int operator "" _B(long double d) { return 1; } // int operator "" _C(const char* s, unsigned int sz) { return sz; } 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 4ec263f939c..b330ed8b6f3 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 @@ -2604,7 +2604,9 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser { */ @Override protected IASTDeclaration declaration(DeclarationOptions option) throws EndOfFileException, BacktrackException { - List<IASTAttributeSpecifier> attributes = attributeSpecifierSeq(); + // Allow GNU-style attributes both before standard attribute / alignment specifiers, and after. + List<IASTAttributeSpecifier> attributes = __attribute_decl_seq(supportAttributeSpecifiers, supportDeclspecSpecifiers); + attributes = CollectionUtils.merge(attributes, attributeSpecifierSeq()); attributes = CollectionUtils.merge(attributes, __attribute_decl_seq(supportAttributeSpecifiers, supportDeclspecSpecifiers)); switch (LT(1)) { |