4dc2cd5c6f
This continues the previous commit, in which VAR_GLOBAL, VAR_INTERNAL and VAR_CMDLINE were renamed. Renaming the variable 'ctxt' was trivial since that word is used nowhere else. In the comments though, each occurrence of the word 'context' had to be checked individually since the word 'context' was not only used for referring to a variable scope. It is also used to distinguish different situations where characters are escaped in a certain way ('parsing context') and in a few other expressions.
65 lines
1.5 KiB
Makefile
65 lines
1.5 KiB
Makefile
# $NetBSD: vardebug.mk,v 1.7 2021/02/04 21:42:47 rillig Exp $
|
|
#
|
|
# Demonstrates the debugging output for var.c.
|
|
|
|
.MAKEFLAGS: -dv FROM_CMDLINE=
|
|
|
|
VAR= added # VarAdd
|
|
VAR= overwritten # Var_Set
|
|
.undef VAR # Var_Delete (found)
|
|
.undef VAR # Var_Delete (not found)
|
|
|
|
# The variable with the empty name cannot be set at all.
|
|
${:U}= empty name # Var_Set
|
|
${:U}+= empty name # Var_Append
|
|
|
|
FROM_CMDLINE= overwritten # Var_Set (ignored)
|
|
|
|
VAR= 1
|
|
VAR+= 2
|
|
VAR+= 3
|
|
|
|
.if ${VAR:M[2]} # ModifyWord_Match
|
|
.endif
|
|
.if ${VAR:N[2]} # ModifyWord_NoMatch (no debug output)
|
|
.endif
|
|
|
|
.if ${VAR:S,2,two,} # ParseModifierPart
|
|
.endif
|
|
|
|
.if ${VAR:Q} # VarQuote
|
|
.endif
|
|
|
|
.if ${VAR:tu:tl:Q} # ApplyModifiers
|
|
.endif
|
|
|
|
# ApplyModifiers, "Got ..."
|
|
.if ${:Uvalue:${:UM*e}:Mvalu[e]}
|
|
.endif
|
|
|
|
.undef ${:UVAR} # Var_Delete
|
|
|
|
# When ApplyModifiers results in an error, this appears in the debug log
|
|
# as "is error", without surrounding quotes.
|
|
.if ${:Uvariable:unknown}
|
|
.endif
|
|
|
|
# XXX: The error message is "Malformed conditional", which is wrong.
|
|
# The condition is syntactically fine, it just contains an undefined variable.
|
|
#
|
|
# There is a specialized error message for "Undefined variable", but as of
|
|
# 2020-08-08, that is not covered by any unit tests. It might even be
|
|
# unreachable.
|
|
.if ${UNDEFINED}
|
|
.endif
|
|
|
|
# By default, .SHELL is not defined and thus can be set. As soon as it is
|
|
# accessed, it is initialized in the command line scope (during VarFind),
|
|
# where it is set to read-only. Assigning to it is ignored.
|
|
.MAKEFLAGS: .SHELL=overwritten
|
|
|
|
.MAKEFLAGS: -d0
|
|
|
|
all:
|
|
@:
|