var-eval-short.mk revision 1.1 1 1.1 rillig # $NetBSD: var-eval-short.mk,v 1.1 2021/03/14 11:49:37 rillig Exp $
2 1.1 rillig #
3 1.1 rillig # Tests for each variable modifier to ensure that they only do the minimum
4 1.1 rillig # necessary computations. If the result of the expression is not needed, they
5 1.1 rillig # should only parse the modifier but not actually evaluate it.
6 1.1 rillig #
7 1.1 rillig # See also:
8 1.1 rillig # var.c, the comment starting with 'The ApplyModifier functions'
9 1.1 rillig # ApplyModifier, for the order of the modifiers
10 1.1 rillig # ParseModifierPart, for evaluating nested expressions
11 1.1 rillig # cond-short.mk
12 1.1 rillig
13 1.1 rillig FAIL= ${:!echo unexpected 1>&2!}
14 1.1 rillig
15 1.1 rillig # The following tests only ensure that nested expressions are not evaluated.
16 1.1 rillig # They cannot ensure that any unexpanded text returned from ParseModifierPart
17 1.1 rillig # is ignored as well. To do that, it is necessary to step through the code of
18 1.1 rillig # each modifier.
19 1.1 rillig
20 1.1 rillig .if 0 && ${FAIL}
21 1.1 rillig .endif
22 1.1 rillig
23 1.1 rillig .if 0 && ${VAR::=${FAIL}}
24 1.1 rillig .elif defined(VAR)
25 1.1 rillig . error
26 1.1 rillig .endif
27 1.1 rillig
28 1.1 rillig .if 0 && ${${FAIL}:?then:else}
29 1.1 rillig .endif
30 1.1 rillig
31 1.1 rillig .if 0 && ${1:?${FAIL}:${FAIL}}
32 1.1 rillig .endif
33 1.1 rillig
34 1.1 rillig .if 0 && ${0:?${FAIL}:${FAIL}}
35 1.1 rillig .endif
36 1.1 rillig
37 1.1 rillig .if 0 && ${:Uword:@${FAIL}@expr@}
38 1.1 rillig .endif
39 1.1 rillig
40 1.1 rillig .if 0 && ${:Uword:@var@${FAIL}@}
41 1.1 rillig .endif
42 1.1 rillig
43 1.1 rillig .if 0 && ${:Uword:[${FAIL}]}
44 1.1 rillig .endif
45 1.1 rillig
46 1.1 rillig .if 0 && ${:Uword:_=VAR}
47 1.1 rillig .elif defined(VAR)
48 1.1 rillig . error
49 1.1 rillig .endif
50 1.1 rillig
51 1.1 rillig .if 0 && ${:Uword:C,${FAIL}****,,}
52 1.1 rillig .endif
53 1.1 rillig
54 1.1 rillig DEFINED= # defined
55 1.1 rillig .if 0 && ${DEFINED:D${FAIL}}
56 1.1 rillig .endif
57 1.1 rillig
58 1.1 rillig .if 0 && ${:Uword:E}
59 1.1 rillig .endif
60 1.1 rillig
61 1.1 rillig # As of 2021-03-14, the error 'Invalid time value: ${FAIL}}' is ok since
62 1.1 rillig # ':gmtime' does not expand its argument.
63 1.1 rillig .if 0 && ${:Uword:gmtime=${FAIL}}
64 1.1 rillig .endif
65 1.1 rillig
66 1.1 rillig .if 0 && ${:Uword:H}
67 1.1 rillig .endif
68 1.1 rillig
69 1.1 rillig .if 0 && ${:Uword:hash}
70 1.1 rillig .endif
71 1.1 rillig
72 1.1 rillig .if 0 && ${value:L}
73 1.1 rillig .endif
74 1.1 rillig
75 1.1 rillig # As of 2021-03-14, the error 'Invalid time value: ${FAIL}}' is ok since
76 1.1 rillig # ':localtime' does not expand its argument.
77 1.1 rillig .if 0 && ${:Uword:localtime=${FAIL}}
78 1.1 rillig .endif
79 1.1 rillig
80 1.1 rillig .if 0 && ${:Uword:M${FAIL}}
81 1.1 rillig .endif
82 1.1 rillig
83 1.1 rillig .if 0 && ${:Uword:N${FAIL}}
84 1.1 rillig .endif
85 1.1 rillig
86 1.1 rillig .if 0 && ${:Uword:O}
87 1.1 rillig .endif
88 1.1 rillig
89 1.1 rillig .if 0 && ${:Uword:Ox}
90 1.1 rillig .endif
91 1.1 rillig
92 1.1 rillig .if 0 && ${:Uword:P}
93 1.1 rillig .endif
94 1.1 rillig
95 1.1 rillig .if 0 && ${:Uword:Q}
96 1.1 rillig .endif
97 1.1 rillig
98 1.1 rillig .if 0 && ${:Uword:q}
99 1.1 rillig .endif
100 1.1 rillig
101 1.1 rillig .if 0 && ${:Uword:R}
102 1.1 rillig .endif
103 1.1 rillig
104 1.1 rillig .if 0 && ${:Uword:range}
105 1.1 rillig .endif
106 1.1 rillig
107 1.1 rillig .if 0 && ${:Uword:S,${FAIL},${FAIL},}
108 1.1 rillig .endif
109 1.1 rillig
110 1.1 rillig .if 0 && ${:Uword:sh}
111 1.1 rillig .endif
112 1.1 rillig
113 1.1 rillig .if 0 && ${:Uword:T}
114 1.1 rillig .endif
115 1.1 rillig
116 1.1 rillig .if 0 && ${:Uword:ts/}
117 1.1 rillig .endif
118 1.1 rillig
119 1.1 rillig .if 0 && ${:U${FAIL}}
120 1.1 rillig .endif
121 1.1 rillig
122 1.1 rillig .if 0 && ${:Uword:u}
123 1.1 rillig .endif
124 1.1 rillig
125 1.1 rillig .if 0 && ${:Uword:word=replacement}
126 1.1 rillig .endif
127 1.1 rillig
128 1.1 rillig all:
129