vardebug.mk revision 1.9 1 1.9 rillig # $NetBSD: vardebug.mk,v 1.9 2023/12/20 09:46:00 rillig Exp $
2 1.1 rillig #
3 1.1 rillig # Demonstrates the debugging output for var.c.
4 1.1 rillig
5 1.4 rillig .MAKEFLAGS: -dv FROM_CMDLINE=
6 1.1 rillig
7 1.9 rillig # expect: Global: VAR = added
8 1.1 rillig VAR= added # VarAdd
9 1.9 rillig # expect: Global: VAR = overwritten
10 1.1 rillig VAR= overwritten # Var_Set
11 1.9 rillig # expect: Global: delete VAR
12 1.9 rillig .undef VAR
13 1.9 rillig # expect: Global: ignoring delete 'VAR' as it is not found
14 1.9 rillig .undef VAR
15 1.1 rillig
16 1.1 rillig # The variable with the empty name cannot be set at all.
17 1.9 rillig # expect: Global: ignoring ' = empty name' as the variable name '${:U}' expands to empty
18 1.1 rillig ${:U}= empty name # Var_Set
19 1.9 rillig # expect: Global: ignoring ' += empty name' as the variable name '${:U}' expands to empty
20 1.1 rillig ${:U}+= empty name # Var_Append
21 1.1 rillig
22 1.1 rillig FROM_CMDLINE= overwritten # Var_Set (ignored)
23 1.1 rillig
24 1.9 rillig # expect: Global: VAR = 1
25 1.1 rillig VAR= 1
26 1.9 rillig # expect: Global: VAR = 1 2
27 1.1 rillig VAR+= 2
28 1.9 rillig # expect: Global: VAR = 1 2 3
29 1.1 rillig VAR+= 3
30 1.1 rillig
31 1.9 rillig # expect: Pattern for ':M' is "[2]"
32 1.9 rillig # expect: Result of ${VAR:M[2]} is "2"
33 1.6 rillig .if ${VAR:M[2]} # ModifyWord_Match
34 1.1 rillig .endif
35 1.9 rillig # expect: Pattern for ':N' is "[2]"
36 1.9 rillig # expect: Result of ${VAR:N[2]} is "1 3"
37 1.9 rillig .if ${VAR:N[2]} # ModifyWord_NoMatch
38 1.1 rillig .endif
39 1.1 rillig
40 1.6 rillig .if ${VAR:S,2,two,} # ParseModifierPart
41 1.1 rillig .endif
42 1.1 rillig
43 1.9 rillig # expect: Result of ${VAR:Q} is "1\ 2\ 3"
44 1.1 rillig .if ${VAR:Q} # VarQuote
45 1.1 rillig .endif
46 1.1 rillig
47 1.1 rillig .if ${VAR:tu:tl:Q} # ApplyModifiers
48 1.1 rillig .endif
49 1.1 rillig
50 1.2 rillig # ApplyModifiers, "Got ..."
51 1.9 rillig # expect: Result of ${:Mvalu[e]} is "value" (eval-defined, defined)
52 1.2 rillig .if ${:Uvalue:${:UM*e}:Mvalu[e]}
53 1.2 rillig .endif
54 1.2 rillig
55 1.9 rillig # expect: Global: delete VAR
56 1.1 rillig .undef ${:UVAR} # Var_Delete
57 1.1 rillig
58 1.3 rillig # When ApplyModifiers results in an error, this appears in the debug log
59 1.3 rillig # as "is error", without surrounding quotes.
60 1.9 rillig # expect: Result of ${:unknown} is error (eval-defined, defined)
61 1.8 rillig # expect+2: Malformed conditional (${:Uvariable:unknown})
62 1.8 rillig # expect+1: Unknown modifier "unknown"
63 1.3 rillig .if ${:Uvariable:unknown}
64 1.3 rillig .endif
65 1.3 rillig
66 1.3 rillig # XXX: The error message is "Malformed conditional", which is wrong.
67 1.3 rillig # The condition is syntactically fine, it just contains an undefined variable.
68 1.3 rillig #
69 1.3 rillig # There is a specialized error message for "Undefined variable", but as of
70 1.3 rillig # 2020-08-08, that is not covered by any unit tests. It might even be
71 1.3 rillig # unreachable.
72 1.8 rillig # expect+1: Malformed conditional (${UNDEFINED})
73 1.3 rillig .if ${UNDEFINED}
74 1.3 rillig .endif
75 1.3 rillig
76 1.5 rillig # By default, .SHELL is not defined and thus can be set. As soon as it is
77 1.7 rillig # accessed, it is initialized in the command line scope (during VarFind),
78 1.5 rillig # where it is set to read-only. Assigning to it is ignored.
79 1.9 rillig # expect: Command: ignoring '.SHELL = overwritten' as it is read-only
80 1.5 rillig .MAKEFLAGS: .SHELL=overwritten
81 1.5 rillig
82 1.4 rillig .MAKEFLAGS: -d0
83