1 # $NetBSD: cond-op-not.mk,v 1.10 2025/06/28 22:39:28 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