Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/usr.bin/make/unit-tests make(1): add test for operator prece...
details: https://anonhg.NetBSD.org/src/rev/3b2fcef542b2
branches: trunk
changeset: 946081:3b2fcef542b2
user: rillig <rillig%NetBSD.org@localhost>
date: Sun Nov 15 14:04:26 2020 +0000
description:
make(1): add test for operator precedence using truth tables
diffstat:
usr.bin/make/unit-tests/cond-op.exp | 9 +++++++++
usr.bin/make/unit-tests/cond-op.mk | 18 +++++++++++++++++-
2 files changed, 26 insertions(+), 1 deletions(-)
diffs (50 lines):
diff -r 384c05f77092 -r 3b2fcef542b2 usr.bin/make/unit-tests/cond-op.exp
--- a/usr.bin/make/unit-tests/cond-op.exp Sun Nov 15 14:01:06 2020 +0000
+++ b/usr.bin/make/unit-tests/cond-op.exp Sun Nov 15 14:04:26 2020 +0000
@@ -2,6 +2,15 @@
make: "cond-op.mk" line 70: Malformed conditional (0 ${ERR::=evaluated})
make: "cond-op.mk" line 74: warning: After detecting a parse error, the rest is evaluated.
make: "cond-op.mk" line 78: Parsing continues until here.
+make: "cond-op.mk" line 81: A B C => (A || B) && C A || B && C A || (B && C)
+make: "cond-op.mk" line 88: 0 0 0 => 0 0 0
+make: "cond-op.mk" line 88: 0 0 1 => 0 0 0
+make: "cond-op.mk" line 88: 0 1 0 => 0 0 0
+make: "cond-op.mk" line 88: 0 1 1 => 1 1 1
+make: "cond-op.mk" line 88: 1 0 0 => 0 1 1
+make: "cond-op.mk" line 88: 1 0 1 => 1 1 1
+make: "cond-op.mk" line 88: 1 1 0 => 0 1 1
+make: "cond-op.mk" line 88: 1 1 1 => 1 1 1
make: Fatal errors encountered -- cannot continue
make: stopped in unit-tests
exit status 1
diff -r 384c05f77092 -r 3b2fcef542b2 usr.bin/make/unit-tests/cond-op.mk
--- a/usr.bin/make/unit-tests/cond-op.mk Sun Nov 15 14:01:06 2020 +0000
+++ b/usr.bin/make/unit-tests/cond-op.mk Sun Nov 15 14:04:26 2020 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: cond-op.mk,v 1.8 2020/10/24 08:46:08 rillig Exp $
+# $NetBSD: cond-op.mk,v 1.9 2020/11/15 14:04:26 rillig Exp $
#
# Tests for operators like &&, ||, ! in .if conditions.
#
@@ -77,5 +77,21 @@
# Just in case that parsing should ever stop on the first error.
.info Parsing continues until here.
+# Demonstration that '&&' has higher precedence than '||'.
+.info A B C => (A || B) && C A || B && C A || (B && C)
+.for a in 0 1
+. for b in 0 1
+. for c in 0 1
+. for r1 in ${ ($a || $b) && $c :?1:0}
+. for r2 in ${ $a || $b && $c :?1:0}
+. for r3 in ${ $a || ($b && $c) :?1:0}
+. info $a $b $c => ${r1} ${r2} ${r3}
+. endfor
+. endfor
+. endfor
+. endfor
+. endfor
+.endfor
+
all:
@:;
Home |
Main Index |
Thread Index |
Old Index