summaryrefslogtreecommitdiff
path: root/unit-tests/cond-token-var.mk
diff options
context:
space:
mode:
Diffstat (limited to 'unit-tests/cond-token-var.mk')
-rw-r--r--unit-tests/cond-token-var.mk22
1 files changed, 18 insertions, 4 deletions
diff --git a/unit-tests/cond-token-var.mk b/unit-tests/cond-token-var.mk
index 6e55bd2d552d..30eba87ad4d2 100644
--- a/unit-tests/cond-token-var.mk
+++ b/unit-tests/cond-token-var.mk
@@ -1,6 +1,17 @@
-# $NetBSD: cond-token-var.mk,v 1.4 2020/10/24 08:46:08 rillig Exp $
+# $NetBSD: cond-token-var.mk,v 1.5 2020/11/15 14:58:14 rillig Exp $
#
-# Tests for variables in .if conditions.
+# Tests for variable expressions in .if conditions.
+#
+# Note the fine distinction between a variable and a variable expression.
+# A variable has a name and a value. To access the value, one writes a
+# variable expression of the form ${VAR}. This is a simple variable
+# expression. Variable expressions can get more complicated by adding
+# variable modifiers such as in ${VAR:Mpattern}.
+#
+# XXX: Strictly speaking, variable modifiers should be called expression
+# modifiers instead since they only modify the expression, not the variable.
+# Well, except for the assignment modifiers, these do indeed change the value
+# of the variable.
DEF= defined
@@ -12,11 +23,13 @@ DEF= defined
.endif
# A variable that appears on the left-hand side must be defined.
+# The following line thus generates a parse error.
.if ${UNDEF} == ${DEF}
. error
.endif
# A variable that appears on the right-hand side must be defined.
+# The following line thus generates a parse error.
.if ${DEF} == ${UNDEF}
. error
.endif
@@ -25,10 +38,11 @@ DEF= defined
.if ${DEF}
.endif
-# An undefined variable generates a warning.
+# An undefined variable on its own generates a parse error.
.if ${UNDEF}
.endif
-# The :U modifier turns an undefined variable into an ordinary expression.
+# The :U modifier turns an undefined expression into a defined expression.
+# Since the expression is defined now, it doesn't generate any parse error.
.if ${UNDEF:U}
.endif