Disable parse error recovery in unit tests and (partially) fix the resulting fallout.
Comment in failing tests: we didnt regressed here, and have to fix them later
Fixed setup for another test. Add a more elaborated test for the parse error recovery feature
Merge remote-tracking branch 'origin/master'
Support GCC case range extension.

With GCC, you can specify a range of consecutive values in a single case label, like this:

     case low ... high:

This has the same effect as the proper number of individual case labels, one for each integer value from low to high, inclusive.
Support C99 designed initializers.

Standard C89 and C++ require the elements of an initializer to appear in a fixed order, the same as the order of the elements in the array or structure being initialized.

In ISO C99 you can give the elements in any order, specifying the array indices or structure field names they apply to.
To specify an array index, write `[index] =' before the element value. For example,

     int a[6] = { [4] = 29, [2] = 15 };

Gcc also adds an extension to initialize a range of elements to the same value, by writing `[first ... last] = value'. For example,

     int widths[] = { [0 ... 9] = 1, [10 ... 99] = 2, [100] = 3 };

In a structure initializer, specify the name of a field to initialize with `.fieldname =' before the element value. For example,

     struct point { int x, y; };
     struct point p = { .y = yvalue, .x = xvalue };
Support C99 compound literals.

ISO C99 supports compound literals. A compound literal looks like a cast
containing an initializer. Its value is an object of the type specified
in the cast, containing the elements specified in the initializer; it is
an lvalue.

For example,
    struct foo {int a; char b[2];} structure;
    structure = ((struct foo) {x + y, 'a', 0});