Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/usr.bin/xlint/lint1 lint: finish the comments in check_prece...
details: https://anonhg.NetBSD.org/src/rev/32b050a6fba1
branches: trunk
changeset: 958440:32b050a6fba1
user: rillig <rillig%NetBSD.org@localhost>
date: Mon Jan 04 22:41:56 2021 +0000
description:
lint: finish the comments in check_precedence_confusion
diffstat:
tests/usr.bin/xlint/lint1/msg_169.c | 7 ++++---
usr.bin/xlint/lint1/tree.c | 17 +++++++++++++++--
2 files changed, 19 insertions(+), 5 deletions(-)
diffs (56 lines):
diff -r a357d9a99c5b -r 32b050a6fba1 tests/usr.bin/xlint/lint1/msg_169.c
--- a/tests/usr.bin/xlint/lint1/msg_169.c Mon Jan 04 22:33:47 2021 +0000
+++ b/tests/usr.bin/xlint/lint1/msg_169.c Mon Jan 04 22:41:56 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: msg_169.c,v 1.2 2021/01/04 15:52:51 rillig Exp $ */
+/* $NetBSD: msg_169.c,v 1.3 2021/01/04 22:41:56 rillig Exp $ */
# 3 "msg_169.c"
// Test for message: precedence confusion possible: parenthesize! [169]
@@ -146,5 +146,6 @@
ok = a + b * c;
}
-// TODO: add a test with unsigned long instead of unsigned, to demonstrate
-// that the typo in
+// TODO: add a test with unsigned long instead of unsigned, trying to
+// demonstrate that the typo in check_precedence_confusion actually has an
+// effect.
diff -r a357d9a99c5b -r 32b050a6fba1 usr.bin/xlint/lint1/tree.c
--- a/usr.bin/xlint/lint1/tree.c Mon Jan 04 22:33:47 2021 +0000
+++ b/usr.bin/xlint/lint1/tree.c Mon Jan 04 22:41:56 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: tree.c,v 1.128 2021/01/04 22:33:47 rillig Exp $ */
+/* $NetBSD: tree.c,v 1.129 2021/01/04 22:41:56 rillig Exp $ */
/*
* Copyright (c) 1994, 1995 Jochen Pohl
@@ -37,7 +37,7 @@
#include <sys/cdefs.h>
#if defined(__RCSID) && !defined(lint)
-__RCSID("$NetBSD: tree.c,v 1.128 2021/01/04 22:33:47 rillig Exp $");
+__RCSID("$NetBSD: tree.c,v 1.129 2021/01/04 22:41:56 rillig Exp $");
#endif
#include <float.h>
@@ -4016,6 +4016,19 @@
* Before fixing this though, there should be a unit test
* that demonstrates an actual change in behavior when this
* bug gets fixed.
+ *
+ * Right now, the condition is always false. To make it true
+ * after fixing the typo, the right-hand operand must be an
+ * explicit cast or an implicit conversion that is
+ * parenthesized. For the right-hand operand itself, this
+ * would already be done using the line below the loop.
+ *
+ * To make a difference, the right-hand operand must not be
+ * parenthesized, but its indirect cast or conversion must be.
+ *
+ * An implicit conversion is never parenthesized. Therefore
+ * this must be a cast that is later converted, to build a
+ * chain.
*/
for (rn = tn->tn_right; tn->tn_op == CVT; rn = rn->tn_left)
rparn |= rn->tn_parenthesized;
Home |
Main Index |
Thread Index |
Old Index