xref: /netbsd-src/tests/usr.bin/xlint/lint1/lex_wide_char.c (revision 6f23d4df445f4631bf636eda60148f87f35b184f)
1*6f23d4dfSrillig /*	$NetBSD: lex_wide_char.c,v 1.5 2024/01/19 19:23:34 rillig Exp $	*/
23ce615ebSrillig # 3 "lex_wide_char.c"
33ce615ebSrillig 
43ce615ebSrillig /*
53ce615ebSrillig  * Tests for lexical analysis of character constants.
63ce615ebSrillig  *
73ce615ebSrillig  * C99 6.4.4.4 "Character constants"
83ce615ebSrillig  */
93ce615ebSrillig 
10b2baa501Srillig /* lint1-extra-flags: -X 351 */
11b2baa501Srillig 
123ce615ebSrillig void sink(int);
133ce615ebSrillig 
143ce615ebSrillig void
test(void)153ce615ebSrillig test(void)
163ce615ebSrillig {
17c83f7defSrillig 	/* expect+1: error: empty character constant [73] */
183ce615ebSrillig 	sink(L'');
193ce615ebSrillig 
203ce615ebSrillig 	sink(L'a');
213ce615ebSrillig 
223ce615ebSrillig 	sink(L'\0');
233ce615ebSrillig 
243ce615ebSrillig 	/* UTF-8 */
25c83f7defSrillig 	/* expect+1: error: too many characters in character constant [71] */
263ce615ebSrillig 	sink(L'ä');
273ce615ebSrillig 
283ce615ebSrillig 	/* GCC extension */
293ce615ebSrillig 	sink(L'\e');
303ce615ebSrillig 
31*6f23d4dfSrillig 	/* expect+1: warning: dubious escape \y [79] */
32*6f23d4dfSrillig 	sink(L'\y');
33*6f23d4dfSrillig 
343ce615ebSrillig 	/* since C99 */
353ce615ebSrillig 	sink(L'\x12');
363ce615ebSrillig 
373ce615ebSrillig 	/* octal */
383ce615ebSrillig 	sink(L'\177');
393ce615ebSrillig 
403ce615ebSrillig 	/* newline */
413ce615ebSrillig 	sink(L'\n');
423ce615ebSrillig 
43c83f7defSrillig 	/* expect+1: error: empty character constant [73] */
443ce615ebSrillig 	sink(L'');
453ce615ebSrillig }
46