Module Name:    src
Committed By:   rillig
Date:           Tue Dec 28 22:13:56 UTC 2021

Modified Files:
        src/usr.bin/make/unit-tests: cond-func-empty.mk cond-func.mk

Log Message:
tests/make: test function names without following '('


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 src/usr.bin/make/unit-tests/cond-func-empty.mk
cvs rdiff -u -r1.9 -r1.10 src/usr.bin/make/unit-tests/cond-func.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/cond-func-empty.mk
diff -u src/usr.bin/make/unit-tests/cond-func-empty.mk:1.16 src/usr.bin/make/unit-tests/cond-func-empty.mk:1.17
--- src/usr.bin/make/unit-tests/cond-func-empty.mk:1.16	Sat Dec 11 10:41:31 2021
+++ src/usr.bin/make/unit-tests/cond-func-empty.mk	Tue Dec 28 22:13:56 2021
@@ -1,4 +1,4 @@
-# $NetBSD: cond-func-empty.mk,v 1.16 2021/12/11 10:41:31 rillig Exp $
+# $NetBSD: cond-func-empty.mk,v 1.17 2021/12/28 22:13:56 rillig Exp $
 #
 # Tests for the empty() function in .if conditions, which tests a variable
 # expression for emptiness.
@@ -189,5 +189,16 @@ VARNAME=	${VARNAME${:U1}}
 .if defined(VARNAME${:U2}) && !empty(VARNAME${:U2})
 .endif
 
-all:
-	@:;
+
+# If the word 'empty' is not followed by '(', it is not a function call but an
+# ordinary bare word.  This bare word is interpreted as 'defined(empty)', and
+# since there is no variable named 'empty', the condition evaluates to false.
+.if empty
+.  error
+.endif
+
+empty=		# defined but empty
+.if empty
+.else
+.  error
+.endif

Index: src/usr.bin/make/unit-tests/cond-func.mk
diff -u src/usr.bin/make/unit-tests/cond-func.mk:1.9 src/usr.bin/make/unit-tests/cond-func.mk:1.10
--- src/usr.bin/make/unit-tests/cond-func.mk:1.9	Sun Nov 15 14:07:53 2020
+++ src/usr.bin/make/unit-tests/cond-func.mk	Tue Dec 28 22:13:56 2021
@@ -1,4 +1,4 @@
-# $NetBSD: cond-func.mk,v 1.9 2020/11/15 14:07:53 rillig Exp $
+# $NetBSD: cond-func.mk,v 1.10 2021/12/28 22:13:56 rillig Exp $
 #
 # Tests for those parts of the functions in .if conditions that are common
 # among several functions.
@@ -102,9 +102,9 @@ ${VARNAME_UNBALANCED_BRACES}=	variable n
 .  info A plain function name is parsed as !empty(...).
 .endif
 
-# If a variable named 'defined' is actually defined and not empty, the plain
-# symbol 'defined' evaluates to true.
-defined=	non-empty
+# If a variable named 'defined' is actually defined, the bare word 'defined'
+# is interpreted as 'defined(defined)', and the condition evaluates to true.
+defined=	# defined but empty
 .if defined
 .  info A plain function name is parsed as !empty(...).
 .else
@@ -119,7 +119,7 @@ defined=	non-empty
 .  info Symbols may start with a function name.
 .endif
 
-defined-var=	non-empty
+defined-var=	# defined but empty
 .if defined-var
 .  info Symbols may start with a function name.
 .else
@@ -132,6 +132,3 @@ defined-var=	non-empty
 .else
 .  error
 .endif
-
-all:
-	@:;

Reply via email to