xref: /netbsd-src/tests/usr.bin/xlint/lint1/lex_integer_binary.c (revision b2baa50111d645353fa30b4deab0f79d93650c8c)
1*b2baa501Srillig /*	$NetBSD: lex_integer_binary.c,v 1.3 2023/03/28 14:44:34 rillig Exp $	*/
274ecc892Srillig # 3 "lex_integer_binary.c"
374ecc892Srillig 
474ecc892Srillig /*
574ecc892Srillig  * Test for parsing binary integer literals in non-GCC mode.
674ecc892Srillig  * As of C11, binary integer literals are not supported.
774ecc892Srillig  * Neither are underscores in integer literals.
874ecc892Srillig  */
974ecc892Srillig 
1074ecc892Srillig /* Remove the default -g flag. */
11*b2baa501Srillig /* lint1-flags: -Ac11 -w -X 351 */
1274ecc892Srillig 
1374ecc892Srillig void sink(unsigned int);
1474ecc892Srillig 
1574ecc892Srillig void
binary_literal(void)1674ecc892Srillig binary_literal(void)
1774ecc892Srillig {
1874ecc892Srillig 	/*
1974ecc892Srillig 	 * Binary integer literals are a GCC extension, but lint allows them
2074ecc892Srillig 	 * even in non-GCC mode.
2174ecc892Srillig 	 */
2274ecc892Srillig 	sink(0b1111000001011010);
2374ecc892Srillig 
2474ecc892Srillig 	/*
2574ecc892Srillig 	 * Even though it would be useful for binary literals, GCC does not
2674ecc892Srillig 	 * support underscores to separate the digit groups.
2774ecc892Srillig 	 */
28c83f7defSrillig 	/* expect+1: error: syntax error '_0000_0101_1010' [249] */
2974ecc892Srillig 	sink(0b1111_0000_0101_1010);
3074ecc892Srillig }
31