Module Name: src Committed By: rillig Date: Sat Apr 29 10:16:24 UTC 2023
Modified Files: src/usr.bin/make/unit-tests: var-scope-local.exp var-scope-local.mk Log Message: tests/make: extend test for target-local variables To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/usr.bin/make/unit-tests/var-scope-local.exp cvs rdiff -u -r1.6 -r1.7 src/usr.bin/make/unit-tests/var-scope-local.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/var-scope-local.exp diff -u src/usr.bin/make/unit-tests/var-scope-local.exp:1.5 src/usr.bin/make/unit-tests/var-scope-local.exp:1.6 --- src/usr.bin/make/unit-tests/var-scope-local.exp:1.5 Fri Apr 28 13:09:48 2023 +++ src/usr.bin/make/unit-tests/var-scope-local.exp Sat Apr 29 10:16:24 2023 @@ -1,5 +1,5 @@ -Global: .ALLTARGETS = all target-rule.ext dir/subdir/target-rule.ext inference-rule.ir-to dir/subdir/inference-rule.ir-to inference-rule.ir-from dir/subdir/inference-rule.ir-from inference-rule-chain.ir-to dir/subdir/inference-rule-chain.ir-to inference-rule-chain.ir-gen-from dir/subdir/inference-rule-chain.ir-gen-from one -Global: .ALLTARGETS = all target-rule.ext dir/subdir/target-rule.ext inference-rule.ir-to dir/subdir/inference-rule.ir-to inference-rule.ir-from dir/subdir/inference-rule.ir-from inference-rule-chain.ir-to dir/subdir/inference-rule-chain.ir-to inference-rule-chain.ir-gen-from dir/subdir/inference-rule-chain.ir-gen-from one two +Global: .ALLTARGETS = all target-rule.ext dir/subdir/target-rule.ext target-rule.ir-gen-from dir/subdir/target-rule-dir.ir-gen-from inference-rule.ir-to dir/subdir/inference-rule.ir-to inference-rule.ir-from dir/subdir/inference-rule.ir-from inference-rule-chain.ir-to dir/subdir/inference-rule-chain.ir-to inference-rule-chain.ir-gen-from dir/subdir/inference-rule-chain.ir-gen-from one +Global: .ALLTARGETS = all target-rule.ext dir/subdir/target-rule.ext target-rule.ir-gen-from dir/subdir/target-rule-dir.ir-gen-from inference-rule.ir-to dir/subdir/inference-rule.ir-to inference-rule.ir-from dir/subdir/inference-rule.ir-from inference-rule-chain.ir-to dir/subdir/inference-rule-chain.ir-to inference-rule-chain.ir-gen-from dir/subdir/inference-rule-chain.ir-gen-from one two Var_Parse: ${.MAKE.TARGET_LOCAL_VARIABLES} (eval) Var_SetExpand: variable name "" expands to empty string, with value "three" - ignored Var_SetExpand: variable name "" expands to empty string, with value "three" - ignored @@ -17,6 +17,16 @@ dir/subdir/target-rule.ext: % = <undefin dir/subdir/target-rule.ext: ? = <> dir/subdir/target-rule.ext: < = <undefined> dir/subdir/target-rule.ext: * = <dir/subdir/target-rule.ext> +target-rule.ir-gen-from: @ = <target-rule.ir-gen-from> +target-rule.ir-gen-from: % = <undefined> +target-rule.ir-gen-from: ? = <> +target-rule.ir-gen-from: < = <undefined> +target-rule.ir-gen-from: * = <target-rule> +dir/subdir/target-rule-dir.ir-gen-from: @ = <dir/subdir/target-rule-dir.ir-gen-from> +dir/subdir/target-rule-dir.ir-gen-from: % = <undefined> +dir/subdir/target-rule-dir.ir-gen-from: ? = <> +dir/subdir/target-rule-dir.ir-gen-from: < = <undefined> +dir/subdir/target-rule-dir.ir-gen-from: * = <dir/subdir/target-rule-dir> inference-rule.ir-to: @ = <inference-rule.ir-to> inference-rule.ir-to: % = <undefined> inference-rule.ir-to: ? = <inference-rule.ir-from> Index: src/usr.bin/make/unit-tests/var-scope-local.mk diff -u src/usr.bin/make/unit-tests/var-scope-local.mk:1.6 src/usr.bin/make/unit-tests/var-scope-local.mk:1.7 --- src/usr.bin/make/unit-tests/var-scope-local.mk:1.6 Fri Apr 28 13:09:48 2023 +++ src/usr.bin/make/unit-tests/var-scope-local.mk Sat Apr 29 10:16:24 2023 @@ -1,4 +1,4 @@ -# $NetBSD: var-scope-local.mk,v 1.6 2023/04/28 13:09:48 rillig Exp $ +# $NetBSD: var-scope-local.mk,v 1.7 2023/04/29 10:16:24 rillig Exp $ # # Tests for target-local variables, such as ${.TARGET} or $@. These variables # are relatively short-lived as they are created just before making the @@ -13,6 +13,11 @@ .MAIN: all # Target-local variables in a target rule +# +# In target rules, '$*' only strips the extension off the pathname if the +# extension is listed in '.SUFFIXES'. +# +# expect: target-rule.ext: * = <target-rule.ext> all: target-rule.ext dir/subdir/target-rule.ext target-rule.ext dir/subdir/target-rule.ext: .PHONY @echo '$@: @ = <${@:Uundefined}>' @@ -22,6 +27,19 @@ target-rule.ext dir/subdir/target-rule.e @echo '$@: * = <${*:Uundefined}>' .SUFFIXES: .ir-gen-from .ir-from .ir-to + +# In target rules, '$*' strips the extension off the pathname of the target +# if the extension is listed in '.SUFFIXES'. +# +# expect: target-rule.ir-gen-from: * = <target-rule> +all: target-rule.ir-gen-from dir/subdir/target-rule-dir.ir-gen-from +target-rule.ir-gen-from dir/subdir/target-rule-dir.ir-gen-from: + @echo '$@: @ = <${@:Uundefined}>' + @echo '$@: % = <${%:Uundefined}>' + @echo '$@: ? = <${?:Uundefined}>' + @echo '$@: < = <${<:Uundefined}>' + @echo '$@: * = <${*:Uundefined}>' + .ir-from.ir-to: @echo '$@: @ = <${@:Uundefined}>' @echo '$@: % = <${%:Uundefined}>' @@ -45,6 +63,10 @@ all: inference-rule-chain.ir-to dir/subd inference-rule-chain.ir-gen-from: .PHONY dir/subdir/inference-rule-chain.ir-gen-from: .PHONY +# The run-time 'check' directives from above happen after the parse-time +# 'check' directives from below. +# +# expect-reset # Deferred evaluation during parsing #