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");

Reply via email to