1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-28 19:35:36 +02:00

Fix and testcase for 196468, gcc-extension for C89: empty braces in initializer.

This commit is contained in:
Markus Schorn 2007-07-17 08:31:48 +00:00
parent 576c9b4495
commit e3d42ea529
2 changed files with 24 additions and 0 deletions

View file

@ -3892,4 +3892,20 @@ public class AST2Tests extends AST2BaseTest {
parse( buffer.toString(), ParserLanguage.C); parse( buffer.toString(), ParserLanguage.C);
assertTrue(System.currentTimeMillis()-time < 1000); 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) {
}
}
} }

View file

@ -179,6 +179,14 @@ public class GNUCSourceParser extends AbstractGNUSourceCodeParser {
consume(); consume();
IASTInitializerList result = createInitializerList(); IASTInitializerList result = createInitializerList();
((ASTNode) result).setOffset(startingOffset); ((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 (;;) { for (;;) {
int checkHashcode = LA(1).hashCode(); int checkHashcode = LA(1).hashCode();
// required at least one initializer list // required at least one initializer list