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;