# Check that we can parse declarations with more than 10000 specifiers.
AT_SETUP([Excessive specifiers])
-s="const"
-for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14; do
- AS_VAR_APPEND([s], [" $s"])
-done
-
-cat >test.dat <<EOF
-explain $s int
-explain int $s
-type $s int
-type int $s
-EOF
-
-s="inline"
-for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14; do
- AS_VAR_APPEND([s], [" $s"])
-done
-cat >>test.dat <<EOF
-declare f as $s function returning int
-EOF
-
-AT_CHECK([cdecl99 -f test.dat], [0],
+AT_CHECK([gunzip -c "$srcdir/tests/data/manyspec.gz" >test.dat || exit 77
+cdecl99 -f test.dat], [0],
[[type const int
type const int
const int
BEGIN { FS = "@"; runstart = 0; }
END { finish_run(NR); }
+gsub(/,[^,)]*/, "~") {
+ while (match($0, /~+/) > 0) {
+ l = substr($0, 1, RSTART-1);
+ r = substr($0, RSTART+RLENGTH);
+ $0 = l ", [plus " RLENGTH " more parameters]" r;
+ }
+}
+
$0 != lastline {
finish_run(NR-1);
lastline = $0;
}
]])
-a="a"
-for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14; do
- AS_VAR_APPEND([a], [",$a"])
-done
-
-cat >test.dat <<EOF
-explain int $a
-EOF
-
-AT_CHECK([cdecl99 -f test.dat >test.out; status=$?;
+AT_CHECK([gunzip -c "$srcdir/tests/data/manydecl.gz" >test.dat || exit 77
+cdecl99 -f test.dat >test.out; status=$?;
$AWK -f check.awk test.out
exit $status], [0],
[[declare a as int
[repeated 16383 more times]
+type function (a, [plus 16383 more parameters]) returning int
+int (a, [plus 16383 more parameters])
]])
AT_CLEANUP