diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java index a08aa632b61..b76f0822338 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java @@ -3892,4 +3892,20 @@ public class AST2Tests extends AST2BaseTest { parse( buffer.toString(), ParserLanguage.C); assertTrue(System.currentTimeMillis()-time < 1000); } + + // int array[12]= {}; + public void testBug196468_emptyArrayInitializer() throws Exception { + StringBuffer buffer = getContents(1)[0]; + final String content = buffer.toString(); + parse( content, ParserLanguage.CPP, false); + parse( content, ParserLanguage.CPP, true); + parse( content, ParserLanguage.C, true); + try { + parse( content, ParserLanguage.C, false); + fail("C89 does not allow empty braces in array initializer"); + } + catch (ParserException e) { + } + } + } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/GNUCSourceParser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/GNUCSourceParser.java index 18e6a46abc5..0285011f58c 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/GNUCSourceParser.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/GNUCSourceParser.java @@ -179,6 +179,14 @@ public class GNUCSourceParser extends AbstractGNUSourceCodeParser { consume(); IASTInitializerList result = createInitializerList(); ((ASTNode) result).setOffset(startingOffset); + + // bug 196468, gcc accepts empty braces. + if (supportGCCStyleDesignators && LT(1) == (IToken.tRBRACE)) { + int l = consume().getEndOffset(); + ((ASTNode) result).setLength(l - startingOffset); + return result; + } + for (;;) { int checkHashcode = LA(1).hashCode(); // required at least one initializer list