1 1.5 rillig # $NetBSD: cond-token-number.mk,v 1.5 2020/11/15 14:58:14 rillig Exp $ 2 1.1 rillig # 3 1.2 rillig # Tests for number tokens in .if conditions. 4 1.5 rillig # 5 1.5 rillig # TODO: Add introduction. 6 1.1 rillig 7 1.3 rillig .if 0 8 1.3 rillig . error 9 1.3 rillig .endif 10 1.1 rillig 11 1.3 rillig # Even though -0 is a number and would be accepted by strtod, it is not 12 1.3 rillig # accepted by the condition parser. 13 1.3 rillig # 14 1.3 rillig # See the ch_isdigit call in CondParser_String. 15 1.3 rillig .if -0 16 1.3 rillig . error 17 1.5 rillig .else 18 1.5 rillig . error 19 1.3 rillig .endif 20 1.3 rillig 21 1.3 rillig # Even though +0 is a number and would be accepted by strtod, it is not 22 1.3 rillig # accepted by the condition parser. 23 1.3 rillig # 24 1.3 rillig # See the ch_isdigit call in CondParser_String. 25 1.3 rillig .if +0 26 1.3 rillig . error 27 1.5 rillig .else 28 1.5 rillig . error 29 1.3 rillig .endif 30 1.3 rillig 31 1.3 rillig # Even though -1 is a number and would be accepted by strtod, it is not 32 1.3 rillig # accepted by the condition parser. 33 1.3 rillig # 34 1.3 rillig # See the ch_isdigit call in CondParser_String. 35 1.3 rillig .if !-1 36 1.3 rillig . error 37 1.5 rillig .else 38 1.5 rillig . error 39 1.3 rillig .endif 40 1.3 rillig 41 1.3 rillig # Even though +1 is a number and would be accepted by strtod, it is not 42 1.3 rillig # accepted by the condition parser. 43 1.3 rillig # 44 1.3 rillig # See the ch_isdigit call in CondParser_String. 45 1.3 rillig .if !+1 46 1.3 rillig . error 47 1.5 rillig .else 48 1.5 rillig . error 49 1.3 rillig .endif 50 1.3 rillig 51 1.3 rillig # When the number comes from a variable expression though, it may be signed. 52 1.3 rillig # XXX: This is inconsistent. 53 1.3 rillig .if ${:U+0} 54 1.3 rillig . error 55 1.3 rillig .endif 56 1.3 rillig 57 1.3 rillig # When the number comes from a variable expression though, it may be signed. 58 1.3 rillig # XXX: This is inconsistent. 59 1.3 rillig .if !${:U+1} 60 1.3 rillig . error 61 1.3 rillig .endif 62 1.3 rillig 63 1.4 rillig # Hexadecimal numbers are accepted. 64 1.4 rillig .if 0x0 65 1.4 rillig . error 66 1.4 rillig .endif 67 1.4 rillig .if 0x1 68 1.4 rillig .else 69 1.4 rillig . error 70 1.4 rillig .endif 71 1.4 rillig 72 1.4 rillig # This is not a hexadecimal number, even though it has an x. 73 1.4 rillig # It is interpreted as a string instead, effectively meaning defined(3x4). 74 1.4 rillig .if 3x4 75 1.4 rillig .else 76 1.4 rillig . error 77 1.4 rillig .endif 78 1.4 rillig 79 1.3 rillig # Ensure that parsing continues until here. 80 1.3 rillig .info End of the tests. 81 1.3 rillig 82 1.3 rillig all: # nothing 83