cond-op-not.mk revision 1.8 1 # $NetBSD: cond-op-not.mk,v 1.8 2023/06/01 20:56:35 rillig Exp $
2 #
3 # Tests for the ! operator in .if conditions, which negates its argument.
4
5 # The exclamation mark negates its operand.
6 .if !1
7 . error
8 .endif
9
10 # Exclamation marks can be chained.
11 # This doesn't happen in practice though.
12 .if !!!1
13 . error
14 .endif
15
16 # The ! binds more tightly than the &&.
17 .if !!0 && 1
18 . error
19 .endif
20
21 # The operator '==' binds more tightly than '!'.
22 # This is unusual since most other programming languages define the precedence
23 # to be the other way round.
24 .if !${:Uexpression} == "expression"
25 . error
26 .endif
27
28 .if !${:U}
29 # expect+1: Not empty evaluates to true.
30 . info Not empty evaluates to true.
31 .else
32 . info Not empty evaluates to false.
33 .endif
34
35 .if !${:U }
36 . info Not space evaluates to true.
37 .else
38 # expect+1: Not space evaluates to false.
39 . info Not space evaluates to false.
40 .endif
41
42 .if !${:U0}
43 # expect+1: Not 0 evaluates to true.
44 . info Not 0 evaluates to true.
45 .else
46 . info Not 0 evaluates to false.
47 .endif
48
49 .if !${:U1}
50 . info Not 1 evaluates to true.
51 .else
52 # expect+1: Not 1 evaluates to false.
53 . info Not 1 evaluates to false.
54 .endif
55
56 .if !${:Uword}
57 . info Not word evaluates to true.
58 .else
59 # expect+1: Not word evaluates to false.
60 . info Not word evaluates to false.
61 .endif
62
63 # A single exclamation mark is a parse error.
64 # expect+1: Malformed conditional (!)
65 .if !
66 . error
67 .else
68 . error
69 .endif
70
71 all:
72 @:;
73