make: omit unnecessary details from -dv debug log When an expression is based on a defined variable, it does not matter whether the evaluation mode is "eval" or "eval-defined", therefore omit these details to reduce confusion.diff -r1.909 -r1.910 src/usr.bin/make/var.c
(rillig)
--- src/usr.bin/make/var.c 2021/04/05 13:14:54 1.909
+++ src/usr.bin/make/var.c 2021/04/05 13:27:30 1.910
@@ -1,14 +1,14 @@ | @@ -1,14 +1,14 @@ | |||
1 | /* $NetBSD: var.c,v 1.909 2021/04/05 13:14:54 rillig Exp $ */ | 1 | /* $NetBSD: var.c,v 1.910 2021/04/05 13:27:30 rillig Exp $ */ | |
2 | 2 | |||
3 | /* | 3 | /* | |
4 | * Copyright (c) 1988, 1989, 1990, 1993 | 4 | * Copyright (c) 1988, 1989, 1990, 1993 | |
5 | * The Regents of the University of California. All rights reserved. | 5 | * The Regents of the University of California. All rights reserved. | |
6 | * | 6 | * | |
7 | * This code is derived from software contributed to Berkeley by | 7 | * This code is derived from software contributed to Berkeley by | |
8 | * Adam de Boor. | 8 | * Adam de Boor. | |
9 | * | 9 | * | |
10 | * Redistribution and use in source and binary forms, with or without | 10 | * Redistribution and use in source and binary forms, with or without | |
11 | * modification, are permitted provided that the following conditions | 11 | * modification, are permitted provided that the following conditions | |
12 | * are met: | 12 | * are met: | |
13 | * 1. Redistributions of source code must retain the above copyright | 13 | * 1. Redistributions of source code must retain the above copyright | |
14 | * notice, this list of conditions and the following disclaimer. | 14 | * notice, this list of conditions and the following disclaimer. | |
@@ -130,27 +130,27 @@ | @@ -130,27 +130,27 @@ | |||
130 | #include <regex.h> | 130 | #include <regex.h> | |
131 | #endif | 131 | #endif | |
132 | #include <errno.h> | 132 | #include <errno.h> | |
133 | #include <inttypes.h> | 133 | #include <inttypes.h> | |
134 | #include <limits.h> | 134 | #include <limits.h> | |
135 | #include <time.h> | 135 | #include <time.h> | |
136 | 136 | |||
137 | #include "make.h" | 137 | #include "make.h" | |
138 | #include "dir.h" | 138 | #include "dir.h" | |
139 | #include "job.h" | 139 | #include "job.h" | |
140 | #include "metachar.h" | 140 | #include "metachar.h" | |
141 | 141 | |||
142 | /* "@(#)var.c 8.3 (Berkeley) 3/19/94" */ | 142 | /* "@(#)var.c 8.3 (Berkeley) 3/19/94" */ | |
143 | MAKE_RCSID("$NetBSD: var.c,v 1.909 2021/04/05 13:14:54 rillig Exp $"); | 143 | MAKE_RCSID("$NetBSD: var.c,v 1.910 2021/04/05 13:27:30 rillig Exp $"); | |
144 | 144 | |||
145 | /* | 145 | /* | |
146 | * Variables are defined using one of the VAR=value assignments. Their | 146 | * Variables are defined using one of the VAR=value assignments. Their | |
147 | * value can be queried by expressions such as $V, ${VAR}, or with modifiers | 147 | * value can be queried by expressions such as $V, ${VAR}, or with modifiers | |
148 | * such as ${VAR:S,from,to,g:Q}. | 148 | * such as ${VAR:S,from,to,g:Q}. | |
149 | * | 149 | * | |
150 | * There are 3 kinds of variables: scope variables, environment variables, | 150 | * There are 3 kinds of variables: scope variables, environment variables, | |
151 | * undefined variables. | 151 | * undefined variables. | |
152 | * | 152 | * | |
153 | * Scope variables are stored in a GNode.scope. The only way to undefine | 153 | * Scope variables are stored in a GNode.scope. The only way to undefine | |
154 | * a scope variable is using the .undef directive. In particular, it must | 154 | * a scope variable is using the .undef directive. In particular, it must | |
155 | * not be possible to undefine a variable during the evaluation of an | 155 | * not be possible to undefine a variable during the evaluation of an | |
156 | * expression, or Var.name might point nowhere. | 156 | * expression, or Var.name might point nowhere. | |
@@ -3662,31 +3662,39 @@ LogBeforeApply(const ModChain *ch, const | @@ -3662,31 +3662,39 @@ LogBeforeApply(const ModChain *ch, const | |||
3662 | bool is_single_char = mod[0] != '\0' && IsDelimiter(mod[1], ch); | 3662 | bool is_single_char = mod[0] != '\0' && IsDelimiter(mod[1], ch); | |
3663 | 3663 | |||
3664 | /* | 3664 | /* | |
3665 | * At this point, only the first character of the modifier can | 3665 | * At this point, only the first character of the modifier can | |
3666 | * be used since the end of the modifier is not yet known. | 3666 | * be used since the end of the modifier is not yet known. | |
3667 | */ | 3667 | */ | |
3668 | 3668 | |||
3669 | if (!Expr_ShouldEval(expr)) { | 3669 | if (!Expr_ShouldEval(expr)) { | |
3670 | debug_printf("Parsing modifier ${%s:%c%s}\n", | 3670 | debug_printf("Parsing modifier ${%s:%c%s}\n", | |
3671 | expr->name, mod[0], is_single_char ? "" : "..."); | 3671 | expr->name, mod[0], is_single_char ? "" : "..."); | |
3672 | return; | 3672 | return; | |
3673 | } | 3673 | } | |
3674 | 3674 | |||
3675 | if ((expr->emode == VARE_WANTRES || expr->emode == VARE_UNDEFERR) && | |||
3676 | expr->defined == DEF_REGULAR) { | |||
3677 | debug_printf( | |||
3678 | "Evaluating modifier ${%s:%c%s} on value \"%s\"\n", | |||
3679 | expr->name, mod[0], is_single_char ? "" : "...", | |||
3680 | expr->value.str); | |||
3681 | return; | |||
3682 | } | |||
3683 | ||||
3675 | debug_printf( | 3684 | debug_printf( | |
3676 | "Evaluating modifier ${%s:%c%s} on value \"%s\" (%s, %s)\n", | 3685 | "Evaluating modifier ${%s:%c%s} on value \"%s\" (%s, %s)\n", | |
3677 | expr->name, mod[0], is_single_char ? "" : "...", expr->value.str, | 3686 | expr->name, mod[0], is_single_char ? "" : "...", expr->value.str, | |
3678 | VarEvalMode_Name[expr->emode], | 3687 | VarEvalMode_Name[expr->emode], ExprDefined_Name[expr->defined]); | |
3679 | ExprDefined_Name[expr->defined]); | |||
3680 | } | 3688 | } | |
3681 | 3689 | |||
3682 | static void | 3690 | static void | |
3683 | LogAfterApply(const ModChain *ch, const char *p, const char *mod) | 3691 | LogAfterApply(const ModChain *ch, const char *p, const char *mod) | |
3684 | { | 3692 | { | |
3685 | const Expr *expr = ch->expr; | 3693 | const Expr *expr = ch->expr; | |
3686 | const char *value = expr->value.str; | 3694 | const char *value = expr->value.str; | |
3687 | const char *quot = value == var_Error ? "" : "\""; | 3695 | const char *quot = value == var_Error ? "" : "\""; | |
3688 | 3696 | |||
3689 | debug_printf("Result of ${%s:%.*s} is %s%s%s (%s, %s)\n", | 3697 | debug_printf("Result of ${%s:%.*s} is %s%s%s (%s, %s)\n", | |
3690 | expr->name, (int)(p - mod), mod, | 3698 | expr->name, (int)(p - mod), mod, | |
3691 | quot, value == var_Error ? "error" : value, quot, | 3699 | quot, value == var_Error ? "error" : value, quot, | |
3692 | VarEvalMode_Name[expr->emode], | 3700 | VarEvalMode_Name[expr->emode], |
--- src/usr.bin/make/unit-tests/directive-export-impl.exp 2021/04/05 13:14:55 1.10
+++ src/usr.bin/make/unit-tests/directive-export-impl.exp 2021/04/05 13:27:30 1.11
@@ -1,56 +1,56 @@ | @@ -1,56 +1,56 @@ | |||
1 | ParseReadLine (21): 'UT_VAR= <${REF}>' | 1 | ParseReadLine (21): 'UT_VAR= <${REF}>' | |
2 | Global:UT_VAR = <${REF}> | 2 | Global:UT_VAR = <${REF}> | |
3 | ParseReadLine (28): '.export UT_VAR' | 3 | ParseReadLine (28): '.export UT_VAR' | |
4 | Global:.MAKE.EXPORTED = UT_VAR | 4 | Global:.MAKE.EXPORTED = UT_VAR | |
5 | ParseReadLine (32): ': ${UT_VAR:N*}' | 5 | ParseReadLine (32): ': ${UT_VAR:N*}' | |
6 | Var_Parse: ${UT_VAR:N*} (eval-defined) | 6 | Var_Parse: ${UT_VAR:N*} (eval-defined) | |
7 | Var_Parse: ${REF}> (eval-defined) | 7 | Var_Parse: ${REF}> (eval-defined) | |
8 | Evaluating modifier ${UT_VAR:N...} on value "<>" (eval-defined, regular) | 8 | Evaluating modifier ${UT_VAR:N...} on value "<>" | |
9 | Pattern for ':N' is "*" | 9 | Pattern for ':N' is "*" | |
10 | ModifyWords: split "<>" into 1 words | 10 | ModifyWords: split "<>" into 1 words | |
11 | Result of ${UT_VAR:N*} is "" (eval-defined, regular) | 11 | Result of ${UT_VAR:N*} is "" (eval-defined, regular) | |
12 | ParseDependency(: ) | 12 | ParseDependency(: ) | |
13 | CondParser_Eval: ${:!echo "\$UT_VAR"!} != "<>" | 13 | CondParser_Eval: ${:!echo "\$UT_VAR"!} != "<>" | |
14 | Var_Parse: ${:!echo "\$UT_VAR"!} != "<>" (eval-defined) | 14 | Var_Parse: ${:!echo "\$UT_VAR"!} != "<>" (eval-defined) | |
15 | Evaluating modifier ${:!...} on value "" (eval-defined, undefined) | 15 | Evaluating modifier ${:!...} on value "" (eval-defined, undefined) | |
16 | Modifier part: "echo "$UT_VAR"" | 16 | Modifier part: "echo "$UT_VAR"" | |
17 | Var_Parse: ${.MAKE.EXPORTED:O:u} (eval) | 17 | Var_Parse: ${.MAKE.EXPORTED:O:u} (eval) | |
18 | Evaluating modifier ${.MAKE.EXPORTED:O} on value "UT_VAR" (eval, regular) | 18 | Evaluating modifier ${.MAKE.EXPORTED:O} on value "UT_VAR" | |
19 | Result of ${.MAKE.EXPORTED:O} is "UT_VAR" (eval, regular) | 19 | Result of ${.MAKE.EXPORTED:O} is "UT_VAR" (eval, regular) | |
20 | Evaluating modifier ${.MAKE.EXPORTED:u} on value "UT_VAR" (eval, regular) | 20 | Evaluating modifier ${.MAKE.EXPORTED:u} on value "UT_VAR" | |
21 | Result of ${.MAKE.EXPORTED:u} is "UT_VAR" (eval, regular) | 21 | Result of ${.MAKE.EXPORTED:u} is "UT_VAR" (eval, regular) | |
22 | Var_Parse: ${UT_VAR} (eval) | 22 | Var_Parse: ${UT_VAR} (eval) | |
23 | Var_Parse: ${REF}> (eval) | 23 | Var_Parse: ${REF}> (eval) | |
24 | Result of ${:!echo "\$UT_VAR"!} is "<>" (eval-defined, defined) | 24 | Result of ${:!echo "\$UT_VAR"!} is "<>" (eval-defined, defined) | |
25 | lhs = "<>", rhs = "<>", op = != | 25 | lhs = "<>", rhs = "<>", op = != | |
26 | ParseReadLine (50): ': ${UT_VAR:N*}' | 26 | ParseReadLine (50): ': ${UT_VAR:N*}' | |
27 | Var_Parse: ${UT_VAR:N*} (eval-defined) | 27 | Var_Parse: ${UT_VAR:N*} (eval-defined) | |
28 | Var_Parse: ${REF}> (eval-defined) | 28 | Var_Parse: ${REF}> (eval-defined) | |
29 | Evaluating modifier ${UT_VAR:N...} on value "<>" (eval-defined, regular) | 29 | Evaluating modifier ${UT_VAR:N...} on value "<>" | |
30 | Pattern for ':N' is "*" | 30 | Pattern for ':N' is "*" | |
31 | ModifyWords: split "<>" into 1 words | 31 | ModifyWords: split "<>" into 1 words | |
32 | Result of ${UT_VAR:N*} is "" (eval-defined, regular) | 32 | Result of ${UT_VAR:N*} is "" (eval-defined, regular) | |
33 | ParseDependency(: ) | 33 | ParseDependency(: ) | |
34 | ParseReadLine (54): 'REF= defined' | 34 | ParseReadLine (54): 'REF= defined' | |
35 | Global:REF = defined | 35 | Global:REF = defined | |
36 | CondParser_Eval: ${:!echo "\$UT_VAR"!} != "<defined>" | 36 | CondParser_Eval: ${:!echo "\$UT_VAR"!} != "<defined>" | |
37 | Var_Parse: ${:!echo "\$UT_VAR"!} != "<defined>" (eval-defined) | 37 | Var_Parse: ${:!echo "\$UT_VAR"!} != "<defined>" (eval-defined) | |
38 | Evaluating modifier ${:!...} on value "" (eval-defined, undefined) | 38 | Evaluating modifier ${:!...} on value "" (eval-defined, undefined) | |
39 | Modifier part: "echo "$UT_VAR"" | 39 | Modifier part: "echo "$UT_VAR"" | |
40 | Var_Parse: ${.MAKE.EXPORTED:O:u} (eval) | 40 | Var_Parse: ${.MAKE.EXPORTED:O:u} (eval) | |
41 | Evaluating modifier ${.MAKE.EXPORTED:O} on value "UT_VAR" (eval, regular) | 41 | Evaluating modifier ${.MAKE.EXPORTED:O} on value "UT_VAR" | |
42 | Result of ${.MAKE.EXPORTED:O} is "UT_VAR" (eval, regular) | 42 | Result of ${.MAKE.EXPORTED:O} is "UT_VAR" (eval, regular) | |
43 | Evaluating modifier ${.MAKE.EXPORTED:u} on value "UT_VAR" (eval, regular) | 43 | Evaluating modifier ${.MAKE.EXPORTED:u} on value "UT_VAR" | |
44 | Result of ${.MAKE.EXPORTED:u} is "UT_VAR" (eval, regular) | 44 | Result of ${.MAKE.EXPORTED:u} is "UT_VAR" (eval, regular) | |
45 | Var_Parse: ${UT_VAR} (eval) | 45 | Var_Parse: ${UT_VAR} (eval) | |
46 | Var_Parse: ${REF}> (eval) | 46 | Var_Parse: ${REF}> (eval) | |
47 | Result of ${:!echo "\$UT_VAR"!} is "<defined>" (eval-defined, defined) | 47 | Result of ${:!echo "\$UT_VAR"!} is "<defined>" (eval-defined, defined) | |
48 | lhs = "<defined>", rhs = "<defined>", op = != | 48 | lhs = "<defined>", rhs = "<defined>", op = != | |
49 | ParseReadLine (62): 'all:' | 49 | ParseReadLine (62): 'all:' | |
50 | ParseDependency(all:) | 50 | ParseDependency(all:) | |
51 | Global:.ALLTARGETS = all | 51 | Global:.ALLTARGETS = all | |
52 | ParseReadLine (63): '.MAKEFLAGS: -d0' | 52 | ParseReadLine (63): '.MAKEFLAGS: -d0' | |
53 | ParseDependency(.MAKEFLAGS: -d0) | 53 | ParseDependency(.MAKEFLAGS: -d0) | |
54 | Global:.MAKEFLAGS = -r -k -d cpv -d | 54 | Global:.MAKEFLAGS = -r -k -d cpv -d | |
55 | Global:.MAKEFLAGS = -r -k -d cpv -d 0 | 55 | Global:.MAKEFLAGS = -r -k -d cpv -d 0 | |
56 | exit status 0 | 56 | exit status 0 |
--- src/usr.bin/make/unit-tests/directive-unexport-env.exp 2021/04/05 13:14:55 1.8
+++ src/usr.bin/make/unit-tests/directive-unexport-env.exp 2021/04/05 13:27:30 1.9
@@ -1,18 +1,18 @@ | @@ -1,18 +1,18 @@ | |||
1 | make: "directive-unexport-env.mk" line 13: Unknown directive "unexport-en" | 1 | make: "directive-unexport-env.mk" line 13: Unknown directive "unexport-en" | |
2 | make: "directive-unexport-env.mk" line 15: Unknown directive "unexport-environment" | 2 | make: "directive-unexport-env.mk" line 15: Unknown directive "unexport-environment" | |
3 | Global:UT_EXPORTED = value | 3 | Global:UT_EXPORTED = value | |
4 | Global:UT_UNEXPORTED = value | 4 | Global:UT_UNEXPORTED = value | |
5 | Global:.MAKE.EXPORTED = UT_EXPORTED | 5 | Global:.MAKE.EXPORTED = UT_EXPORTED | |
6 | make: "directive-unexport-env.mk" line 21: The directive .unexport-env does not take arguments | 6 | make: "directive-unexport-env.mk" line 21: The directive .unexport-env does not take arguments | |
7 | Var_Parse: ${.MAKE.EXPORTED:O:u} (eval) | 7 | Var_Parse: ${.MAKE.EXPORTED:O:u} (eval) | |
8 | Evaluating modifier ${.MAKE.EXPORTED:O} on value "UT_EXPORTED" (eval, regular) | 8 | Evaluating modifier ${.MAKE.EXPORTED:O} on value "UT_EXPORTED" | |
9 | Result of ${.MAKE.EXPORTED:O} is "UT_EXPORTED" (eval, regular) | 9 | Result of ${.MAKE.EXPORTED:O} is "UT_EXPORTED" (eval, regular) | |
10 | Evaluating modifier ${.MAKE.EXPORTED:u} on value "UT_EXPORTED" (eval, regular) | 10 | Evaluating modifier ${.MAKE.EXPORTED:u} on value "UT_EXPORTED" | |
11 | Result of ${.MAKE.EXPORTED:u} is "UT_EXPORTED" (eval, regular) | 11 | Result of ${.MAKE.EXPORTED:u} is "UT_EXPORTED" (eval, regular) | |
12 | Unexporting "UT_EXPORTED" | 12 | Unexporting "UT_EXPORTED" | |
13 | Global:delete .MAKE.EXPORTED | 13 | Global:delete .MAKE.EXPORTED | |
14 | Global:.MAKEFLAGS = -r -k -d v -d | 14 | Global:.MAKEFLAGS = -r -k -d v -d | |
15 | Global:.MAKEFLAGS = -r -k -d v -d 0 | 15 | Global:.MAKEFLAGS = -r -k -d v -d 0 | |
16 | make: Fatal errors encountered -- cannot continue | 16 | make: Fatal errors encountered -- cannot continue | |
17 | make: stopped in unit-tests | 17 | make: stopped in unit-tests | |
18 | exit status 1 | 18 | exit status 1 |
--- src/usr.bin/make/unit-tests/vardebug.exp 2021/04/05 13:14:55 1.21
+++ src/usr.bin/make/unit-tests/vardebug.exp 2021/04/05 13:27:30 1.22
@@ -8,50 +8,50 @@ Global:delete VAR (not found) | @@ -8,50 +8,50 @@ Global:delete VAR (not found) | |||
8 | Var_Parse: ${:U} (eval) | 8 | Var_Parse: ${:U} (eval) | |
9 | Evaluating modifier ${:U} on value "" (eval, undefined) | 9 | Evaluating modifier ${:U} on value "" (eval, undefined) | |
10 | Result of ${:U} is "" (eval, defined) | 10 | Result of ${:U} is "" (eval, defined) | |
11 | Var_Set("${:U}", "empty name", ...) name expands to empty string - ignored | 11 | Var_Set("${:U}", "empty name", ...) name expands to empty string - ignored | |
12 | Var_Parse: ${:U} (eval) | 12 | Var_Parse: ${:U} (eval) | |
13 | Evaluating modifier ${:U} on value "" (eval, undefined) | 13 | Evaluating modifier ${:U} on value "" (eval, undefined) | |
14 | Result of ${:U} is "" (eval, defined) | 14 | Result of ${:U} is "" (eval, defined) | |
15 | Var_Append("${:U}", "empty name", ...) name expands to empty string - ignored | 15 | Var_Append("${:U}", "empty name", ...) name expands to empty string - ignored | |
16 | Global:FROM_CMDLINE = overwritten ignored! | 16 | Global:FROM_CMDLINE = overwritten ignored! | |
17 | Global:VAR = 1 | 17 | Global:VAR = 1 | |
18 | Global:VAR = 1 2 | 18 | Global:VAR = 1 2 | |
19 | Global:VAR = 1 2 3 | 19 | Global:VAR = 1 2 3 | |
20 | Var_Parse: ${VAR:M[2]} (eval-defined) | 20 | Var_Parse: ${VAR:M[2]} (eval-defined) | |
21 | Evaluating modifier ${VAR:M...} on value "1 2 3" (eval-defined, regular) | 21 | Evaluating modifier ${VAR:M...} on value "1 2 3" | |
22 | Pattern for ':M' is "[2]" | 22 | Pattern for ':M' is "[2]" | |
23 | ModifyWords: split "1 2 3" into 3 words | 23 | ModifyWords: split "1 2 3" into 3 words | |
24 | Result of ${VAR:M[2]} is "2" (eval-defined, regular) | 24 | Result of ${VAR:M[2]} is "2" (eval-defined, regular) | |
25 | Var_Parse: ${VAR:N[2]} (eval-defined) | 25 | Var_Parse: ${VAR:N[2]} (eval-defined) | |
26 | Evaluating modifier ${VAR:N...} on value "1 2 3" (eval-defined, regular) | 26 | Evaluating modifier ${VAR:N...} on value "1 2 3" | |
27 | Pattern for ':N' is "[2]" | 27 | Pattern for ':N' is "[2]" | |
28 | ModifyWords: split "1 2 3" into 3 words | 28 | ModifyWords: split "1 2 3" into 3 words | |
29 | Result of ${VAR:N[2]} is "1 3" (eval-defined, regular) | 29 | Result of ${VAR:N[2]} is "1 3" (eval-defined, regular) | |
30 | Var_Parse: ${VAR:S,2,two,} (eval-defined) | 30 | Var_Parse: ${VAR:S,2,two,} (eval-defined) | |
31 | Evaluating modifier ${VAR:S...} on value "1 2 3" (eval-defined, regular) | 31 | Evaluating modifier ${VAR:S...} on value "1 2 3" | |
32 | Modifier part: "2" | 32 | Modifier part: "2" | |
33 | Modifier part: "two" | 33 | Modifier part: "two" | |
34 | ModifyWords: split "1 2 3" into 3 words | 34 | ModifyWords: split "1 2 3" into 3 words | |
35 | Result of ${VAR:S,2,two,} is "1 two 3" (eval-defined, regular) | 35 | Result of ${VAR:S,2,two,} is "1 two 3" (eval-defined, regular) | |
36 | Var_Parse: ${VAR:Q} (eval-defined) | 36 | Var_Parse: ${VAR:Q} (eval-defined) | |
37 | Evaluating modifier ${VAR:Q} on value "1 2 3" (eval-defined, regular) | 37 | Evaluating modifier ${VAR:Q} on value "1 2 3" | |
38 | Result of ${VAR:Q} is "1\ 2\ 3" (eval-defined, regular) | 38 | Result of ${VAR:Q} is "1\ 2\ 3" (eval-defined, regular) | |
39 | Var_Parse: ${VAR:tu:tl:Q} (eval-defined) | 39 | Var_Parse: ${VAR:tu:tl:Q} (eval-defined) | |
40 | Evaluating modifier ${VAR:t...} on value "1 2 3" (eval-defined, regular) | 40 | Evaluating modifier ${VAR:t...} on value "1 2 3" | |
41 | Result of ${VAR:tu} is "1 2 3" (eval-defined, regular) | 41 | Result of ${VAR:tu} is "1 2 3" (eval-defined, regular) | |
42 | Evaluating modifier ${VAR:t...} on value "1 2 3" (eval-defined, regular) | 42 | Evaluating modifier ${VAR:t...} on value "1 2 3" | |
43 | Result of ${VAR:tl} is "1 2 3" (eval-defined, regular) | 43 | Result of ${VAR:tl} is "1 2 3" (eval-defined, regular) | |
44 | Evaluating modifier ${VAR:Q} on value "1 2 3" (eval-defined, regular) | 44 | Evaluating modifier ${VAR:Q} on value "1 2 3" | |
45 | Result of ${VAR:Q} is "1\ 2\ 3" (eval-defined, regular) | 45 | Result of ${VAR:Q} is "1\ 2\ 3" (eval-defined, regular) | |
46 | Var_Parse: ${:Uvalue:${:UM*e}:Mvalu[e]} (eval-defined) | 46 | Var_Parse: ${:Uvalue:${:UM*e}:Mvalu[e]} (eval-defined) | |
47 | Evaluating modifier ${:U...} on value "" (eval-defined, undefined) | 47 | Evaluating modifier ${:U...} on value "" (eval-defined, undefined) | |
48 | Result of ${:Uvalue} is "value" (eval-defined, defined) | 48 | Result of ${:Uvalue} is "value" (eval-defined, defined) | |
49 | Var_Parse: ${:UM*e}:Mvalu[e]} (eval-defined) | 49 | Var_Parse: ${:UM*e}:Mvalu[e]} (eval-defined) | |
50 | Evaluating modifier ${:U...} on value "" (eval-defined, undefined) | 50 | Evaluating modifier ${:U...} on value "" (eval-defined, undefined) | |
51 | Result of ${:UM*e} is "M*e" (eval-defined, defined) | 51 | Result of ${:UM*e} is "M*e" (eval-defined, defined) | |
52 | Indirect modifier "M*e" from "${:UM*e}" | 52 | Indirect modifier "M*e" from "${:UM*e}" | |
53 | Evaluating modifier ${:M...} on value "value" (eval-defined, defined) | 53 | Evaluating modifier ${:M...} on value "value" (eval-defined, defined) | |
54 | Pattern for ':M' is "*e" | 54 | Pattern for ':M' is "*e" | |
55 | ModifyWords: split "value" into 1 words | 55 | ModifyWords: split "value" into 1 words | |
56 | Result of ${:M*e} is "value" (eval-defined, defined) | 56 | Result of ${:M*e} is "value" (eval-defined, defined) | |
57 | Evaluating modifier ${:M...} on value "value" (eval-defined, defined) | 57 | Evaluating modifier ${:M...} on value "value" (eval-defined, defined) |
--- src/usr.bin/make/unit-tests/varmod-assign.exp 2021/04/05 13:14:55 1.13
+++ src/usr.bin/make/unit-tests/varmod-assign.exp 2021/04/05 13:27:30 1.14
@@ -1,20 +1,20 @@ | @@ -1,20 +1,20 @@ | |||
1 | Global:param = twice | 1 | Global:param = twice | |
2 | Global:VARNAME = VAR.$${param} | 2 | Global:VARNAME = VAR.$${param} | |
3 | Var_Parse: ${VARNAME} (eval) | 3 | Var_Parse: ${VARNAME} (eval) | |
4 | Global:VAR.${param} = initial-value | 4 | Global:VAR.${param} = initial-value | |
5 | Var_Parse: ${${VARNAME}::=assigned-value} (eval-defined) | 5 | Var_Parse: ${${VARNAME}::=assigned-value} (eval-defined) | |
6 | Var_Parse: ${VARNAME}::=assigned-value} (eval-defined) | 6 | Var_Parse: ${VARNAME}::=assigned-value} (eval-defined) | |
7 | Evaluating modifier ${VAR.${param}::...} on value "initial-value" (eval-defined, regular) | 7 | Evaluating modifier ${VAR.${param}::...} on value "initial-value" | |
8 | Modifier part: "assigned-value" | 8 | Modifier part: "assigned-value" | |
9 | Global:VAR.${param} = assigned-value | 9 | Global:VAR.${param} = assigned-value | |
10 | Result of ${VAR.${param}::=assigned-value} is "" (eval-defined, regular) | 10 | Result of ${VAR.${param}::=assigned-value} is "" (eval-defined, regular) | |
11 | Var_Parse: ${${VARNAME}} != "assigned-value" (eval-defined) | 11 | Var_Parse: ${${VARNAME}} != "assigned-value" (eval-defined) | |
12 | Var_Parse: ${VARNAME}} != "assigned-value" (eval-defined) | 12 | Var_Parse: ${VARNAME}} != "assigned-value" (eval-defined) | |
13 | Global:.MAKEFLAGS = -r -k -d v -d | 13 | Global:.MAKEFLAGS = -r -k -d v -d | |
14 | Global:.MAKEFLAGS = -r -k -d v -d 0 | 14 | Global:.MAKEFLAGS = -r -k -d v -d 0 | |
15 | mod-assign: first=1. | 15 | mod-assign: first=1. | |
16 | mod-assign: last=3. | 16 | mod-assign: last=3. | |
17 | mod-assign: appended=1 2 3. | 17 | mod-assign: appended=1 2 3. | |
18 | 1 | 18 | 1 | |
19 | 2 | 19 | 2 | |
20 | 3 | 20 | 3 |
--- src/usr.bin/make/unit-tests/varmod-match-escape.exp 2021/04/05 13:14:55 1.11
+++ src/usr.bin/make/unit-tests/varmod-match-escape.exp 2021/04/05 13:27:30 1.12
@@ -1,44 +1,44 @@ | @@ -1,44 +1,44 @@ | |||
1 | Global:SPECIALS = \: : \\ * \* | 1 | Global:SPECIALS = \: : \\ * \* | |
2 | CondParser_Eval: ${SPECIALS:M${:U}\:} != ${SPECIALS:M\:${:U}} | 2 | CondParser_Eval: ${SPECIALS:M${:U}\:} != ${SPECIALS:M\:${:U}} | |
3 | Var_Parse: ${SPECIALS:M${:U}\:} != ${SPECIALS:M\:${:U}} (eval-defined) | 3 | Var_Parse: ${SPECIALS:M${:U}\:} != ${SPECIALS:M\:${:U}} (eval-defined) | |
4 | Evaluating modifier ${SPECIALS:M...} on value "\: : \\ * \*" (eval-defined, regular) | 4 | Evaluating modifier ${SPECIALS:M...} on value "\: : \\ * \*" | |
5 | Var_Parse: ${:U}\: (eval-defined) | 5 | Var_Parse: ${:U}\: (eval-defined) | |
6 | Evaluating modifier ${:U} on value "" (eval-defined, undefined) | 6 | Evaluating modifier ${:U} on value "" (eval-defined, undefined) | |
7 | Result of ${:U} is "" (eval-defined, defined) | 7 | Result of ${:U} is "" (eval-defined, defined) | |
8 | Pattern for ':M' is "\:" | 8 | Pattern for ':M' is "\:" | |
9 | ModifyWords: split "\: : \\ * \*" into 5 words | 9 | ModifyWords: split "\: : \\ * \*" into 5 words | |
10 | Result of ${SPECIALS:M${:U}\:} is ":" (eval-defined, regular) | 10 | Result of ${SPECIALS:M${:U}\:} is ":" (eval-defined, regular) | |
11 | Var_Parse: ${SPECIALS:M\:${:U}} (eval-defined) | 11 | Var_Parse: ${SPECIALS:M\:${:U}} (eval-defined) | |
12 | Evaluating modifier ${SPECIALS:M...} on value "\: : \\ * \*" (eval-defined, regular) | 12 | Evaluating modifier ${SPECIALS:M...} on value "\: : \\ * \*" | |
13 | Var_Parse: ${:U} (eval-defined) | 13 | Var_Parse: ${:U} (eval-defined) | |
14 | Evaluating modifier ${:U} on value "" (eval-defined, undefined) | 14 | Evaluating modifier ${:U} on value "" (eval-defined, undefined) | |
15 | Result of ${:U} is "" (eval-defined, defined) | 15 | Result of ${:U} is "" (eval-defined, defined) | |
16 | Pattern for ':M' is ":" | 16 | Pattern for ':M' is ":" | |
17 | ModifyWords: split "\: : \\ * \*" into 5 words | 17 | ModifyWords: split "\: : \\ * \*" into 5 words | |
18 | Result of ${SPECIALS:M\:${:U}} is ":" (eval-defined, regular) | 18 | Result of ${SPECIALS:M\:${:U}} is ":" (eval-defined, regular) | |
19 | lhs = ":", rhs = ":", op = != | 19 | lhs = ":", rhs = ":", op = != | |
20 | Global:VALUES = : :: :\: | 20 | Global:VALUES = : :: :\: | |
21 | CondParser_Eval: ${VALUES:M\:${:U\:}} != ${VALUES:M${:U\:}\:} | 21 | CondParser_Eval: ${VALUES:M\:${:U\:}} != ${VALUES:M${:U\:}\:} | |
22 | Var_Parse: ${VALUES:M\:${:U\:}} != ${VALUES:M${:U\:}\:} (eval-defined) | 22 | Var_Parse: ${VALUES:M\:${:U\:}} != ${VALUES:M${:U\:}\:} (eval-defined) | |
23 | Evaluating modifier ${VALUES:M...} on value ": :: :\:" (eval-defined, regular) | 23 | Evaluating modifier ${VALUES:M...} on value ": :: :\:" | |
24 | Var_Parse: ${:U:} (eval-defined) | 24 | Var_Parse: ${:U:} (eval-defined) | |
25 | Evaluating modifier ${:U} on value "" (eval-defined, undefined) | 25 | Evaluating modifier ${:U} on value "" (eval-defined, undefined) | |
26 | Result of ${:U} is "" (eval-defined, defined) | 26 | Result of ${:U} is "" (eval-defined, defined) | |
27 | Pattern for ':M' is ":" | 27 | Pattern for ':M' is ":" | |
28 | ModifyWords: split ": :: :\:" into 3 words | 28 | ModifyWords: split ": :: :\:" into 3 words | |
29 | Result of ${VALUES:M\:${:U\:}} is ":" (eval-defined, regular) | 29 | Result of ${VALUES:M\:${:U\:}} is ":" (eval-defined, regular) | |
30 | Var_Parse: ${VALUES:M${:U\:}\:} (eval-defined) | 30 | Var_Parse: ${VALUES:M${:U\:}\:} (eval-defined) | |
31 | Evaluating modifier ${VALUES:M...} on value ": :: :\:" (eval-defined, regular) | 31 | Evaluating modifier ${VALUES:M...} on value ": :: :\:" | |
32 | Var_Parse: ${:U\:}\: (eval-defined) | 32 | Var_Parse: ${:U\:}\: (eval-defined) | |
33 | Evaluating modifier ${:U...} on value "" (eval-defined, undefined) | 33 | Evaluating modifier ${:U...} on value "" (eval-defined, undefined) | |
34 | Result of ${:U\:} is ":" (eval-defined, defined) | 34 | Result of ${:U\:} is ":" (eval-defined, defined) | |
35 | Pattern for ':M' is ":\:" | 35 | Pattern for ':M' is ":\:" | |
36 | ModifyWords: split ": :: :\:" into 3 words | 36 | ModifyWords: split ": :: :\:" into 3 words | |
37 | Result of ${VALUES:M${:U\:}\:} is "::" (eval-defined, regular) | 37 | Result of ${VALUES:M${:U\:}\:} is "::" (eval-defined, regular) | |
38 | lhs = ":", rhs = "::", op = != | 38 | lhs = ":", rhs = "::", op = != | |
39 | make: "varmod-match-escape.mk" line 42: warning: XXX: Oops | 39 | make: "varmod-match-escape.mk" line 42: warning: XXX: Oops | |
40 | Global:.MAKEFLAGS = -r -k -d cv -d | 40 | Global:.MAKEFLAGS = -r -k -d cv -d | |
41 | Global:.MAKEFLAGS = -r -k -d cv -d 0 | 41 | Global:.MAKEFLAGS = -r -k -d cv -d 0 | |
42 | make: "varmod-match-escape.mk" line 67: Dollar followed by nothing | 42 | make: "varmod-match-escape.mk" line 67: Dollar followed by nothing | |
43 | make: Fatal errors encountered -- cannot continue | 43 | make: Fatal errors encountered -- cannot continue | |
44 | make: stopped in unit-tests | 44 | make: stopped in unit-tests |