root/usr/src/tools/smatch/src/validation/preprocessor/preprocessor8.c
#define A(x) ## x
#define B(x) x ##
#define C(x) x ## ## ##
#define D(x) x#y
#define E x#y
#define F(x,y) x x##y #x y
#define G a##b
#define H 1##2
#define I(x,y,z) x y z
"A(x)"                  : A(x)
"B(x)"                  : B(x)
"C(x)"                  : C(x)
"D(x)"                  : D(x)
"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
 */