aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_syntax
diff options
context:
space:
mode:
authorbors[bot] <bors[bot]@users.noreply.github.com>2018-12-29 12:50:34 +0000
committerbors[bot] <bors[bot]@users.noreply.github.com>2018-12-29 12:50:34 +0000
commit4a3d6aa26a1c71dadc91f37f9d5f8662b51c138a (patch)
tree5877d2665edf70dcc3398f90dffd11dc85aa37b8 /crates/ra_syntax
parent9220641ba4d3c7a95db7355d9999da54d455607c (diff)
parentb67a4e7a57f5569de0de67d625b02378866ac3ec (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]>
Diffstat (limited to 'crates/ra_syntax')
-rw-r--r--crates/ra_syntax/fuzz/Cargo.lock530
-rw-r--r--crates/ra_syntax/src/string_lexing/parser.rs2
-rw-r--r--crates/ra_syntax/src/validation/char.rs2
-rw-r--r--crates/ra_syntax/tests/data/parser/fuzz-failures/0002.rs1
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]]
2name = "arbitrary"
3version = "0.1.1"
4source = "registry+https://github.com/rust-lang/crates.io-index"
5
6[[package]]
7name = "arrayvec"
8version = "0.4.10"
9source = "registry+https://github.com/rust-lang/crates.io-index"
10dependencies = [
11 "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
12]
13
14[[package]]
15name = "bit-set"
16version = "0.5.0"
17source = "registry+https://github.com/rust-lang/crates.io-index"
18dependencies = [
19 "bit-vec 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
20]
21
22[[package]]
23name = "bit-vec"
24version = "0.5.0"
25source = "registry+https://github.com/rust-lang/crates.io-index"
26
27[[package]]
28name = "bitflags"
29version = "1.0.4"
30source = "registry+https://github.com/rust-lang/crates.io-index"
31
32[[package]]
33name = "byteorder"
34version = "1.2.7"
35source = "registry+https://github.com/rust-lang/crates.io-index"
36
37[[package]]
38name = "cc"
39version = "1.0.28"
40source = "registry+https://github.com/rust-lang/crates.io-index"
41
42[[package]]
43name = "cfg-if"
44version = "0.1.6"
45source = "registry+https://github.com/rust-lang/crates.io-index"
46
47[[package]]
48name = "cloudabi"
49version = "0.0.3"
50source = "registry+https://github.com/rust-lang/crates.io-index"
51dependencies = [
52 "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
53]
54
55[[package]]
56name = "drop_bomb"
57version = "0.1.4"
58source = "registry+https://github.com/rust-lang/crates.io-index"
59
60[[package]]
61name = "either"
62version = "1.5.0"
63source = "registry+https://github.com/rust-lang/crates.io-index"
64
65[[package]]
66name = "fnv"
67version = "1.0.6"
68source = "registry+https://github.com/rust-lang/crates.io-index"
69
70[[package]]
71name = "fuchsia-zircon"
72version = "0.3.3"
73source = "registry+https://github.com/rust-lang/crates.io-index"
74dependencies = [
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]]
80name = "fuchsia-zircon-sys"
81version = "0.3.3"
82source = "registry+https://github.com/rust-lang/crates.io-index"
83
84[[package]]
85name = "itertools"
86version = "0.8.0"
87source = "registry+https://github.com/rust-lang/crates.io-index"
88dependencies = [
89 "either 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
90]
91
92[[package]]
93name = "lazy_static"
94version = "1.2.0"
95source = "registry+https://github.com/rust-lang/crates.io-index"
96
97[[package]]
98name = "libc"
99version = "0.2.45"
100source = "registry+https://github.com/rust-lang/crates.io-index"
101
102[[package]]
103name = "libfuzzer-sys"
104version = "0.1.0"
105source = "git+https://github.com/rust-fuzz/libfuzzer-sys.git#4a413199b5cb1bbed6a1d157b2342b925f8464ac"
106dependencies = [
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]]
112name = "lock_api"
113version = "0.1.5"
114source = "registry+https://github.com/rust-lang/crates.io-index"
115dependencies = [
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]]
121name = "nodrop"
122version = "0.1.13"
123source = "registry+https://github.com/rust-lang/crates.io-index"
124
125[[package]]
126name = "num-traits"
127version = "0.2.6"
128source = "registry+https://github.com/rust-lang/crates.io-index"
129
130[[package]]
131name = "owning_ref"
132version = "0.4.0"
133source = "registry+https://github.com/rust-lang/crates.io-index"
134dependencies = [
135 "stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
136]
137
138[[package]]
139name = "parking_lot"
140version = "0.6.4"
141source = "registry+https://github.com/rust-lang/crates.io-index"
142dependencies = [
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]]
148name = "parking_lot"
149version = "0.7.0"
150source = "registry+https://github.com/rust-lang/crates.io-index"
151dependencies = [
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]]
157name = "parking_lot_core"
158version = "0.3.1"
159source = "registry+https://github.com/rust-lang/crates.io-index"
160dependencies = [
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]]
169name = "parking_lot_core"
170version = "0.4.0"
171source = "registry+https://github.com/rust-lang/crates.io-index"
172dependencies = [
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]]
181name = "proptest"
182version = "0.8.7"
183source = "registry+https://github.com/rust-lang/crates.io-index"
184dependencies = [
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]]
198name = "quick-error"
199version = "1.2.2"
200source = "registry+https://github.com/rust-lang/crates.io-index"
201
202[[package]]
203name = "ra_syntax"
204version = "0.1.0"
205dependencies = [
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]]
217name = "ra_syntax-fuzz"
218version = "0.0.1"
219dependencies = [
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]]
225name = "ra_text_edit"
226version = "0.1.0"
227dependencies = [
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]]
233name = "rand"
234version = "0.5.5"
235source = "registry+https://github.com/rust-lang/crates.io-index"
236dependencies = [
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]]
245name = "rand"
246version = "0.6.1"
247source = "registry+https://github.com/rust-lang/crates.io-index"
248dependencies = [
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]]
263name = "rand_chacha"
264version = "0.1.0"
265source = "registry+https://github.com/rust-lang/crates.io-index"
266dependencies = [
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]]
272name = "rand_core"
273version = "0.2.2"
274source = "registry+https://github.com/rust-lang/crates.io-index"
275dependencies = [
276 "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
277]
278
279[[package]]
280name = "rand_core"
281version = "0.3.0"
282source = "registry+https://github.com/rust-lang/crates.io-index"
283
284[[package]]
285name = "rand_hc"
286version = "0.1.0"
287source = "registry+https://github.com/rust-lang/crates.io-index"
288dependencies = [
289 "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
290]
291
292[[package]]
293name = "rand_isaac"
294version = "0.1.1"
295source = "registry+https://github.com/rust-lang/crates.io-index"
296dependencies = [
297 "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
298]
299
300[[package]]
301name = "rand_pcg"
302version = "0.1.1"
303source = "registry+https://github.com/rust-lang/crates.io-index"
304dependencies = [
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]]
310name = "rand_xorshift"
311version = "0.1.0"
312source = "registry+https://github.com/rust-lang/crates.io-index"
313dependencies = [
314 "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
315]
316
317[[package]]
318name = "redox_syscall"
319version = "0.1.49"
320source = "registry+https://github.com/rust-lang/crates.io-index"
321
322[[package]]
323name = "regex-syntax"
324version = "0.6.4"
325source = "registry+https://github.com/rust-lang/crates.io-index"
326dependencies = [
327 "ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
328]
329
330[[package]]
331name = "remove_dir_all"
332version = "0.5.1"
333source = "registry+https://github.com/rust-lang/crates.io-index"
334dependencies = [
335 "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
336]
337
338[[package]]
339name = "rowan"
340version = "0.1.3"
341source = "registry+https://github.com/rust-lang/crates.io-index"
342dependencies = [
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]]
349name = "rustc_version"
350version = "0.2.3"
351source = "registry+https://github.com/rust-lang/crates.io-index"
352dependencies = [
353 "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
354]
355
356[[package]]
357name = "rusty-fork"
358version = "0.2.1"
359source = "registry+https://github.com/rust-lang/crates.io-index"
360dependencies = [
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]]
368name = "scopeguard"
369version = "0.3.3"
370source = "registry+https://github.com/rust-lang/crates.io-index"
371
372[[package]]
373name = "semver"
374version = "0.9.0"
375source = "registry+https://github.com/rust-lang/crates.io-index"
376dependencies = [
377 "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
378]
379
380[[package]]
381name = "semver-parser"
382version = "0.7.0"
383source = "registry+https://github.com/rust-lang/crates.io-index"
384
385[[package]]
386name = "smallvec"
387version = "0.6.7"
388source = "registry+https://github.com/rust-lang/crates.io-index"
389dependencies = [
390 "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
391]
392
393[[package]]
394name = "smol_str"
395version = "0.1.8"
396source = "registry+https://github.com/rust-lang/crates.io-index"
397
398[[package]]
399name = "stable_deref_trait"
400version = "1.1.1"
401source = "registry+https://github.com/rust-lang/crates.io-index"
402
403[[package]]
404name = "tempfile"
405version = "3.0.5"
406source = "registry+https://github.com/rust-lang/crates.io-index"
407dependencies = [
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]]
417name = "text_unit"
418version = "0.1.5"
419source = "registry+https://github.com/rust-lang/crates.io-index"
420
421[[package]]
422name = "ucd-util"
423version = "0.1.3"
424source = "registry+https://github.com/rust-lang/crates.io-index"
425
426[[package]]
427name = "unicode-xid"
428version = "0.1.0"
429source = "registry+https://github.com/rust-lang/crates.io-index"
430
431[[package]]
432name = "unreachable"
433version = "1.0.0"
434source = "registry+https://github.com/rust-lang/crates.io-index"
435dependencies = [
436 "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
437]
438
439[[package]]
440name = "void"
441version = "1.0.2"
442source = "registry+https://github.com/rust-lang/crates.io-index"
443
444[[package]]
445name = "wait-timeout"
446version = "0.1.5"
447source = "registry+https://github.com/rust-lang/crates.io-index"
448dependencies = [
449 "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)",
450]
451
452[[package]]
453name = "winapi"
454version = "0.3.6"
455source = "registry+https://github.com/rust-lang/crates.io-index"
456dependencies = [
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]]
462name = "winapi-i686-pc-windows-gnu"
463version = "0.4.0"
464source = "registry+https://github.com/rust-lang/crates.io-index"
465
466[[package]]
467name = "winapi-x86_64-pc-windows-gnu"
468version = "0.4.0"
469source = "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
71fn validate_ascii_escape(text: &str, range: TextRange, errors: &mut Vec<SyntaxError>) { 71fn 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