Sun Mar 14 16:00:07 2021 UTC ()
make: add test for edge case in modifier ':[...]'

TryParseIntBase0 wrongly returns successful for a string that does not
start with a number at all.  Its only caller, ApplyModifier_Words,
already handles all error cases properly.

No functional change.


(rillig)
diff -r1.3 -r1.4 src/usr.bin/make/unit-tests/modword.exp
diff -r1.5 -r1.6 src/usr.bin/make/unit-tests/modword.mk

cvs diff -r1.3 -r1.4 src/usr.bin/make/unit-tests/Attic/modword.exp (expand / switch to unified diff)

--- src/usr.bin/make/unit-tests/Attic/modword.exp 2021/02/23 16:07:14 1.3
+++ src/usr.bin/make/unit-tests/Attic/modword.exp 2021/03/14 16:00:07 1.4
@@ -61,26 +61,28 @@ LIST:[0]:[1]="one two three four five si @@ -61,26 +61,28 @@ LIST:[0]:[1]="one two three four five si
61LIST:[*]:[1]="one two three four five six" 61LIST:[*]:[1]="one two three four five six"
62LIST:[@]:[1]="one" 62LIST:[@]:[1]="one"
63LIST:[0]:[2]="" 63LIST:[0]:[2]=""
64LIST:[*]:[2]="" 64LIST:[*]:[2]=""
65LIST:[@]:[2]="two" 65LIST:[@]:[2]="two"
66LIST:[*]:C/ /,/:[2]="" 66LIST:[*]:C/ /,/:[2]=""
67LIST:[*]:C/ /,/:[*]:[2]="" 67LIST:[*]:C/ /,/:[*]:[2]=""
68LIST:[*]:C/ /,/:[@]:[2]="three" 68LIST:[*]:C/ /,/:[@]:[2]="three"
69LONGLIST:[012..0x12]="10 11 12 13 14 15 16 17 18" 69LONGLIST:[012..0x12]="10 11 12 13 14 15 16 17 18"
70make: Bad modifier ":[1.]" for variable "LIST" 70make: Bad modifier ":[1.]" for variable "LIST"
71LIST:[1.]="" is an error 71LIST:[1.]="" is an error
72make: Bad modifier ":[1..]" for variable "LIST" 72make: Bad modifier ":[1..]" for variable "LIST"
73LIST:[1..]="" is an error 73LIST:[1..]="" is an error
 74make: Bad modifier ":[1.. ]" for variable "LIST"
 75LIST:[1.. ]="" is an error
74LIST:[1..1]="one" 76LIST:[1..1]="one"
75make: Bad modifier ":[1..1.]" for variable "LIST" 77make: Bad modifier ":[1..1.]" for variable "LIST"
76LIST:[1..1.]="" is an error 78LIST:[1..1.]="" is an error
77LIST:[1..2]="one two" 79LIST:[1..2]="one two"
78LIST:[2..1]="two one" 80LIST:[2..1]="two one"
79LIST:[3..-2]="three four five" 81LIST:[3..-2]="three four five"
80LIST:[-4..4]="three four" 82LIST:[-4..4]="three four"
81make: Bad modifier ":[0..1]" for variable "LIST" 83make: Bad modifier ":[0..1]" for variable "LIST"
82LIST:[0..1]="" is an error 84LIST:[0..1]="" is an error
83make: Bad modifier ":[-1..0]" for variable "LIST" 85make: Bad modifier ":[-1..0]" for variable "LIST"
84LIST:[-1..0]="" is an error 86LIST:[-1..0]="" is an error
85LIST:[-1..1]="six five four three two one" 87LIST:[-1..1]="six five four three two one"
86LIST:[0..0]="one two three four five six" 88LIST:[0..0]="one two three four five six"

cvs diff -r1.5 -r1.6 src/usr.bin/make/unit-tests/Attic/modword.mk (expand / switch to unified diff)

--- src/usr.bin/make/unit-tests/Attic/modword.mk 2020/11/15 20:20:58 1.5
+++ src/usr.bin/make/unit-tests/Attic/modword.mk 2021/03/14 16:00:07 1.6
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1# $NetBSD: modword.mk,v 1.5 2020/11/15 20:20:58 rillig Exp $ 1# $NetBSD: modword.mk,v 1.6 2021/03/14 16:00:07 rillig Exp $
2# 2#
3# Test behaviour of new :[] modifier 3# Test behaviour of new :[] modifier
4# TODO: When was this modifier new? 4# TODO: When was this modifier new?
5 5
6all: mod-squarebrackets mod-S-W mod-C-W mod-tW-tw 6all: mod-squarebrackets mod-S-W mod-C-W mod-tW-tw
7 7
8LIST= one two three 8LIST= one two three
9LIST+= four five six 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 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 11
12EMPTY= # the space should be ignored 12EMPTY= # the space should be ignored
13ESCAPEDSPACE= \ # escaped space before the '#' 13ESCAPEDSPACE= \ # escaped space before the '#'
14REALLYSPACE:= ${EMPTY:C/^/ /W} 14REALLYSPACE:= ${EMPTY:C/^/ /W}
@@ -89,26 +89,27 @@ mod-squarebrackets-n: @@ -89,26 +89,27 @@ mod-squarebrackets-n:
89 @echo 'LIST:[*]:[1]="${LIST:[*]:[1]}"' 89 @echo 'LIST:[*]:[1]="${LIST:[*]:[1]}"'
90 @echo 'LIST:[@]:[1]="${LIST:[@]:[1]}"' 90 @echo 'LIST:[@]:[1]="${LIST:[@]:[1]}"'
91 @echo 'LIST:[0]:[2]="${LIST:[0]:[2]}"' 91 @echo 'LIST:[0]:[2]="${LIST:[0]:[2]}"'
92 @echo 'LIST:[*]:[2]="${LIST:[*]:[2]}"' 92 @echo 'LIST:[*]:[2]="${LIST:[*]:[2]}"'
93 @echo 'LIST:[@]:[2]="${LIST:[@]:[2]}"' 93 @echo 'LIST:[@]:[2]="${LIST:[@]:[2]}"'
94 @echo 'LIST:[*]:C/ /,/:[2]="${LIST:[*]:C/ /,/:[2]}"' 94 @echo 'LIST:[*]:C/ /,/:[2]="${LIST:[*]:C/ /,/:[2]}"'
95 @echo 'LIST:[*]:C/ /,/:[*]:[2]="${LIST:[*]:C/ /,/:[*]:[2]}"' 95 @echo 'LIST:[*]:C/ /,/:[*]:[2]="${LIST:[*]:C/ /,/:[*]:[2]}"'
96 @echo 'LIST:[*]:C/ /,/:[@]:[2]="${LIST:[*]:C/ /,/:[@]:[2]}"' 96 @echo 'LIST:[*]:C/ /,/:[@]:[2]="${LIST:[*]:C/ /,/:[@]:[2]}"'
97 @echo 'LONGLIST:[012..0x12]="${LONGLIST:[012..0x12]}"' 97 @echo 'LONGLIST:[012..0x12]="${LONGLIST:[012..0x12]}"'
98 98
99mod-squarebrackets-start-end: 99mod-squarebrackets-start-end:
100 @echo 'LIST:[1.]="${LIST:[1.]}" is an error' 100 @echo 'LIST:[1.]="${LIST:[1.]}" is an error'
101 @echo 'LIST:[1..]="${LIST:[1..]}" is an error' 101 @echo 'LIST:[1..]="${LIST:[1..]}" is an error'
 102 @echo 'LIST:[1.. ]="${LIST:[1.. ]}" is an error'
102 @echo 'LIST:[1..1]="${LIST:[1..1]}"' 103 @echo 'LIST:[1..1]="${LIST:[1..1]}"'
103 @echo 'LIST:[1..1.]="${LIST:[1..1.]}" is an error' 104 @echo 'LIST:[1..1.]="${LIST:[1..1.]}" is an error'
104 @echo 'LIST:[1..2]="${LIST:[1..2]}"' 105 @echo 'LIST:[1..2]="${LIST:[1..2]}"'
105 @echo 'LIST:[2..1]="${LIST:[2..1]}"' 106 @echo 'LIST:[2..1]="${LIST:[2..1]}"'
106 @echo 'LIST:[3..-2]="${LIST:[3..-2]}"' 107 @echo 'LIST:[3..-2]="${LIST:[3..-2]}"'
107 @echo 'LIST:[-4..4]="${LIST:[-4..4]}"' 108 @echo 'LIST:[-4..4]="${LIST:[-4..4]}"'
108 @echo 'LIST:[0..1]="${LIST:[0..1]}" is an error' 109 @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..0]="${LIST:[-1..0]}" is an error'
110 @echo 'LIST:[-1..1]="${LIST:[-1..1]}"' 111 @echo 'LIST:[-1..1]="${LIST:[-1..1]}"'
111 @echo 'LIST:[0..0]="${LIST:[0..0]}"' 112 @echo 'LIST:[0..0]="${LIST:[0..0]}"'
112 @echo 'LIST:[3..99]="${LIST:[3..99]}"' 113 @echo 'LIST:[3..99]="${LIST:[3..99]}"'
113 @echo 'LIST:[-3..-99]="${LIST:[-3..-99]}"' 114 @echo 'LIST:[-3..-99]="${LIST:[-3..-99]}"'
114 @echo 'LIST:[-99..-3]="${LIST:[-99..-3]}"' 115 @echo 'LIST:[-99..-3]="${LIST:[-99..-3]}"'