diff options
author | bors[bot] <bors[bot]@users.noreply.github.com> | 2018-12-29 12:50:34 +0000 |
---|---|---|
committer | bors[bot] <bors[bot]@users.noreply.github.com> | 2018-12-29 12:50:34 +0000 |
commit | 4a3d6aa26a1c71dadc91f37f9d5f8662b51c138a (patch) | |
tree | 5877d2665edf70dcc3398f90dffd11dc85aa37b8 | |
parent | 9220641ba4d3c7a95db7355d9999da54d455607c (diff) | |
parent | b67a4e7a57f5569de0de67d625b02378866ac3ec (diff) |
Merge #356
356: Fix a bug in char literal validation discovered through fuzzing r=matklad a=DJMcNab
We also add a Cargo.lock to the fuzzing directory, as that isn't gitignored automatically, so I imagine it should be committed.
Co-authored-by: DJMcNab <[email protected]>
-rw-r--r-- | crates/ra_syntax/fuzz/Cargo.lock | 530 | ||||
-rw-r--r-- | crates/ra_syntax/src/string_lexing/parser.rs | 2 | ||||
-rw-r--r-- | crates/ra_syntax/src/validation/char.rs | 2 | ||||
-rw-r--r-- | crates/ra_syntax/tests/data/parser/fuzz-failures/0002.rs | 1 |
4 files changed, 533 insertions, 2 deletions
diff --git a/crates/ra_syntax/fuzz/Cargo.lock b/crates/ra_syntax/fuzz/Cargo.lock new file mode 100644 index 000000000..e68fe7f61 --- /dev/null +++ b/crates/ra_syntax/fuzz/Cargo.lock | |||
@@ -0,0 +1,530 @@ | |||
1 | [[package]] | ||
2 | name = "arbitrary" | ||
3 | version = "0.1.1" | ||
4 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
5 | |||
6 | [[package]] | ||
7 | name = "arrayvec" | ||
8 | version = "0.4.10" | ||
9 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
10 | dependencies = [ | ||
11 | "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", | ||
12 | ] | ||
13 | |||
14 | [[package]] | ||
15 | name = "bit-set" | ||
16 | version = "0.5.0" | ||
17 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
18 | dependencies = [ | ||
19 | "bit-vec 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||
20 | ] | ||
21 | |||
22 | [[package]] | ||
23 | name = "bit-vec" | ||
24 | version = "0.5.0" | ||
25 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
26 | |||
27 | [[package]] | ||
28 | name = "bitflags" | ||
29 | version = "1.0.4" | ||
30 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
31 | |||
32 | [[package]] | ||
33 | name = "byteorder" | ||
34 | version = "1.2.7" | ||
35 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
36 | |||
37 | [[package]] | ||
38 | name = "cc" | ||
39 | version = "1.0.28" | ||
40 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
41 | |||
42 | [[package]] | ||
43 | name = "cfg-if" | ||
44 | version = "0.1.6" | ||
45 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
46 | |||
47 | [[package]] | ||
48 | name = "cloudabi" | ||
49 | version = "0.0.3" | ||
50 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
51 | dependencies = [ | ||
52 | "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", | ||
53 | ] | ||
54 | |||
55 | [[package]] | ||
56 | name = "drop_bomb" | ||
57 | version = "0.1.4" | ||
58 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
59 | |||
60 | [[package]] | ||
61 | name = "either" | ||
62 | version = "1.5.0" | ||
63 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
64 | |||
65 | [[package]] | ||
66 | name = "fnv" | ||
67 | version = "1.0.6" | ||
68 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
69 | |||
70 | [[package]] | ||
71 | name = "fuchsia-zircon" | ||
72 | version = "0.3.3" | ||
73 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
74 | dependencies = [ | ||
75 | "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", | ||
76 | "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", | ||
77 | ] | ||
78 | |||
79 | [[package]] | ||
80 | name = "fuchsia-zircon-sys" | ||
81 | version = "0.3.3" | ||
82 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
83 | |||
84 | [[package]] | ||
85 | name = "itertools" | ||
86 | version = "0.8.0" | ||
87 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
88 | dependencies = [ | ||
89 | "either 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||
90 | ] | ||
91 | |||
92 | [[package]] | ||
93 | name = "lazy_static" | ||
94 | version = "1.2.0" | ||
95 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
96 | |||
97 | [[package]] | ||
98 | name = "libc" | ||
99 | version = "0.2.45" | ||
100 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
101 | |||
102 | [[package]] | ||
103 | name = "libfuzzer-sys" | ||
104 | version = "0.1.0" | ||
105 | source = "git+https://github.com/rust-fuzz/libfuzzer-sys.git#4a413199b5cb1bbed6a1d157b2342b925f8464ac" | ||
106 | dependencies = [ | ||
107 | "arbitrary 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", | ||
108 | "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", | ||
109 | ] | ||
110 | |||
111 | [[package]] | ||
112 | name = "lock_api" | ||
113 | version = "0.1.5" | ||
114 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
115 | dependencies = [ | ||
116 | "owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||
117 | "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", | ||
118 | ] | ||
119 | |||
120 | [[package]] | ||
121 | name = "nodrop" | ||
122 | version = "0.1.13" | ||
123 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
124 | |||
125 | [[package]] | ||
126 | name = "num-traits" | ||
127 | version = "0.2.6" | ||
128 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
129 | |||
130 | [[package]] | ||
131 | name = "owning_ref" | ||
132 | version = "0.4.0" | ||
133 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
134 | dependencies = [ | ||
135 | "stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", | ||
136 | ] | ||
137 | |||
138 | [[package]] | ||
139 | name = "parking_lot" | ||
140 | version = "0.6.4" | ||
141 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
142 | dependencies = [ | ||
143 | "lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", | ||
144 | "parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", | ||
145 | ] | ||
146 | |||
147 | [[package]] | ||
148 | name = "parking_lot" | ||
149 | version = "0.7.0" | ||
150 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
151 | dependencies = [ | ||
152 | "lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", | ||
153 | "parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||
154 | ] | ||
155 | |||
156 | [[package]] | ||
157 | name = "parking_lot_core" | ||
158 | version = "0.3.1" | ||
159 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
160 | dependencies = [ | ||
161 | "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", | ||
162 | "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", | ||
163 | "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", | ||
164 | "smallvec 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", | ||
165 | "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", | ||
166 | ] | ||
167 | |||
168 | [[package]] | ||
169 | name = "parking_lot_core" | ||
170 | version = "0.4.0" | ||
171 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
172 | dependencies = [ | ||
173 | "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", | ||
174 | "rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", | ||
175 | "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", | ||
176 | "smallvec 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", | ||
177 | "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", | ||
178 | ] | ||
179 | |||
180 | [[package]] | ||
181 | name = "proptest" | ||
182 | version = "0.8.7" | ||
183 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
184 | dependencies = [ | ||
185 | "bit-set 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||
186 | "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", | ||
187 | "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", | ||
188 | "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||
189 | "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", | ||
190 | "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", | ||
191 | "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", | ||
192 | "regex-syntax 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", | ||
193 | "rusty-fork 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", | ||
194 | "tempfile 3.0.5 (registry+https://github.com/rust-lang/crates.io-index)", | ||
195 | ] | ||
196 | |||
197 | [[package]] | ||
198 | name = "quick-error" | ||
199 | version = "1.2.2" | ||
200 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
201 | |||
202 | [[package]] | ||
203 | name = "ra_syntax" | ||
204 | version = "0.1.0" | ||
205 | dependencies = [ | ||
206 | "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", | ||
207 | "drop_bomb 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", | ||
208 | "itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||
209 | "parking_lot 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||
210 | "ra_text_edit 0.1.0", | ||
211 | "rowan 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", | ||
212 | "text_unit 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", | ||
213 | "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||
214 | ] | ||
215 | |||
216 | [[package]] | ||
217 | name = "ra_syntax-fuzz" | ||
218 | version = "0.0.1" | ||
219 | dependencies = [ | ||
220 | "libfuzzer-sys 0.1.0 (git+https://github.com/rust-fuzz/libfuzzer-sys.git)", | ||
221 | "ra_syntax 0.1.0", | ||
222 | ] | ||
223 | |||
224 | [[package]] | ||
225 | name = "ra_text_edit" | ||
226 | version = "0.1.0" | ||
227 | dependencies = [ | ||
228 | "proptest 0.8.7 (registry+https://github.com/rust-lang/crates.io-index)", | ||
229 | "text_unit 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", | ||
230 | ] | ||
231 | |||
232 | [[package]] | ||
233 | name = "rand" | ||
234 | version = "0.5.5" | ||
235 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
236 | dependencies = [ | ||
237 | "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", | ||
238 | "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", | ||
239 | "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", | ||
240 | "rand_core 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", | ||
241 | "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", | ||
242 | ] | ||
243 | |||
244 | [[package]] | ||
245 | name = "rand" | ||
246 | version = "0.6.1" | ||
247 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
248 | dependencies = [ | ||
249 | "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", | ||
250 | "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", | ||
251 | "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", | ||
252 | "rand_chacha 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||
253 | "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||
254 | "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||
255 | "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", | ||
256 | "rand_pcg 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", | ||
257 | "rand_xorshift 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||
258 | "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", | ||
259 | "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", | ||
260 | ] | ||
261 | |||
262 | [[package]] | ||
263 | name = "rand_chacha" | ||
264 | version = "0.1.0" | ||
265 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
266 | dependencies = [ | ||
267 | "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||
268 | "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", | ||
269 | ] | ||
270 | |||
271 | [[package]] | ||
272 | name = "rand_core" | ||
273 | version = "0.2.2" | ||
274 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
275 | dependencies = [ | ||
276 | "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||
277 | ] | ||
278 | |||
279 | [[package]] | ||
280 | name = "rand_core" | ||
281 | version = "0.3.0" | ||
282 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
283 | |||
284 | [[package]] | ||
285 | name = "rand_hc" | ||
286 | version = "0.1.0" | ||
287 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
288 | dependencies = [ | ||
289 | "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||
290 | ] | ||
291 | |||
292 | [[package]] | ||
293 | name = "rand_isaac" | ||
294 | version = "0.1.1" | ||
295 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
296 | dependencies = [ | ||
297 | "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||
298 | ] | ||
299 | |||
300 | [[package]] | ||
301 | name = "rand_pcg" | ||
302 | version = "0.1.1" | ||
303 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
304 | dependencies = [ | ||
305 | "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||
306 | "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", | ||
307 | ] | ||
308 | |||
309 | [[package]] | ||
310 | name = "rand_xorshift" | ||
311 | version = "0.1.0" | ||
312 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
313 | dependencies = [ | ||
314 | "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||
315 | ] | ||
316 | |||
317 | [[package]] | ||
318 | name = "redox_syscall" | ||
319 | version = "0.1.49" | ||
320 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
321 | |||
322 | [[package]] | ||
323 | name = "regex-syntax" | ||
324 | version = "0.6.4" | ||
325 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
326 | dependencies = [ | ||
327 | "ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", | ||
328 | ] | ||
329 | |||
330 | [[package]] | ||
331 | name = "remove_dir_all" | ||
332 | version = "0.5.1" | ||
333 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
334 | dependencies = [ | ||
335 | "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", | ||
336 | ] | ||
337 | |||
338 | [[package]] | ||
339 | name = "rowan" | ||
340 | version = "0.1.3" | ||
341 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
342 | dependencies = [ | ||
343 | "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", | ||
344 | "smol_str 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", | ||
345 | "text_unit 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", | ||
346 | ] | ||
347 | |||
348 | [[package]] | ||
349 | name = "rustc_version" | ||
350 | version = "0.2.3" | ||
351 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
352 | dependencies = [ | ||
353 | "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||
354 | ] | ||
355 | |||
356 | [[package]] | ||
357 | name = "rusty-fork" | ||
358 | version = "0.2.1" | ||
359 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
360 | dependencies = [ | ||
361 | "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", | ||
362 | "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", | ||
363 | "tempfile 3.0.5 (registry+https://github.com/rust-lang/crates.io-index)", | ||
364 | "wait-timeout 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", | ||
365 | ] | ||
366 | |||
367 | [[package]] | ||
368 | name = "scopeguard" | ||
369 | version = "0.3.3" | ||
370 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
371 | |||
372 | [[package]] | ||
373 | name = "semver" | ||
374 | version = "0.9.0" | ||
375 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
376 | dependencies = [ | ||
377 | "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||
378 | ] | ||
379 | |||
380 | [[package]] | ||
381 | name = "semver-parser" | ||
382 | version = "0.7.0" | ||
383 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
384 | |||
385 | [[package]] | ||
386 | name = "smallvec" | ||
387 | version = "0.6.7" | ||
388 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
389 | dependencies = [ | ||
390 | "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||
391 | ] | ||
392 | |||
393 | [[package]] | ||
394 | name = "smol_str" | ||
395 | version = "0.1.8" | ||
396 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
397 | |||
398 | [[package]] | ||
399 | name = "stable_deref_trait" | ||
400 | version = "1.1.1" | ||
401 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
402 | |||
403 | [[package]] | ||
404 | name = "tempfile" | ||
405 | version = "3.0.5" | ||
406 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
407 | dependencies = [ | ||
408 | "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", | ||
409 | "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", | ||
410 | "rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", | ||
411 | "redox_syscall 0.1.49 (registry+https://github.com/rust-lang/crates.io-index)", | ||
412 | "remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", | ||
413 | "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", | ||
414 | ] | ||
415 | |||
416 | [[package]] | ||
417 | name = "text_unit" | ||
418 | version = "0.1.5" | ||
419 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
420 | |||
421 | [[package]] | ||
422 | name = "ucd-util" | ||
423 | version = "0.1.3" | ||
424 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
425 | |||
426 | [[package]] | ||
427 | name = "unicode-xid" | ||
428 | version = "0.1.0" | ||
429 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
430 | |||
431 | [[package]] | ||
432 | name = "unreachable" | ||
433 | version = "1.0.0" | ||
434 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
435 | dependencies = [ | ||
436 | "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", | ||
437 | ] | ||
438 | |||
439 | [[package]] | ||
440 | name = "void" | ||
441 | version = "1.0.2" | ||
442 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
443 | |||
444 | [[package]] | ||
445 | name = "wait-timeout" | ||
446 | version = "0.1.5" | ||
447 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
448 | dependencies = [ | ||
449 | "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", | ||
450 | ] | ||
451 | |||
452 | [[package]] | ||
453 | name = "winapi" | ||
454 | version = "0.3.6" | ||
455 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
456 | dependencies = [ | ||
457 | "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||
458 | "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||
459 | ] | ||
460 | |||
461 | [[package]] | ||
462 | name = "winapi-i686-pc-windows-gnu" | ||
463 | version = "0.4.0" | ||
464 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
465 | |||
466 | [[package]] | ||
467 | name = "winapi-x86_64-pc-windows-gnu" | ||
468 | version = "0.4.0" | ||
469 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
470 | |||
471 | [metadata] | ||
472 | "checksum arbitrary 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6c7d1523aa3a127adf8b27af2404c03c12825b4c4d0698f01648d63fa9df62ee" | ||
473 | "checksum arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "92c7fb76bc8826a8b33b4ee5bb07a247a81e76764ab4d55e8f73e3a4d8808c71" | ||
474 | "checksum bit-set 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6f1efcc46c18245a69c38fcc5cc650f16d3a59d034f3106e9ed63748f695730a" | ||
475 | "checksum bit-vec 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4440d5cb623bb7390ae27fec0bb6c61111969860f8e3ae198bfa0663645e67cf" | ||
476 | "checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12" | ||
477 | "checksum byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "94f88df23a25417badc922ab0f5716cc1330e87f71ddd9203b3a3ccd9cedf75d" | ||
478 | "checksum cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4a8b715cb4597106ea87c7c84b2f1d452c7492033765df7f32651e66fcf749" | ||
479 | "checksum cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "082bb9b28e00d3c9d39cc03e64ce4cea0f1bb9b3fde493f0cbc008472d22bdf4" | ||
480 | "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" | ||
481 | "checksum drop_bomb 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "69b26e475fd29098530e709294e94e661974c851aed42512793f120fed4e199f" | ||
482 | "checksum either 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3be565ca5c557d7f59e7cfcf1844f9e3033650c929c6566f511e8005f205c1d0" | ||
483 | "checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" | ||
484 | "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" | ||
485 | "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" | ||
486 | "checksum itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5b8467d9c1cebe26feb08c640139247fac215782d35371ade9a2136ed6085358" | ||
487 | "checksum lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a374c89b9db55895453a74c1e38861d9deec0b01b405a82516e9d5de4820dea1" | ||
488 | "checksum libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)" = "2d2857ec59fadc0773853c664d2d18e7198e83883e7060b63c924cb077bd5c74" | ||
489 | "checksum libfuzzer-sys 0.1.0 (git+https://github.com/rust-fuzz/libfuzzer-sys.git)" = "<none>" | ||
490 | "checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" | ||
491 | "checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" | ||
492 | "checksum num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0b3a5d7cc97d6d30d8b9bc8fa19bf45349ffe46241e8816f50f62f6d6aaabee1" | ||
493 | "checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13" | ||
494 | "checksum parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f0802bff09003b291ba756dc7e79313e51cc31667e94afbe847def490424cde5" | ||
495 | "checksum parking_lot 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9723236a9525c757d9725b993511e3fc941e33f27751942232f0058298297edf" | ||
496 | "checksum parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ad7f7e6ebdc79edff6fdcb87a55b620174f7a989e3eb31b65231f4af57f00b8c" | ||
497 | "checksum parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9" | ||
498 | "checksum proptest 0.8.7 (registry+https://github.com/rust-lang/crates.io-index)" = "926d0604475349f463fe44130aae73f2294b5309ab2ca0310b998bd334ef191f" | ||
499 | "checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" | ||
500 | "checksum rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e464cd887e869cddcae8792a4ee31d23c7edd516700695608f5b98c67ee0131c" | ||
501 | "checksum rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ae9d223d52ae411a33cf7e54ec6034ec165df296ccd23533d671a28252b6f66a" | ||
502 | "checksum rand_chacha 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "771b009e3a508cb67e8823dda454aaa5368c7bc1c16829fb77d3e980440dd34a" | ||
503 | "checksum rand_core 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1961a422c4d189dfb50ffa9320bf1f2a9bd54ecb92792fb9477f99a1045f3372" | ||
504 | "checksum rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0905b6b7079ec73b314d4c748701f6931eb79fd97c668caa3f1899b22b32c6db" | ||
505 | "checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" | ||
506 | "checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" | ||
507 | "checksum rand_pcg 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "086bd09a33c7044e56bb44d5bdde5a60e7f119a9e95b0775f545de759a32fe05" | ||
508 | "checksum rand_xorshift 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "effa3fcaa47e18db002bdde6060944b6d2f9cfd8db471c30e873448ad9187be3" | ||
509 | "checksum redox_syscall 0.1.49 (registry+https://github.com/rust-lang/crates.io-index)" = "f22c50afdcf3f0a31ebb6b47697f6a7c5e5a24967e842858118bce0615f0afad" | ||
510 | "checksum regex-syntax 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4e47a2ed29da7a9e1960e1639e7a982e6edc6d49be308a3b02daf511504a16d1" | ||
511 | "checksum remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3488ba1b9a2084d38645c4c08276a1752dcbf2c7130d74f1569681ad5d2799c5" | ||
512 | "checksum rowan 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a9ccca91953e9c549cac18e8f41daa5d49dad1c9a4c9bb977ac42718bb34e1bf" | ||
513 | "checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" | ||
514 | "checksum rusty-fork 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9591f190d2852720b679c21f66ad929f9f1d7bb09d1193c26167586029d8489c" | ||
515 | "checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" | ||
516 | "checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" | ||
517 | "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" | ||
518 | "checksum smallvec 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "b73ea3738b47563803ef814925e69be00799a8c07420be8b996f8e98fb2336db" | ||
519 | "checksum smol_str 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "486a74e9b9fc53373808f7a17e10fc728adcb1fbe272292271d8bea61175e181" | ||
520 | "checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" | ||
521 | "checksum tempfile 3.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "7e91405c14320e5c79b3d148e1c86f40749a36e490642202a31689cb1a3452b2" | ||
522 | "checksum text_unit 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "8009d7bdbd896a7e09b595f8f9325a19047fc708653e60d0895202b82135048f" | ||
523 | "checksum ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "535c204ee4d8434478593480b8f86ab45ec9aae0e83c568ca81abf0fd0e88f86" | ||
524 | "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" | ||
525 | "checksum unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" | ||
526 | "checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" | ||
527 | "checksum wait-timeout 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "b9f3bf741a801531993db6478b95682117471f76916f5e690dd8d45395b09349" | ||
528 | "checksum winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "92c1eb33641e276cfa214a0522acad57be5c56b10cb348b3c5117db75f3ac4b0" | ||
529 | "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" | ||
530 | "checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" | ||
diff --git a/crates/ra_syntax/src/string_lexing/parser.rs b/crates/ra_syntax/src/string_lexing/parser.rs index 14c6015c2..e835382fc 100644 --- a/crates/ra_syntax/src/string_lexing/parser.rs +++ b/crates/ra_syntax/src/string_lexing/parser.rs | |||
@@ -82,7 +82,7 @@ impl<'a> Parser<'a> { | |||
82 | 82 | ||
83 | fn parse_escape(&mut self, start: TextUnit) -> StringComponent { | 83 | fn parse_escape(&mut self, start: TextUnit) -> StringComponent { |
84 | if self.peek().is_none() { | 84 | if self.peek().is_none() { |
85 | return StringComponent::new(TextRange::from_to(start, start), AsciiEscape); | 85 | return StringComponent::new(TextRange::from_to(start, self.get_pos()), AsciiEscape); |
86 | } | 86 | } |
87 | 87 | ||
88 | let next = self.advance(); | 88 | let next = self.advance(); |
diff --git a/crates/ra_syntax/src/validation/char.rs b/crates/ra_syntax/src/validation/char.rs index 19cd3830f..10d3d1dec 100644 --- a/crates/ra_syntax/src/validation/char.rs +++ b/crates/ra_syntax/src/validation/char.rs | |||
@@ -70,7 +70,7 @@ pub(super) fn validate_char_component( | |||
70 | 70 | ||
71 | fn validate_ascii_escape(text: &str, range: TextRange, errors: &mut Vec<SyntaxError>) { | 71 | fn validate_ascii_escape(text: &str, range: TextRange, errors: &mut Vec<SyntaxError>) { |
72 | if text.len() == 1 { | 72 | if text.len() == 1 { |
73 | // Escape sequence consists only of leading `\` | 73 | // Escape sequence consists only of leading `\` (only occurs at EOF, otherwise e.g. '\' is treated as an unclosed char containing a single quote `'`) |
74 | errors.push(SyntaxError::new(EmptyAsciiEscape, range)); | 74 | errors.push(SyntaxError::new(EmptyAsciiEscape, range)); |
75 | } else { | 75 | } else { |
76 | let escape_code = text.chars().skip(1).next().unwrap(); | 76 | let escape_code = text.chars().skip(1).next().unwrap(); |
diff --git a/crates/ra_syntax/tests/data/parser/fuzz-failures/0002.rs b/crates/ra_syntax/tests/data/parser/fuzz-failures/0002.rs new file mode 100644 index 000000000..f35dc7289 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/fuzz-failures/0002.rs | |||
@@ -0,0 +1 @@ | |||
!('\ \ No newline at end of file | |||