diff options
author | Hannes Eder <hannes@hanneseder.net> | 2009-07-27 18:13:49 +0000 |
---|---|---|
committer | Christopher Li <sparse@chrisli.org> | 2009-07-27 20:47:55 +0000 |
commit | d71f7feacbf22f8103b7047a28d2d425612a67d2 (patch) | |
tree | 36e800aca65077e5cfaca6ebe61da63e4e470cd1 | |
parent | f9dc98af0c575ec16c45fc95ac68fbefe46e75fb (diff) | |
download | sparse-d71f7feacbf22f8103b7047a28d2d425612a67d2.tar.gz |
test-suite: integrate unhandled proprocessor tests
Instrument validate/preprocessor/preproprocessor*.c to be integrated
into the test-suite where missing and add an additional test case.
Signed-off-by: Hannes Eder <hannes@hanneseder.net>
Signed-off-by: Christopher Li <sparse@chrisli.org>
-rw-r--r-- | validation/preprocessor/preprocessor11.c | 21 | ||||
-rw-r--r-- | validation/preprocessor/preprocessor12.c | 11 | ||||
-rw-r--r-- | validation/preprocessor/preprocessor13.c | 16 | ||||
-rw-r--r-- | validation/preprocessor/preprocessor14.c | 10 | ||||
-rw-r--r-- | validation/preprocessor/preprocessor15.c | 9 | ||||
-rw-r--r-- | validation/preprocessor/preprocessor16.c | 9 | ||||
-rw-r--r-- | validation/preprocessor/preprocessor22.c | 35 | ||||
-rw-r--r-- | validation/preprocessor/preprocessor7.c | 9 | ||||
-rw-r--r-- | validation/preprocessor/preprocessor8.c | 22 |
9 files changed, 142 insertions, 0 deletions
diff --git a/validation/preprocessor/preprocessor11.c b/validation/preprocessor/preprocessor11.c index 4c6c1c0a..4b376648 100644 --- a/validation/preprocessor/preprocessor11.c +++ b/validation/preprocessor/preprocessor11.c @@ -8,3 +8,24 @@ #define H(x...,y) #define I(...+ #define J(x,y) +/* + * check-name: Preprocessor #11 + * check-command: sparse -E $file + * + * check-output-start + + + * check-output-end + * + * check-error-start +preprocessor/preprocessor11.c:1:11: error: "1" may not appear in macro parameter list +preprocessor/preprocessor11.c:2:11: error: missing ')' in macro parameter list +preprocessor/preprocessor11.c:3:12: error: missing ')' in macro parameter list +preprocessor/preprocessor11.c:4:11: error: parameter name missing +preprocessor/preprocessor11.c:5:11: error: __VA_ARGS__ can only appear in the expansion of a C99 variadic macro +preprocessor/preprocessor11.c:6:12: error: "+" may not appear in macro parameter list +preprocessor/preprocessor11.c:7:12: error: missing ')' in macro parameter list +preprocessor/preprocessor11.c:8:12: error: missing ')' in macro parameter list +preprocessor/preprocessor11.c:9:11: error: missing ')' in macro parameter list + * check-error-end + */ diff --git a/validation/preprocessor/preprocessor12.c b/validation/preprocessor/preprocessor12.c index 385c1a7d..e23e53b2 100644 --- a/validation/preprocessor/preprocessor12.c +++ b/validation/preprocessor/preprocessor12.c @@ -5,3 +5,14 @@ A(1) A(1,2) A(1,2,3) +/* + * check-name: Preprocessor #12 + * check-command: sparse -E $file + * + * check-output-start + +1 +1,2 +1,2,3 + * check-output-end + */ diff --git a/validation/preprocessor/preprocessor13.c b/validation/preprocessor/preprocessor13.c index 96c813ee..b1af8555 100644 --- a/validation/preprocessor/preprocessor13.c +++ b/validation/preprocessor/preprocessor13.c @@ -5,3 +5,19 @@ A(1) A(1,2) A(1,2,3) +/* + * check-name: Preprocessor #13 + * check-command: sparse -E $file + * + * check-output-start + +1 +1,2 +1,2,3 + * check-output-end + * + * check-error-start +preprocessor/preprocessor13.c:6:1: error: '##' failed: concatenation is not a valid token +preprocessor/preprocessor13.c:7:1: error: '##' failed: concatenation is not a valid token + * check-error-end + */ diff --git a/validation/preprocessor/preprocessor14.c b/validation/preprocessor/preprocessor14.c index 001f1f2d..05fc248b 100644 --- a/validation/preprocessor/preprocessor14.c +++ b/validation/preprocessor/preprocessor14.c @@ -5,3 +5,13 @@ A(,1) #define B(x,y,...) x##,##__VA_ARGS__ B(,1) +/* + * check-name: Preprocessor #14 + * check-known-to-fail + * check-command: sparse -E $file + * + * check-output-start + + + * check-output-end + */ diff --git a/validation/preprocessor/preprocessor15.c b/validation/preprocessor/preprocessor15.c index 0a2dfd7f..df877519 100644 --- a/validation/preprocessor/preprocessor15.c +++ b/validation/preprocessor/preprocessor15.c @@ -5,3 +5,12 @@ #if D(A,B) B D(1,2) #endif +/* + * check-name: Preprocessor #15 + * check-command: sparse -E $file + * + * check-output-start + +12 + * check-output-end + */ diff --git a/validation/preprocessor/preprocessor16.c b/validation/preprocessor/preprocessor16.c index e3bd0d9c..75a4a0be 100644 --- a/validation/preprocessor/preprocessor16.c +++ b/validation/preprocessor/preprocessor16.c @@ -19,3 +19,12 @@ they hit before we get to the level of groups. #bullshit #endif +/* + * check-name: Preprocessor #16 + * check-command: sparse -E $file + * + * check-output-start + + + * check-output-end + */ diff --git a/validation/preprocessor/preprocessor22.c b/validation/preprocessor/preprocessor22.c new file mode 100644 index 00000000..af5bcb37 --- /dev/null +++ b/validation/preprocessor/preprocessor22.c @@ -0,0 +1,35 @@ +#define CONFIG_FOO 1 + +#define define_struct(name, fields...) struct fields name; + +define_struct(a, { +#ifdef CONFIG_FOO + int b; +#elif defined(CONFIG_BAR) + int c; +#else + int d; +#endif +}); +/* + * check-name: Preprocessor #22 + * + * check-description: Directives are not allowed within a macro argument list, + * although cpp deals with it to treat macro more like C functions. + * + * check-command: sparse -E $file + * + * check-error-start +preprocessor/preprocessor22.c:6:1: error: directive in argument list +preprocessor/preprocessor22.c:8:1: error: directive in argument list +preprocessor/preprocessor22.c:10:1: error: directive in argument list +preprocessor/preprocessor22.c:12:1: error: directive in argument list + * check-error-end + * + * check-output-start + +struct { +int b; +} a;; + * check-output-end + */ diff --git a/validation/preprocessor/preprocessor7.c b/validation/preprocessor/preprocessor7.c index e7e1d375..07fce8c3 100644 --- a/validation/preprocessor/preprocessor7.c +++ b/validation/preprocessor/preprocessor7.c @@ -3,3 +3,12 @@ #define C(x,y) E(y) #define E(y) #y A(2)) +/* + * check-name: Preprocessor #7 + * check-command: sparse -E $file + * + * check-output-start + +"\"D\"" + * check-output-end + */ diff --git a/validation/preprocessor/preprocessor8.c b/validation/preprocessor/preprocessor8.c index 861dfe51..524825c1 100644 --- a/validation/preprocessor/preprocessor8.c +++ b/validation/preprocessor/preprocessor8.c @@ -14,3 +14,25 @@ "x#y" : E "ab GH \"G\" 12" : F(G,H) "a ## b" : I(a,##,b) +/* + * check-name: Preprocessor #8 + * check-command: sparse -E $file + * + * check-output-start + +"A(x)" : A(x) +"B(x)" : B(x) +"C(x)" : C(x) +"D(x)" : D(x) +"x#y" : x#y +"ab GH \"G\" 12" : ab GH "G" 12 +"a ## b" : a ## b + * check-output-end + * + * check-error-start +preprocessor/preprocessor8.c:1:14: error: '##' cannot appear at the ends of macro expansion +preprocessor/preprocessor8.c:2:16: error: '##' cannot appear at the ends of macro expansion +preprocessor/preprocessor8.c:3:22: error: '##' cannot appear at the ends of macro expansion +preprocessor/preprocessor8.c:4:15: error: '#' is not followed by a macro parameter + * check-error-end + */ |