1# $NetBSD: modword.mk,v 1.5 2020/11/15 20:20:58 rillig Exp $ 2# 3# Test behaviour of new :[] modifier 4# TODO: When was this modifier new? 5 6all: mod-squarebrackets mod-S-W mod-C-W mod-tW-tw 7 8LIST= one two three 9LIST+= four five six 10LONGLIST= 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 11 12EMPTY= # the space should be ignored 13ESCAPEDSPACE= \ # escaped space before the '#' 14REALLYSPACE:= ${EMPTY:C/^/ /W} 15HASH= \# 16AT= @ 17STAR= * 18ZERO= 0 19ONE= 1 20MINUSONE= -1 21 22mod-squarebrackets: mod-squarebrackets-0-star-at \ 23 mod-squarebrackets-hash \ 24 mod-squarebrackets-n \ 25 mod-squarebrackets-start-end \ 26 mod-squarebrackets-nested \ 27 mod-squarebrackets-space 28 29mod-squarebrackets-0-star-at: 30 @echo 'LIST:[]="${LIST:[]}" is an error' 31 @echo 'LIST:[0]="${LIST:[0]}"' 32 @echo 'LIST:[0x0]="${LIST:[0x0]}"' 33 @echo 'LIST:[000]="${LIST:[000]}"' 34 @echo 'LIST:[*]="${LIST:[*]}"' 35 @echo 'LIST:[@]="${LIST:[@]}"' 36 @echo 'LIST:[0]:C/ /,/="${LIST:[0]:C/ /,/}"' 37 @echo 'LIST:[0]:C/ /,/g="${LIST:[0]:C/ /,/g}"' 38 @echo 'LIST:[0]:C/ /,/1g="${LIST:[0]:C/ /,/1g}"' 39 @echo 'LIST:[*]:C/ /,/="${LIST:[*]:C/ /,/}"' 40 @echo 'LIST:[*]:C/ /,/g="${LIST:[*]:C/ /,/g}"' 41 @echo 'LIST:[*]:C/ /,/1g="${LIST:[*]:C/ /,/1g}"' 42 @echo 'LIST:[@]:C/ /,/="${LIST:[@]:C/ /,/}"' 43 @echo 'LIST:[@]:C/ /,/g="${LIST:[@]:C/ /,/g}"' 44 @echo 'LIST:[@]:C/ /,/1g="${LIST:[@]:C/ /,/1g}"' 45 @echo 'LIST:[@]:[0]:C/ /,/="${LIST:[@]:[0]:C/ /,/}"' 46 @echo 'LIST:[0]:[@]:C/ /,/="${LIST:[0]:[@]:C/ /,/}"' 47 @echo 'LIST:[@]:[*]:C/ /,/="${LIST:[@]:[*]:C/ /,/}"' 48 @echo 'LIST:[*]:[@]:C/ /,/="${LIST:[*]:[@]:C/ /,/}"' 49 50mod-squarebrackets-hash: 51 @echo 'EMPTY="${EMPTY}"' 52 @echo 'EMPTY:[#]="${EMPTY:[#]}" == 1 ?' 53 @echo 'ESCAPEDSPACE="${ESCAPEDSPACE}"' 54 @echo 'ESCAPEDSPACE:[#]="${ESCAPEDSPACE:[#]}" == 1 ?' 55 @echo 'REALLYSPACE="${REALLYSPACE}"' 56 @echo 'REALLYSPACE:[#]="${REALLYSPACE:[#]}" == 1 ?' 57 @echo 'LIST:[#]="${LIST:[#]}"' 58 @echo 'LIST:[0]:[#]="${LIST:[0]:[#]}" == 1 ?' 59 @echo 'LIST:[*]:[#]="${LIST:[*]:[#]}" == 1 ?' 60 @echo 'LIST:[@]:[#]="${LIST:[@]:[#]}"' 61 @echo 'LIST:[1]:[#]="${LIST:[1]:[#]}"' 62 @echo 'LIST:[1..3]:[#]="${LIST:[1..3]:[#]}"' 63 64mod-squarebrackets-n: 65 @echo 'EMPTY:[1]="${EMPTY:[1]}"' 66 @echo 'ESCAPEDSPACE="${ESCAPEDSPACE}"' 67 @echo 'ESCAPEDSPACE:[1]="${ESCAPEDSPACE:[1]}"' 68 @echo 'REALLYSPACE="${REALLYSPACE}"' 69 @echo 'REALLYSPACE:[1]="${REALLYSPACE:[1]}" == "" ?' 70 @echo 'REALLYSPACE:[*]:[1]="${REALLYSPACE:[*]:[1]}" == " " ?' 71 @echo 'LIST:[1]="${LIST:[1]}"' 72 @echo 'LIST:[1.]="${LIST:[1.]}" is an error' 73 @echo 'LIST:[1].="${LIST:[1].}" is an error' 74 @echo 'LIST:[2]="${LIST:[2]}"' 75 @echo 'LIST:[6]="${LIST:[6]}"' 76 @echo 'LIST:[7]="${LIST:[7]}"' 77 @echo 'LIST:[999]="${LIST:[999]}"' 78 @echo 'LIST:[-]="${LIST:[-]}" is an error' 79 @echo 'LIST:[--]="${LIST:[--]}" is an error' 80 @echo 'LIST:[-1]="${LIST:[-1]}"' 81 @echo 'LIST:[-2]="${LIST:[-2]}"' 82 @echo 'LIST:[-6]="${LIST:[-6]}"' 83 @echo 'LIST:[-7]="${LIST:[-7]}"' 84 @echo 'LIST:[-999]="${LIST:[-999]}"' 85 @echo 'LONGLIST:[17]="${LONGLIST:[17]}"' 86 @echo 'LONGLIST:[0x11]="${LONGLIST:[0x11]}"' 87 @echo 'LONGLIST:[021]="${LONGLIST:[021]}"' 88 @echo 'LIST:[0]:[1]="${LIST:[0]:[1]}"' 89 @echo 'LIST:[*]:[1]="${LIST:[*]:[1]}"' 90 @echo 'LIST:[@]:[1]="${LIST:[@]:[1]}"' 91 @echo 'LIST:[0]:[2]="${LIST:[0]:[2]}"' 92 @echo 'LIST:[*]:[2]="${LIST:[*]:[2]}"' 93 @echo 'LIST:[@]:[2]="${LIST:[@]:[2]}"' 94 @echo 'LIST:[*]:C/ /,/:[2]="${LIST:[*]:C/ /,/:[2]}"' 95 @echo 'LIST:[*]:C/ /,/:[*]:[2]="${LIST:[*]:C/ /,/:[*]:[2]}"' 96 @echo 'LIST:[*]:C/ /,/:[@]:[2]="${LIST:[*]:C/ /,/:[@]:[2]}"' 97 @echo 'LONGLIST:[012..0x12]="${LONGLIST:[012..0x12]}"' 98 99mod-squarebrackets-start-end: 100 @echo 'LIST:[1.]="${LIST:[1.]}" is an error' 101 @echo 'LIST:[1..]="${LIST:[1..]}" is an error' 102 @echo 'LIST:[1..1]="${LIST:[1..1]}"' 103 @echo 'LIST:[1..1.]="${LIST:[1..1.]}" is an error' 104 @echo 'LIST:[1..2]="${LIST:[1..2]}"' 105 @echo 'LIST:[2..1]="${LIST:[2..1]}"' 106 @echo 'LIST:[3..-2]="${LIST:[3..-2]}"' 107 @echo 'LIST:[-4..4]="${LIST:[-4..4]}"' 108 @echo 'LIST:[0..1]="${LIST:[0..1]}" is an error' 109 @echo 'LIST:[-1..0]="${LIST:[-1..0]}" is an error' 110 @echo 'LIST:[-1..1]="${LIST:[-1..1]}"' 111 @echo 'LIST:[0..0]="${LIST:[0..0]}"' 112 @echo 'LIST:[3..99]="${LIST:[3..99]}"' 113 @echo 'LIST:[-3..-99]="${LIST:[-3..-99]}"' 114 @echo 'LIST:[-99..-3]="${LIST:[-99..-3]}"' 115 116mod-squarebrackets-nested: 117 @echo 'HASH="${HASH}" == "#" ?' 118 @echo 'LIST:[$${HASH}]="${LIST:[${HASH}]}"' 119 @echo 'LIST:[$${ZERO}]="${LIST:[${ZERO}]}"' 120 @echo 'LIST:[$${ZERO}x$${ONE}]="${LIST:[${ZERO}x${ONE}]}"' 121 @echo 'LIST:[$${ONE}]="${LIST:[${ONE}]}"' 122 @echo 'LIST:[$${MINUSONE}]="${LIST:[${MINUSONE}]}"' 123 @echo 'LIST:[$${STAR}]="${LIST:[${STAR}]}"' 124 @echo 'LIST:[$${AT}]="${LIST:[${AT}]}"' 125 @echo 'LIST:[$${EMPTY}]="${LIST:[${EMPTY}]}" is an error' 126 @echo 'LIST:[$${LONGLIST:[21]:S/2//}]="${LIST:[${LONGLIST:[21]:S/2//}]}"' 127 @echo 'LIST:[$${LIST:[#]}]="${LIST:[${LIST:[#]}]}"' 128 @echo 'LIST:[$${LIST:[$${HASH}]}]="${LIST:[${LIST:[${HASH}]}]}"' 129 130mod-squarebrackets-space: 131 # As of 2020-11-01, it is possible to have spaces before the numbers 132 # but not after them. This is an unintended side-effect of using 133 # strtol for parsing the numbers. 134 @echo 'LIST:[ -1.. +3]="${LIST:[ -1.. +3]}"' 135 136mod-C-W: 137 @echo 'LIST:C/ /,/="${LIST:C/ /,/}"' 138 @echo 'LIST:C/ /,/W="${LIST:C/ /,/W}"' 139 @echo 'LIST:C/ /,/gW="${LIST:C/ /,/gW}"' 140 @echo 'EMPTY:C/^/,/="${EMPTY:C/^/,/}"' 141 @echo 'EMPTY:C/^/,/W="${EMPTY:C/^/,/W}"' 142 143mod-S-W: 144 @echo 'LIST:S/ /,/="${LIST:S/ /,/}"' 145 @echo 'LIST:S/ /,/W="${LIST:S/ /,/W}"' 146 @echo 'LIST:S/ /,/gW="${LIST:S/ /,/gW}"' 147 @echo 'EMPTY:S/^/,/="${EMPTY:S/^/,/}"' 148 @echo 'EMPTY:S/^/,/W="${EMPTY:S/^/,/W}"' 149 150mod-tW-tw: 151 @echo 'LIST:tW="${LIST:tW}"' 152 @echo 'LIST:tw="${LIST:tw}"' 153 @echo 'LIST:tW:C/ /,/="${LIST:tW:C/ /,/}"' 154 @echo 'LIST:tW:C/ /,/g="${LIST:tW:C/ /,/g}"' 155 @echo 'LIST:tW:C/ /,/1g="${LIST:tW:C/ /,/1g}"' 156 @echo 'LIST:tw:C/ /,/="${LIST:tw:C/ /,/}"' 157 @echo 'LIST:tw:C/ /,/g="${LIST:tw:C/ /,/g}"' 158 @echo 'LIST:tw:C/ /,/1g="${LIST:tw:C/ /,/1g}"' 159 @echo 'LIST:tw:tW:C/ /,/="${LIST:tw:tW:C/ /,/}"' 160 @echo 'LIST:tW:tw:C/ /,/="${LIST:tW:tw:C/ /,/}"' 161