blob: 504c9a400ff9c26075f5a37e48d8a952613f91d4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
|
# file : libbuild2/build/script/parser+diag.test.testscript
# license : MIT; see accompanying LICENSE file
test.options += -g
: name
:
$* test <<EOI >>EOO
echo abc
EOI
name: test
EOO
: name-deduce
:
$* <<EOI >>EOO
echo abc
EOI
name: echo
EOO
: name-operation
:
$* <<EOI >>EOO
a = 'b'
EOI
name: update
EOO
: preamble
:
{
: disambiguate
:
$* <<EOI >>~%EOO%
echo abc | set v
cat abc | set v
diag copy >= $>
cp <- $>
EOI
echo abc | set v
cat abc | set v
%diag: copy >= .+file\{driver\.\}%
EOO
: name
:
$* <<EOI >>EOO
n = foo
diag copy $n
cp $n $>
EOI
diag: copy foo
EOO
: quoted
:
$* <<EOI >'diag: foo'
f = foo
diag "$f"
EOI
: quoted-eval
:
$* <<EOI >'diag: foo'
f = foo
diag "($f)"
EOI
: temp_dir
:
{
test.options += -t
: no
:
$* <<EOI >false
f = foo
diag $f
f = $~/f
foo "$f"
EOI
: no-depdb
:
$* <<EOI >false
f = $~/f
depdb hash "$f"
diag $f
f = $~/f
foo "$f"
EOI
: yes
:
$* <<EOI >true
f = $~/f
diag $f
foo $f
EOI
: yes-depdb
:
$* <<EOI >true
f = $~/f
depdb hash "$f"
f = $~/t
diag $f
f = $~/f
foo "$f"
EOI
}
}
: ambiguity
:
{
: name
:
$* test <<EOI 2>>EOE != 0
echo abc
diag xyz
EOI
buildfile:12:1: error: both low-verbosity script diagnostics name and 'diag' builtin call
buildfile:10: info: script name specified here
EOE
: diag
:
$* <<EOI 2>>EOE != 0
echo abc
diag abc
cat abc
diag xyz
EOI
buildfile:14:1: error: multiple 'diag' builtin calls
buildfile:12:1: info: previous call is here
EOE
: names
:
$* <<EOI 2>>EOE != 0
cp abc xyz
cat xyz
EOI
buildfile:11:1: error: low-verbosity script diagnostics name is ambiguous
buildfile:11:1: info: could be 'cp'
buildfile:12:1: info: could be 'cat'
info: consider specifying it explicitly with the 'diag' recipe attribute
info: or provide custom low-verbosity diagnostics with the 'diag' builtin
EOE
}
: inside-if
:
$* <<EOI 2>>EOE != 0
if true
diag copy >= $>
fi
EOI
buildfile:12:3: error: 'diag' call inside flow control construct
EOE
: inside-if-cond
:
$* <<EOI 2>>EOE != 0
if diag copy >= $>
true
fi
EOI
buildfile:11:4: error: 'diag' call inside flow control construct
EOE
: second-command
:
$* <<EOI 2>>EOE != 0
true && diag copy >= $>
EOI
buildfile:11:9: error: 'diag' call must be the only command
EOE
: via-env
:
$* <<EOI 2>>EOE != 0
env -- diag copy >= $>
EOI
buildfile:11:8: error: 'diag' call via 'env' builtin
EOE
: before-depdb
:
$* <<EOI 2>>EOE != 0
diag test
depdb clear
EOI
buildfile:11:1: error: 'diag' builtin call before 'depdb' call
buildfile:12:1: info: 'depdb' call is here
EOE
|