1*b2baa501Srillig /* $NetBSD: lex_string.c,v 1.6 2023/03/28 14:44:34 rillig Exp $ */ 23ce615ebSrillig # 3 "lex_string.c" 33ce615ebSrillig 43ce615ebSrillig /* 53ce615ebSrillig * Test lexical analysis of string constants. 63ce615ebSrillig * 73ce615ebSrillig * C99 6.4.5 "String literals" 83ce615ebSrillig */ 93ce615ebSrillig 10*b2baa501Srillig /* lint1-extra-flags: -X 351 */ 11*b2baa501Srillig 123ce615ebSrillig void sink(const char *); 133ce615ebSrillig 143ce615ebSrillig void test(void)153ce615ebSrilligtest(void) 163ce615ebSrillig { 173ce615ebSrillig sink(""); 183ce615ebSrillig 193ce615ebSrillig sink("hello, world\n"); 203ce615ebSrillig 213ce615ebSrillig sink("\0"); 223ce615ebSrillig 233ce615ebSrillig sink("\0\0\0\0"); 243ce615ebSrillig 25c83f7defSrillig /* expect+1: error: no hex digits follow \x [74] */ 263ce615ebSrillig sink("\x"); /* unfinished */ 273ce615ebSrillig 28c83f7defSrillig /* expect+1: warning: dubious escape \y [79] */ 293ce615ebSrillig sink("\y"); /* unknown escape sequence */ 300b138779Srillig 310b138779Srillig sink("first" "second"); 320b138779Srillig 330b138779Srillig /* expect+1: error: cannot concatenate wide and regular string literals [292] */ 340b138779Srillig sink("plain" L"wide"); 353ce615ebSrillig } 36f1e67469Srillig 37f1e67469Srillig /* TODO: test digraphs inside string literals */ 38f1e67469Srillig /* TODO: test trigraphs inside string literals */ 39