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 bfb3c271c35..ae6d8fdf9fc 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 @@ -5503,4 +5503,12 @@ public class AST2CPPTests extends AST2BaseTest { parse( buffer.toString(), ParserLanguage.CPP, true, true ); } + + public void testBug179712() throws Exception { + StringBuffer buffer = new StringBuffer(); + buffer.append( "void foo (void *p) throw () ; \n"); //$NON-NLS-1$ + buffer.append( "void bar (void *p) __attribute__ (( __nonnull__(1) )); \n"); //$NON-NLS-1$ + buffer.append( "void zot (void *p) throw () __attribute__ (( __nonnull__(1) )); \n"); //$NON-NLS-1$ + parse( buffer.toString(), ParserLanguage.CPP, true, true ); + } } 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 404614280cf..24de2745421 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 @@ -4092,6 +4092,9 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser { break; } } + + // more __attribute__ after throws + __attribute_decl_seq(supportAttributeSpecifiers, false); } // check for optional pure virtual if (LT(1) == IToken.tASSIGN && LT(2) == IToken.tINTEGER) {