Module Name:    src
Committed By:   rillig
Date:           Wed Nov 11 07:13:42 UTC 2020

Modified Files:
        src/usr.bin/make: cond.c
        src/usr.bin/make/unit-tests: directive-ifmake.exp directive-ifmake.mk

Log Message:
make(1): add test to cover the If_Eval call in EvalNotEmpty


To generate a diff of this commit:
cvs rdiff -u -r1.203 -r1.204 src/usr.bin/make/cond.c
cvs rdiff -u -r1.3 -r1.4 src/usr.bin/make/unit-tests/directive-ifmake.exp
cvs rdiff -u -r1.6 -r1.7 src/usr.bin/make/unit-tests/directive-ifmake.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/cond.c
diff -u src/usr.bin/make/cond.c:1.203 src/usr.bin/make/cond.c:1.204
--- src/usr.bin/make/cond.c:1.203	Tue Nov 10 22:25:38 2020
+++ src/usr.bin/make/cond.c	Wed Nov 11 07:13:42 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: cond.c,v 1.203 2020/11/10 22:25:38 rillig Exp $	*/
+/*	$NetBSD: cond.c,v 1.204 2020/11/11 07:13:42 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -93,7 +93,7 @@
 #include "dir.h"
 
 /*	"@(#)cond.c	8.2 (Berkeley) 1/2/94"	*/
-MAKE_RCSID("$NetBSD: cond.c,v 1.203 2020/11/10 22:25:38 rillig Exp $");
+MAKE_RCSID("$NetBSD: cond.c,v 1.204 2020/11/11 07:13:42 rillig Exp $");
 
 /*
  * The parsing of conditional expressions is based on this grammar:
@@ -536,11 +536,11 @@ EvalNotEmpty(CondParser *par, const char
     if (TryParseNumber(value, &num))
 	return num != 0.0;
 
-    /* For .if ${...}, check for non-empty string (defProc is ifdef). */
+    /* For .if ${...}, check for non-empty string. */
     if (par->if_info->form[0] == '\0')
 	return value[0] != '\0';
 
-    /* Otherwise action default test ... */
+    /* For the other variants of .ifxxx ${...}, use its default function. */
     return If_Eval(par->if_info, value, strlen(value));
 }
 

Index: src/usr.bin/make/unit-tests/directive-ifmake.exp
diff -u src/usr.bin/make/unit-tests/directive-ifmake.exp:1.3 src/usr.bin/make/unit-tests/directive-ifmake.exp:1.4
--- src/usr.bin/make/unit-tests/directive-ifmake.exp:1.3	Sun Aug 30 14:25:45 2020
+++ src/usr.bin/make/unit-tests/directive-ifmake.exp	Wed Nov 11 07:13:42 2020
@@ -1,9 +1,10 @@
-make: "directive-ifmake.mk" line 8: ok: positive condition works
-make: "directive-ifmake.mk" line 19: ok: negation works
-make: "directive-ifmake.mk" line 25: ok: double negation works
-make: "directive-ifmake.mk" line 32: ok: both mentioned
-make: "directive-ifmake.mk" line 39: ok: only those mentioned
-make: "directive-ifmake.mk" line 49: Targets can even be added at parse time.
+make: "directive-ifmake.mk" line 10: ok: positive condition works
+make: "directive-ifmake.mk" line 21: ok: negation works
+make: "directive-ifmake.mk" line 27: ok: double negation works
+make: "directive-ifmake.mk" line 34: ok: both mentioned
+make: "directive-ifmake.mk" line 41: ok: only those mentioned
+make: "directive-ifmake.mk" line 51: Targets can even be added at parse time.
+make: "directive-ifmake.mk" line 69: ok
 : first
 : second
 : late-target

Index: src/usr.bin/make/unit-tests/directive-ifmake.mk
diff -u src/usr.bin/make/unit-tests/directive-ifmake.mk:1.6 src/usr.bin/make/unit-tests/directive-ifmake.mk:1.7
--- src/usr.bin/make/unit-tests/directive-ifmake.mk:1.6	Sun Nov  8 22:45:51 2020
+++ src/usr.bin/make/unit-tests/directive-ifmake.mk	Wed Nov 11 07:13:42 2020
@@ -1,8 +1,10 @@
-# $NetBSD: directive-ifmake.mk,v 1.6 2020/11/08 22:45:51 rillig Exp $
+# $NetBSD: directive-ifmake.mk,v 1.7 2020/11/11 07:13:42 rillig Exp $
 #
 # Tests for the .ifmake directive, which provides a shortcut for asking
 # whether a certain target is requested to be made from the command line.
 
+# The targets 'first' and 'second' are passed in on the command line.
+
 # This is the most basic form.
 .ifmake first
 .  info ok: positive condition works
@@ -61,5 +63,14 @@
 .  error
 .endif
 
+# A condition that consists of a variable expression only (without any
+# comparison operator) can be used with .if and the other .ifxxx directives.
+.ifmake ${:Ufirst}
+.  info ok
+.else
+.  error
+.endif
+
+
 first second unmentioned late-target:
 	: $@

Reply via email to