Module Name:    src
Committed By:   rillig
Date:           Sat May 13 13:31:37 UTC 2023

Modified Files:
        src/tests/usr.bin/indent: lex_number.c
        src/usr.bin/indent: lexi.c

Log Message:
indent: fix lexing of numbers that are spread over multiple lines


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/tests/usr.bin/indent/lex_number.c
cvs rdiff -u -r1.178 -r1.179 src/usr.bin/indent/lexi.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/indent/lex_number.c
diff -u src/tests/usr.bin/indent/lex_number.c:1.1 src/tests/usr.bin/indent/lex_number.c:1.2
--- src/tests/usr.bin/indent/lex_number.c:1.1	Sat May 13 13:24:01 2023
+++ src/tests/usr.bin/indent/lex_number.c	Sat May 13 13:31:37 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: lex_number.c,v 1.1 2023/05/13 13:24:01 rillig Exp $ */
+/* $NetBSD: lex_number.c,v 1.2 2023/05/13 13:31:37 rillig Exp $ */
 
 /*
  * Test lexing of numbers.
@@ -33,8 +33,6 @@ x\
 78;
 //indent end
 
-/* FIXME: properly unwrap numbers */
 //indent run -di0
-int wrapped = 0 \
-x12345678;
+int wrapped = 0x12345678;
 //indent end

Index: src/usr.bin/indent/lexi.c
diff -u src/usr.bin/indent/lexi.c:1.178 src/usr.bin/indent/lexi.c:1.179
--- src/usr.bin/indent/lexi.c:1.178	Sat May 13 12:31:02 2023
+++ src/usr.bin/indent/lexi.c	Sat May 13 13:31:37 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: lexi.c,v 1.178 2023/05/13 12:31:02 rillig Exp $	*/
+/*	$NetBSD: lexi.c,v 1.179 2023/05/13 13:31:37 rillig Exp $	*/
 
 /*-
  * SPDX-License-Identifier: BSD-4-Clause
@@ -43,7 +43,7 @@ static char sccsid[] = "@(#)lexi.c	8.1 (
 
 #include <sys/cdefs.h>
 #if defined(__NetBSD__)
-__RCSID("$NetBSD: lexi.c,v 1.178 2023/05/13 12:31:02 rillig Exp $");
+__RCSID("$NetBSD: lexi.c,v 1.179 2023/05/13 13:31:37 rillig Exp $");
 #elif defined(__FreeBSD__)
 __FBSDID("$FreeBSD: head/usr.bin/indent/lexi.c 337862 2018-08-15 18:19:45Z pstef $");
 #endif
@@ -206,6 +206,12 @@ lex_number(void)
 {
     for (unsigned char s = 'A'; s != 'f' && s != 'i' && s != 'u';) {
 	unsigned char ch = (unsigned char)inp_peek();
+	if (ch == '\\' && inp_lookahead(1) == '\n') {
+	    inp_skip();
+	    inp_skip();
+	    line_no++;
+	    continue;
+	}
 	if (ch >= array_length(lex_number_row) || lex_number_row[ch] == 0)
 	    break;
 

Reply via email to