Module Name: src Committed By: rillig Date: Fri Feb 2 16:05:37 UTC 2024
Modified Files: src/tests/usr.bin/xlint/lint1: msg_253.c msg_258.c src/usr.bin/xlint/lint1: cgram.y lex.c Log Message: lint: make newline in a string literal an error in C90 and later To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/tests/usr.bin/xlint/lint1/msg_253.c cvs rdiff -u -r1.5 -r1.6 src/tests/usr.bin/xlint/lint1/msg_258.c cvs rdiff -u -r1.485 -r1.486 src/usr.bin/xlint/lint1/cgram.y cvs rdiff -u -r1.206 -r1.207 src/usr.bin/xlint/lint1/lex.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/tests/usr.bin/xlint/lint1/msg_253.c diff -u src/tests/usr.bin/xlint/lint1/msg_253.c:1.4 src/tests/usr.bin/xlint/lint1/msg_253.c:1.5 --- src/tests/usr.bin/xlint/lint1/msg_253.c:1.4 Fri Jun 17 18:54:53 2022 +++ src/tests/usr.bin/xlint/lint1/msg_253.c Fri Feb 2 16:05:37 2024 @@ -1,8 +1,9 @@ -/* $NetBSD: msg_253.c,v 1.4 2022/06/17 18:54:53 rillig Exp $ */ +/* $NetBSD: msg_253.c,v 1.5 2024/02/02 16:05:37 rillig Exp $ */ # 3 "msg_253.c" // Test for message: unterminated character constant [253] +/* expect+4: error: newline in string or char constant [254] */ /* expect+3: error: unterminated character constant [253] */ -/* expect+2: error: syntax error '' [249] */ +/* expect+2: error: syntax error ''' [249] */ ' Index: src/tests/usr.bin/xlint/lint1/msg_258.c diff -u src/tests/usr.bin/xlint/lint1/msg_258.c:1.5 src/tests/usr.bin/xlint/lint1/msg_258.c:1.6 --- src/tests/usr.bin/xlint/lint1/msg_258.c:1.5 Tue Mar 28 14:44:35 2023 +++ src/tests/usr.bin/xlint/lint1/msg_258.c Fri Feb 2 16:05:37 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: msg_258.c,v 1.5 2023/03/28 14:44:35 rillig Exp $ */ +/* $NetBSD: msg_258.c,v 1.6 2024/02/02 16:05:37 rillig Exp $ */ # 3 "msg_258.c" // Test for message: unterminated string constant [258] @@ -12,6 +12,7 @@ int dummy; // // "This string doesn't end in this line. +/* expect+5: error: newline in string or char constant [254] */ /* expect+4: error: unterminated string constant [258] */ /* expect+3: error: syntax error '' [249] */ /* expect+2: error: empty array declaration for 'str' [190] */ Index: src/usr.bin/xlint/lint1/cgram.y diff -u src/usr.bin/xlint/lint1/cgram.y:1.485 src/usr.bin/xlint/lint1/cgram.y:1.486 --- src/usr.bin/xlint/lint1/cgram.y:1.485 Thu Feb 1 18:37:06 2024 +++ src/usr.bin/xlint/lint1/cgram.y Fri Feb 2 16:05:37 2024 @@ -1,5 +1,5 @@ %{ -/* $NetBSD: cgram.y,v 1.485 2024/02/01 18:37:06 rillig Exp $ */ +/* $NetBSD: cgram.y,v 1.486 2024/02/02 16:05:37 rillig Exp $ */ /* * Copyright (c) 1996 Christopher G. Demetriou. All Rights Reserved. @@ -35,7 +35,7 @@ #include <sys/cdefs.h> #if defined(__RCSID) -__RCSID("$NetBSD: cgram.y,v 1.485 2024/02/01 18:37:06 rillig Exp $"); +__RCSID("$NetBSD: cgram.y,v 1.486 2024/02/02 16:05:37 rillig Exp $"); #endif #include <limits.h> @@ -187,7 +187,7 @@ is_either(const char *s, const char *a, op_name($$->tn_op), type_name($$->tn_type)); } <y_tnode> %printer { fprintf(yyo, "%zu to %zu", $$.lo, $$.hi); } <y_range> -%printer { fprintf(yyo, "length %zu", $$->st_len); } <y_string> +%printer { fprintf(yyo, "length %zu", $$->len); } <y_string> %printer { fprintf(yyo, "%s *", type_qualifiers_string($$->qualifiers)); } <y_qual_ptr> Index: src/usr.bin/xlint/lint1/lex.c diff -u src/usr.bin/xlint/lint1/lex.c:1.206 src/usr.bin/xlint/lint1/lex.c:1.207 --- src/usr.bin/xlint/lint1/lex.c:1.206 Thu Feb 1 21:19:13 2024 +++ src/usr.bin/xlint/lint1/lex.c Fri Feb 2 16:05:37 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: lex.c,v 1.206 2024/02/01 21:19:13 rillig Exp $ */ +/* $NetBSD: lex.c,v 1.207 2024/02/02 16:05:37 rillig Exp $ */ /* * Copyright (c) 1996 Christopher G. Demetriou. All Rights Reserved. @@ -38,7 +38,7 @@ #include <sys/cdefs.h> #if defined(__RCSID) -__RCSID("$NetBSD: lex.c,v 1.206 2024/02/01 21:19:13 rillig Exp $"); +__RCSID("$NetBSD: lex.c,v 1.207 2024/02/02 16:05:37 rillig Exp $"); #endif #include <ctype.h> @@ -903,12 +903,9 @@ get_escaped_char(int delim) return -1; switch (c) { case '\n': - if (!allow_c90) { - /* newline in string or char constant */ - error(254); - return -2; - } - return c; + /* newline in string or char constant */ + error(254); + return -2; case '\0': /* syntax error '%s' */ error(249, "EOF or null byte in literal");