Module Name:    src
Committed By:   rillig
Date:           Sun Nov  1 10:56:08 UTC 2020

Modified Files:
        src/usr.bin/make/unit-tests: moderrs.exp moderrs.mk

Log Message:
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.


To generate a diff of this commit:
cvs rdiff -u -r1.21 -r1.22 src/usr.bin/make/unit-tests/moderrs.exp
cvs rdiff -u -r1.22 -r1.23 src/usr.bin/make/unit-tests/moderrs.mk

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.bin/make/unit-tests/moderrs.exp
diff -u src/usr.bin/make/unit-tests/moderrs.exp:1.21 src/usr.bin/make/unit-tests/moderrs.exp:1.22
--- src/usr.bin/make/unit-tests/moderrs.exp:1.21	Sun Nov  1 10:53:58 2020
+++ src/usr.bin/make/unit-tests/moderrs.exp	Sun Nov  1 10:56:08 2020
@@ -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

Index: src/usr.bin/make/unit-tests/moderrs.mk
diff -u src/usr.bin/make/unit-tests/moderrs.mk:1.22 src/usr.bin/make/unit-tests/moderrs.mk:1.23
--- src/usr.bin/make/unit-tests/moderrs.mk:1.22	Sun Nov  1 10:53:58 2020
+++ src/usr.bin/make/unit-tests/moderrs.mk	Sun Nov  1 10:56:08 2020
@@ -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 @@ all:	mod-sysv-parse
 
 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 @@ mod-regex-delimiter: print-header print-
 # 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

Reply via email to