diff options
author | Volker Reichelt <reichelt@igpm.rwth-aachen.de> | 2006-08-15 16:52:25 +0000 |
---|---|---|
committer | Volker Reichelt <reichelt@gcc.gnu.org> | 2006-08-15 16:52:25 +0000 |
commit | 2c14ae9a7bf2ee1380fd82d38dbb25a8eb8edebb (patch) | |
tree | 3becacfcfd14124e3f5ae691909077bb166e199d /gcc/testsuite/gcc.dg | |
parent | 482e4739cd916f149da266c6a9197f521363697b (diff) | |
download | gcc-2c14ae9a7bf2ee1380fd82d38dbb25a8eb8edebb.zip gcc-2c14ae9a7bf2ee1380fd82d38dbb25a8eb8edebb.tar.gz gcc-2c14ae9a7bf2ee1380fd82d38dbb25a8eb8edebb.tar.bz2 |
re PR c/28649 (Poor error recovery of C parser)
PR c/28649
* c-parser.c (c_parser_compound_statement_nostart): Reset
parser->error after each statement.
* gcc.dg/parse-error-1.c: New test.
* gcc.dg/parse-error-2.c: New test.
* gcc.dg/cpp/digraph2.c: Add error-marker.
* gcc.dg/noncompile/920923-1.c: Likewise.
From-SVN: r116157
Diffstat (limited to 'gcc/testsuite/gcc.dg')
-rw-r--r-- | gcc/testsuite/gcc.dg/cpp/digraph2.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/noncompile/920923-1.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/parse-error-1.c | 10 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/parse-error-2.c | 14 |
4 files changed, 26 insertions, 2 deletions
diff --git a/gcc/testsuite/gcc.dg/cpp/digraph2.c b/gcc/testsuite/gcc.dg/cpp/digraph2.c index 16fcbae..293cafa 100644 --- a/gcc/testsuite/gcc.dg/cpp/digraph2.c +++ b/gcc/testsuite/gcc.dg/cpp/digraph2.c @@ -13,7 +13,7 @@ int main (int argc, char *argv[]) /* Place this after main () so we get to test both the compiler above and the preprocessor below. */ -%:define glue +%:define glue /* { dg-error "expected declaration" } */ #ifdef glue #error glue is defined! #endif diff --git a/gcc/testsuite/gcc.dg/noncompile/920923-1.c b/gcc/testsuite/gcc.dg/noncompile/920923-1.c index 8011f28..8dd19b2 100644 --- a/gcc/testsuite/gcc.dg/noncompile/920923-1.c +++ b/gcc/testsuite/gcc.dg/noncompile/920923-1.c @@ -56,7 +56,7 @@ caddr_t v_addr; /* { dg-error "expected" } */ { register prec_t bucket; register caddr_t p_addr; /* { dg-error "expected|undeclared" } */ - bucket = mem_hash+((((v_addr)>>ITEMBITS))&hash_mask); + bucket = mem_hash+((((v_addr)>>ITEMBITS))&hash_mask); /* { dg-error "undeclared" } */ do { if (bucket->v_addr == ((v_addr)>>ITEMBITS) { /* { dg-error "expected|undeclared|no member" } */ if(!(bucket->perm_set&va_op)) diff --git a/gcc/testsuite/gcc.dg/parse-error-1.c b/gcc/testsuite/gcc.dg/parse-error-1.c new file mode 100644 index 0000000..704786f --- /dev/null +++ b/gcc/testsuite/gcc.dg/parse-error-1.c @@ -0,0 +1,10 @@ +/* PR c/28649 */ +/* { dg-do compile } */ + +void foo() +{ + +; /* { dg-error "expected expression" } */ + +; /* { dg-error "expected expression" } */ +} + +int +; /* { dg-error "expected identifier" } */ diff --git a/gcc/testsuite/gcc.dg/parse-error-2.c b/gcc/testsuite/gcc.dg/parse-error-2.c new file mode 100644 index 0000000..7ab3cd7 --- /dev/null +++ b/gcc/testsuite/gcc.dg/parse-error-2.c @@ -0,0 +1,14 @@ +/* PR c/28649 */ +/* { dg-do compile } */ + +void foo() +{ + +; /* { dg-error "expected expression" } */ +} + +int i; + +void bar() +{ + i++; /* { dg-bogus "undeclared" } */ +} |