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): demonstrate parsing bugs in...



details:   https://anonhg.NetBSD.org/src/rev/efe47074a39d
branches:  trunk
changeset: 1015792:efe47074a39d
user:      rillig <rillig%NetBSD.org@localhost>
date:      Sun Nov 01 10:56:08 2020 +0000

description:
make(1): demonstrate parsing bugs in test moderrs.mk

When a malformed variable expression is parsed, the remaining part of
the expression is passed unmodified to the output.  This is unexpected
and wrong.

diffstat:

 usr.bin/make/unit-tests/moderrs.exp |  4 ++--
 usr.bin/make/unit-tests/moderrs.mk  |  9 +++++----
 2 files changed, 7 insertions(+), 6 deletions(-)

diffs (51 lines):

diff -r b0981e866b1d -r efe47074a39d usr.bin/make/unit-tests/moderrs.exp
--- a/usr.bin/make/unit-tests/moderrs.exp       Sun Nov 01 10:53:58 2020 +0000
+++ b/usr.bin/make/unit-tests/moderrs.exp       Sun Nov 01 10:56:08 2020 +0000
@@ -1,12 +1,12 @@
 mod-unknown-direct:
 want: Unknown modifier 'Z'
 make: Unknown modifier 'Z'
-VAR:Z=
+VAR:Z=before--after
 
 mod-unknown-indirect:
 want: Unknown modifier 'Z'
 make: Unknown modifier 'Z'
-VAR:Z=
+VAR:Z=before-inner}-after
 
 unclosed-direct:
 want: Unclosed variable specification (expecting '}') for "VAR" (value "Thevariable") modifier S
diff -r b0981e866b1d -r efe47074a39d usr.bin/make/unit-tests/moderrs.mk
--- a/usr.bin/make/unit-tests/moderrs.mk        Sun Nov 01 10:53:58 2020 +0000
+++ b/usr.bin/make/unit-tests/moderrs.mk        Sun Nov 01 10:56:08 2020 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: moderrs.mk,v 1.22 2020/11/01 10:53:58 rillig Exp $
+# $NetBSD: moderrs.mk,v 1.23 2020/11/01 10:56:08 rillig Exp $
 #
 # various modifier error tests
 
@@ -28,11 +28,11 @@
 
 mod-unknown-direct: print-header print-footer
        @echo 'want: Unknown modifier $'Z$''
-       @echo "VAR:Z=${VAR:Z}"
+       @echo 'VAR:Z=before-${VAR:Z}-after'
 
 mod-unknown-indirect: print-header print-footer
        @echo 'want: Unknown modifier $'Z$''
-       @echo "VAR:${MOD_UNKN}=${VAR:${MOD_UNKN}}"
+       @echo 'VAR:${MOD_UNKN}=before-${VAR:${MOD_UNKN}:inner}-after'
 
 unclosed-direct: print-header print-footer
        @echo 'want: Unclosed variable specification (expecting $'}$') for "VAR" (value "Thevariable") modifier S'
@@ -124,7 +124,8 @@
 # syntactical ambiguity since the :S and :C modifiers are open-ended (see
 # mod-subst-chain).  Luckily the modifier :U does not make sense after :C,
 # therefore this case does not happen in practice.
-# The sub-modifier for the :C modifier would have to be chosen wisely.
+# The sub-modifier for the :S and :C modifiers would have to be chosen
+# wisely, to not create ambiguities while parsing.
 mod-regex-undefined-subexpression: print-header print-footer
        @echo ${FIB:C,1(.*),one\1,}             # all ok
        @echo ${FIB:C,1(.*)|2(.*),(\1)+(\2),:Q} # no match for subexpression



Home | Main Index | Thread Index | Old Index