Module Name: src Committed By: rillig Date: Sat Nov 13 18:37:42 UTC 2021
Modified Files: src/usr.bin/make/unit-tests: var-op-expand.exp var-op-expand.mk Log Message: tests/make: test double indirection in ':=' with undefined variable Reported by Simon J Gerraty via private mail. This edge case has been handled in essentially the same way since at least 2000-05-30, probably several years earlier as well. The test file is: ---- snip ---- .undef LATER .undef later INDIRECT:= ${LATER:S,value,replaced,} indirect:= ${INDIRECT:C,S,s,} # expect+1: Unknown modifier "s,value,replaced," .if ${indirect} != "" . error .else . warning XXX Neither branch should be taken. .endif LATER= uppercase-value later= lowercase-value # expect+1: Unknown modifier "s,value,replaced," .if ${indirect} != "uppercase-replaced" . warning XXX Neither branch should be taken. .else . error .endif all: @:; ---- snap ---- The output from 'make -r -f later.mk' is: make-2000.05.30.02.32.21 | make: Unknown modifier 's' | | "later.mk", line 9: Need an operator | make: Unknown modifier 's' | | "later.mk", line 15: Need an operator | Fatal errors encountered -- cannot continue | exit status 1 make-2000.12.30.16.38.22 The pathnames in the error message gets absolute: make-2001.01.23.02.48.05 | make: Unknown modifier 's' | | ".../later.mk", line 9: Need an operator | make: Unknown modifier 's' | | ".../later.mk", line 15: Need an operator | Fatal errors encountered -- cannot continue | exit status 1 make-2001.01.23.02.48.05 All error messages get 'make:' as a common prefix: make-2001.02.23.21.11.38 | make: Unknown modifier 's' | | make: ".../later.mk" line 9: Need an operator | make: Unknown modifier 's' | | make: ".../later.mk" line 15: Need an operator | make: Fatal errors encountered -- cannot continue | exit status 1 make-2001.05.29.17.37.52 The 'stopped in' gets added: make-2001.06.12.23.36.18 | make: Unknown modifier 's' | | make: ".../later.mk" line 9: Need an operator | make: Unknown modifier 's' | | make: ".../later.mk" line 15: Need an operator | make: Fatal errors encountered -- cannot continue | | make: stopped in ... | exit status 1 make-2002.02.21.22.21.34 The empty lines between the error messages get removed. make-2002.03.21.11.42.21 | make: Unknown modifier 's' | make: ".../later.mk" line 9: Need an operator | make: Unknown modifier 's' | make: ".../later.mk" line 15: Need an operator | make: Fatal errors encountered -- cannot continue | | make: stopped in ... | exit status 1 make-2009.10.15.02.27.44 The error message for unknown directives gets more helpful: make-2009.11.19.06.48.37 | make: Unknown modifier 's' | make: ".../later.mk" line 9: Unknown directive | make: Unknown modifier 's' | make: ".../later.mk" line 15: Unknown directive | make: Fatal errors encountered -- cannot continue | | make: stopped in ... | exit status 1 make-2010.02.22.19.20.33 The directives '.error', '.warning' and '.info' get added: make-2010.04.29.23.12.21 | make: Unknown modifier 's' | make: ".../later.mk" line 9: warning: XXX Neither branch should be taken. | make: Unknown modifier 's' | make: ".../later.mk" line 15: warning: XXX Neither branch should be taken. | exit status 0 make-2020.12.20.19.37.23 The error message about an unknown variable modifier gets line number information: make-2020.12.20.19.47.34 | make: ".../later.mk" line 6: Unknown modifier 's' | make: ".../later.mk" line 9: warning: XXX Neither branch should be taken. | make: ".../later.mk" line 14: Unknown modifier 's' | make: ".../later.mk" line 15: warning: XXX Neither branch should be taken. | make: Fatal errors encountered -- cannot continue | make: stopped in ... | exit status 1 make-2021.02.23.15.07.58 The error message about an unknown variable modifier gets more context than only a single letter: make-2021.02.23.15.19.41 | make: ".../later.mk" line 6: Unknown modifier "s,value,replaced," | make: ".../later.mk" line 9: warning: XXX Neither branch should be taken. | make: ".../later.mk" line 14: Unknown modifier "s,value,replaced," | make: ".../later.mk" line 15: warning: XXX Neither branch should be taken. | make: Fatal errors encountered -- cannot continue | make: stopped in ... | exit status 1 To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/usr.bin/make/unit-tests/var-op-expand.exp cvs rdiff -u -r1.11 -r1.12 src/usr.bin/make/unit-tests/var-op-expand.mk Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.