Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/tests/usr.bin/xlint/lint1 tests/lint: demonstrate unexpected...



details:   https://anonhg.NetBSD.org/src/rev/3230bc8ecc20
branches:  trunk
changeset: 362450:3230bc8ecc20
user:      rillig <rillig%NetBSD.org@localhost>
date:      Sun Feb 27 18:51:21 2022 +0000

description:
tests/lint: demonstrate unexpected ordering of string concatenations

When lint concatenates the strings "1" "2" "3" "4", it first
concatenates "23", then "234" and finally "1234".

diffstat:

 tests/usr.bin/xlint/lint1/msg_292.c   |  38 ++++++++++++++++++++++++++++++++--
 tests/usr.bin/xlint/lint1/msg_292.exp |   9 +++++++-
 2 files changed, 43 insertions(+), 4 deletions(-)

diffs (59 lines):

diff -r 903158bd991b -r 3230bc8ecc20 tests/usr.bin/xlint/lint1/msg_292.c
--- a/tests/usr.bin/xlint/lint1/msg_292.c       Sun Feb 27 18:29:14 2022 +0000
+++ b/tests/usr.bin/xlint/lint1/msg_292.c       Sun Feb 27 18:51:21 2022 +0000
@@ -1,7 +1,39 @@
-/*     $NetBSD: msg_292.c,v 1.2 2021/02/21 09:07:58 rillig Exp $       */
+/*     $NetBSD: msg_292.c,v 1.3 2022/02/27 18:51:21 rillig Exp $       */
 # 3 "msg_292.c"
 
 // Test for message: cannot concatenate wide and regular string literals [292]
 
-TODO: "Add example code that triggers the above message." /* expect: 249 */
-TODO: "Add example code that almost triggers the above message."
+const char c_c_c_w_w_w[] =
+       "c2"
+       "c  4"
+       "c      8"
+       /* expect+1: error: cannot concatenate wide and regular string literals [292] */
+       L"w2"
+       /* expect+1: error: cannot concatenate wide and regular string literals [292] */
+       L"w  4"
+       /* expect+1: error: cannot concatenate wide and regular string literals [292] */
+       L"w      8";
+/* The 15 results from 2 + 4 + 8 + '\0'. */
+/* expect+1: error: negative array dimension (-15) [20] */
+typedef int reveal_sizeof_c_c_c_w_w_w[-(int)sizeof(c_c_c_w_w_w)];
+
+const char c_w_c_w_c_w[] =
+       "c2"
+       L"w2"
+       /* expect+1: error: cannot concatenate wide and regular string literals [292] */
+       "c  4"
+       L"w  4"
+       /* expect+1: error: cannot concatenate wide and regular string literals [292] */
+       "c      8"
+       /* expect+1: error: cannot concatenate wide and regular string literals [292] */
+       L"w      8";
+/*
+ * Concatenating L"w2" with "c4" fails, keeping L"w2".
+ * Concatenating L"w2" with L"w4" succeeds, resulting in L"w2w4".
+ * Concatenating L"w2w4" with "c8" fails, keeping L"w2w4".
+ * Concatenating L"w2w4" with L"w8" succeeds, resulting in L"w2w4w8".
+ * Concatenating "c2" with L"w2w4w8" fails, keeping "c2".
+ * The size of "c2" is 3.
+ */
+/* expect+1: error: negative array dimension (-3) [20] */
+typedef int reveal_sizeof_c_w_c_w_c_w[-(int)sizeof(c_w_c_w_c_w)];
diff -r 903158bd991b -r 3230bc8ecc20 tests/usr.bin/xlint/lint1/msg_292.exp
--- a/tests/usr.bin/xlint/lint1/msg_292.exp     Sun Feb 27 18:29:14 2022 +0000
+++ b/tests/usr.bin/xlint/lint1/msg_292.exp     Sun Feb 27 18:51:21 2022 +0000
@@ -1,1 +1,8 @@
-msg_292.c(6): error: syntax error ':' [249]
+msg_292.c(11): error: cannot concatenate wide and regular string literals [292]
+msg_292.c(13): error: cannot concatenate wide and regular string literals [292]
+msg_292.c(15): error: cannot concatenate wide and regular string literals [292]
+msg_292.c(18): error: negative array dimension (-15) [20]
+msg_292.c(24): error: cannot concatenate wide and regular string literals [292]
+msg_292.c(27): error: cannot concatenate wide and regular string literals [292]
+msg_292.c(29): error: cannot concatenate wide and regular string literals [292]
+msg_292.c(39): error: negative array dimension (-3) [20]



Home | Main Index | Thread Index | Old Index