aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.travis.yml2
-rw-r--r--Cargo.lock212
-rw-r--r--crates/ra_syntax/Cargo.toml1
-rw-r--r--crates/ra_syntax/src/parsing/lexer.rs271
-rw-r--r--crates/ra_syntax/src/parsing/lexer/classes.rs26
-rw-r--r--crates/ra_syntax/src/parsing/lexer/comments.rs57
-rw-r--r--crates/ra_syntax/src/parsing/lexer/numbers.rs66
-rw-r--r--crates/ra_syntax/src/parsing/lexer/ptr.rs162
-rw-r--r--crates/ra_syntax/src/parsing/lexer/strings.rs112
-rw-r--r--crates/ra_syntax/tests/data/lexer/0004_numbers.txt12
-rw-r--r--crates/ra_syntax/tests/data/lexer/0014_unclosed_char.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0002_duplicate_shebang.txt38
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0030_string_suffixes.rs (renamed from crates/ra_syntax/tests/data/parser/err/0030_string_suffixes.rs)0
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0030_string_suffixes.txt (renamed from crates/ra_syntax/tests/data/parser/err/0030_string_suffixes.txt)13
14 files changed, 277 insertions, 697 deletions
diff --git a/.travis.yml b/.travis.yml
index 8ac01171f..e151cc8f0 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -16,7 +16,7 @@ matrix:
16 script: 16 script:
17 - rustup component add rustfmt 17 - rustup component add rustfmt
18 - rustup component add rust-src 18 - rustup component add rust-src
19 - printf "\n\n[profile.dev]\ndebug = false\nopt-level = 1\n" >> Cargo.toml 19 - printf "\n\n[profile.dev]\ndebug = false\n" >> Cargo.toml
20 - cargo test --no-run # let's measure compile time separately 20 - cargo test --no-run # let's measure compile time separately
21 - cargo test 21 - cargo test
22 env: 22 env:
diff --git a/Cargo.lock b/Cargo.lock
index 8feaf27ec..4ba079570 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -26,7 +26,7 @@ dependencies = [
26 26
27[[package]] 27[[package]]
28name = "atty" 28name = "atty"
29version = "0.2.12" 29version = "0.2.13"
30source = "registry+https://github.com/rust-lang/crates.io-index" 30source = "registry+https://github.com/rust-lang/crates.io-index"
31dependencies = [ 31dependencies = [
32 "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", 32 "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -35,7 +35,7 @@ dependencies = [
35 35
36[[package]] 36[[package]]
37name = "autocfg" 37name = "autocfg"
38version = "0.1.4" 38version = "0.1.5"
39source = "registry+https://github.com/rust-lang/crates.io-index" 39source = "registry+https://github.com/rust-lang/crates.io-index"
40 40
41[[package]] 41[[package]]
@@ -43,7 +43,7 @@ name = "backtrace"
43version = "0.2.3" 43version = "0.2.3"
44source = "registry+https://github.com/rust-lang/crates.io-index" 44source = "registry+https://github.com/rust-lang/crates.io-index"
45dependencies = [ 45dependencies = [
46 "backtrace-sys 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)", 46 "backtrace-sys 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)",
47 "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 47 "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
48 "dbghelp-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 48 "dbghelp-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
49 "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 49 "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -54,10 +54,10 @@ dependencies = [
54 54
55[[package]] 55[[package]]
56name = "backtrace" 56name = "backtrace"
57version = "0.3.32" 57version = "0.3.33"
58source = "registry+https://github.com/rust-lang/crates.io-index" 58source = "registry+https://github.com/rust-lang/crates.io-index"
59dependencies = [ 59dependencies = [
60 "backtrace-sys 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)", 60 "backtrace-sys 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)",
61 "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 61 "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
62 "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", 62 "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
63 "rustc-demangle 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", 63 "rustc-demangle 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -65,7 +65,7 @@ dependencies = [
65 65
66[[package]] 66[[package]]
67name = "backtrace-sys" 67name = "backtrace-sys"
68version = "0.1.30" 68version = "0.1.31"
69source = "registry+https://github.com/rust-lang/crates.io-index" 69source = "registry+https://github.com/rust-lang/crates.io-index"
70dependencies = [ 70dependencies = [
71 "cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", 71 "cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -143,8 +143,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
143dependencies = [ 143dependencies = [
144 "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 144 "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
145 "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", 145 "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
146 "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", 146 "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)",
147 "serde_derive 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", 147 "serde_derive 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)",
148 "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", 148 "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
149] 149]
150 150
@@ -221,7 +221,7 @@ dependencies = [
221 "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", 221 "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
222 "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", 222 "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)",
223 "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 223 "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
224 "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", 224 "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)",
225 "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", 225 "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
226] 226]
227 227
@@ -236,7 +236,7 @@ version = "2.33.0"
236source = "registry+https://github.com/rust-lang/crates.io-index" 236source = "registry+https://github.com/rust-lang/crates.io-index"
237dependencies = [ 237dependencies = [
238 "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", 238 "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
239 "atty 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", 239 "atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
240 "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 240 "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
241 "strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 241 "strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
242 "textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", 242 "textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -249,7 +249,7 @@ name = "clicolors-control"
249version = "1.0.0" 249version = "1.0.0"
250source = "registry+https://github.com/rust-lang/crates.io-index" 250source = "registry+https://github.com/rust-lang/crates.io-index"
251dependencies = [ 251dependencies = [
252 "atty 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", 252 "atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
253 "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 253 "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
254 "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", 254 "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
255 "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 255 "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -268,13 +268,13 @@ name = "console"
268version = "0.7.7" 268version = "0.7.7"
269source = "registry+https://github.com/rust-lang/crates.io-index" 269source = "registry+https://github.com/rust-lang/crates.io-index"
270dependencies = [ 270dependencies = [
271 "atty 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", 271 "atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
272 "clicolors-control 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 272 "clicolors-control 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
273 "encode_unicode 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", 273 "encode_unicode 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
274 "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 274 "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
275 "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", 275 "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
276 "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", 276 "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
277 "regex 1.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 277 "regex 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
278 "termios 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 278 "termios 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
279 "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 279 "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
280 "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 280 "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -353,7 +353,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
353dependencies = [ 353dependencies = [
354 "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", 354 "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
355 "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", 355 "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)",
356 "syn 0.15.39 (registry+https://github.com/rust-lang/crates.io-index)", 356 "syn 0.15.40 (registry+https://github.com/rust-lang/crates.io-index)",
357] 357]
358 358
359[[package]] 359[[package]]
@@ -423,7 +423,7 @@ name = "error-chain"
423version = "0.12.1" 423version = "0.12.1"
424source = "registry+https://github.com/rust-lang/crates.io-index" 424source = "registry+https://github.com/rust-lang/crates.io-index"
425dependencies = [ 425dependencies = [
426 "backtrace 0.3.32 (registry+https://github.com/rust-lang/crates.io-index)", 426 "backtrace 0.3.33 (registry+https://github.com/rust-lang/crates.io-index)",
427 "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 427 "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
428] 428]
429 429
@@ -432,7 +432,7 @@ name = "failure"
432version = "0.1.5" 432version = "0.1.5"
433source = "registry+https://github.com/rust-lang/crates.io-index" 433source = "registry+https://github.com/rust-lang/crates.io-index"
434dependencies = [ 434dependencies = [
435 "backtrace 0.3.32 (registry+https://github.com/rust-lang/crates.io-index)", 435 "backtrace 0.3.33 (registry+https://github.com/rust-lang/crates.io-index)",
436 "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 436 "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
437] 437]
438 438
@@ -443,7 +443,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
443dependencies = [ 443dependencies = [
444 "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", 444 "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
445 "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", 445 "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)",
446 "syn 0.15.39 (registry+https://github.com/rust-lang/crates.io-index)", 446 "syn 0.15.40 (registry+https://github.com/rust-lang/crates.io-index)",
447 "synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", 447 "synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)",
448] 448]
449 449
@@ -469,13 +469,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
469 469
470[[package]] 470[[package]]
471name = "flexi_logger" 471name = "flexi_logger"
472version = "0.13.3" 472version = "0.13.4"
473source = "registry+https://github.com/rust-lang/crates.io-index" 473source = "registry+https://github.com/rust-lang/crates.io-index"
474dependencies = [ 474dependencies = [
475 "chrono 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", 475 "chrono 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)",
476 "glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 476 "glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
477 "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", 477 "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)",
478 "regex 1.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 478 "regex 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
479 "yansi 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", 479 "yansi 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
480] 480]
481 481
@@ -508,7 +508,7 @@ dependencies = [
508 508
509[[package]] 509[[package]]
510name = "fst" 510name = "fst"
511version = "0.3.3" 511version = "0.3.5"
512source = "registry+https://github.com/rust-lang/crates.io-index" 512source = "registry+https://github.com/rust-lang/crates.io-index"
513dependencies = [ 513dependencies = [
514 "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 514 "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -538,10 +538,10 @@ name = "gen_lsp_server"
538version = "0.2.0" 538version = "0.2.0"
539dependencies = [ 539dependencies = [
540 "crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 540 "crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
541 "flexi_logger 0.13.3 (registry+https://github.com/rust-lang/crates.io-index)", 541 "flexi_logger 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)",
542 "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", 542 "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)",
543 "lsp-types 0.59.0 (registry+https://github.com/rust-lang/crates.io-index)", 543 "lsp-types 0.59.0 (registry+https://github.com/rust-lang/crates.io-index)",
544 "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", 544 "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)",
545 "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", 545 "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
546] 546]
547 547
@@ -609,7 +609,7 @@ dependencies = [
609 "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 609 "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
610 "number_prefix 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 610 "number_prefix 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
611 "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", 611 "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
612 "regex 1.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 612 "regex 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
613] 613]
614 614
615[[package]] 615[[package]]
@@ -632,7 +632,7 @@ dependencies = [
632 632
633[[package]] 633[[package]]
634name = "insta" 634name = "insta"
635version = "0.8.1" 635version = "0.8.2"
636source = "registry+https://github.com/rust-lang/crates.io-index" 636source = "registry+https://github.com/rust-lang/crates.io-index"
637dependencies = [ 637dependencies = [
638 "chrono 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", 638 "chrono 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -644,7 +644,7 @@ dependencies = [
644 "pest 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 644 "pest 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
645 "pest_derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 645 "pest_derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
646 "ron 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 646 "ron 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
647 "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", 647 "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)",
648 "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", 648 "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
649 "serde_yaml 0.8.9 (registry+https://github.com/rust-lang/crates.io-index)", 649 "serde_yaml 0.8.9 (registry+https://github.com/rust-lang/crates.io-index)",
650 "uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", 650 "uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -780,8 +780,8 @@ dependencies = [
780 "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 780 "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
781 "num-derive 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", 781 "num-derive 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)",
782 "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 782 "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
783 "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", 783 "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)",
784 "serde_derive 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", 784 "serde_derive 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)",
785 "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", 785 "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
786 "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 786 "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
787 "url_serde 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 787 "url_serde 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -875,7 +875,7 @@ dependencies = [
875 "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", 875 "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
876 "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", 876 "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)",
877 "mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)", 877 "mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
878 "walkdir 2.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 878 "walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)",
879 "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 879 "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
880] 880]
881 881
@@ -886,7 +886,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
886dependencies = [ 886dependencies = [
887 "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", 887 "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
888 "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", 888 "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)",
889 "syn 0.15.39 (registry+https://github.com/rust-lang/crates.io-index)", 889 "syn 0.15.40 (registry+https://github.com/rust-lang/crates.io-index)",
890] 890]
891 891
892[[package]] 892[[package]]
@@ -894,7 +894,7 @@ name = "num-integer"
894version = "0.1.41" 894version = "0.1.41"
895source = "registry+https://github.com/rust-lang/crates.io-index" 895source = "registry+https://github.com/rust-lang/crates.io-index"
896dependencies = [ 896dependencies = [
897 "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 897 "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
898 "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 898 "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
899] 899]
900 900
@@ -903,7 +903,7 @@ name = "num-traits"
903version = "0.2.8" 903version = "0.2.8"
904source = "registry+https://github.com/rust-lang/crates.io-index" 904source = "registry+https://github.com/rust-lang/crates.io-index"
905dependencies = [ 905dependencies = [
906 "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 906 "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
907] 907]
908 908
909[[package]] 909[[package]]
@@ -924,7 +924,7 @@ dependencies = [
924 924
925[[package]] 925[[package]]
926name = "once_cell" 926name = "once_cell"
927version = "0.2.3" 927version = "0.2.4"
928source = "registry+https://github.com/rust-lang/crates.io-index" 928source = "registry+https://github.com/rust-lang/crates.io-index"
929dependencies = [ 929dependencies = [
930 "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", 930 "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -956,7 +956,7 @@ version = "0.9.0"
956source = "registry+https://github.com/rust-lang/crates.io-index" 956source = "registry+https://github.com/rust-lang/crates.io-index"
957dependencies = [ 957dependencies = [
958 "lock_api 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 958 "lock_api 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
959 "parking_lot_core 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", 959 "parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
960 "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 960 "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
961] 961]
962 962
@@ -977,7 +977,7 @@ dependencies = [
977 977
978[[package]] 978[[package]]
979name = "parking_lot_core" 979name = "parking_lot_core"
980version = "0.6.0" 980version = "0.6.2"
981source = "registry+https://github.com/rust-lang/crates.io-index" 981source = "registry+https://github.com/rust-lang/crates.io-index"
982dependencies = [ 982dependencies = [
983 "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 983 "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1006,7 +1006,7 @@ dependencies = [
1006 "proc-macro-hack 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", 1006 "proc-macro-hack 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)",
1007 "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", 1007 "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
1008 "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", 1008 "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)",
1009 "syn 0.15.39 (registry+https://github.com/rust-lang/crates.io-index)", 1009 "syn 0.15.40 (registry+https://github.com/rust-lang/crates.io-index)",
1010] 1010]
1011 1011
1012[[package]] 1012[[package]]
@@ -1019,7 +1019,7 @@ name = "pest"
1019version = "2.1.1" 1019version = "2.1.1"
1020source = "registry+https://github.com/rust-lang/crates.io-index" 1020source = "registry+https://github.com/rust-lang/crates.io-index"
1021dependencies = [ 1021dependencies = [
1022 "ucd-trie 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1022 "ucd-trie 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
1023] 1023]
1024 1024
1025[[package]] 1025[[package]]
@@ -1040,7 +1040,7 @@ dependencies = [
1040 "pest_meta 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1040 "pest_meta 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
1041 "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", 1041 "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
1042 "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", 1042 "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)",
1043 "syn 0.15.39 (registry+https://github.com/rust-lang/crates.io-index)", 1043 "syn 0.15.40 (registry+https://github.com/rust-lang/crates.io-index)",
1044] 1044]
1045 1045
1046[[package]] 1046[[package]]
@@ -1074,7 +1074,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1074dependencies = [ 1074dependencies = [
1075 "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", 1075 "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
1076 "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", 1076 "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)",
1077 "syn 0.15.39 (registry+https://github.com/rust-lang/crates.io-index)", 1077 "syn 0.15.40 (registry+https://github.com/rust-lang/crates.io-index)",
1078] 1078]
1079 1079
1080[[package]] 1080[[package]]
@@ -1099,7 +1099,7 @@ dependencies = [
1099 "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", 1099 "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
1100 "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1100 "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
1101 "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1101 "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
1102 "regex-syntax 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", 1102 "regex-syntax 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)",
1103] 1103]
1104 1104
1105[[package]] 1105[[package]]
@@ -1127,7 +1127,7 @@ dependencies = [
1127 "format-buf 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 1127 "format-buf 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
1128 "itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 1128 "itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
1129 "join_to_string 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 1129 "join_to_string 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
1130 "once_cell 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 1130 "once_cell 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
1131 "ra_db 0.1.0", 1131 "ra_db 0.1.0",
1132 "ra_fmt 0.1.0", 1132 "ra_fmt 0.1.0",
1133 "ra_hir 0.1.0", 1133 "ra_hir 0.1.0",
@@ -1154,7 +1154,7 @@ name = "ra_cli"
1154version = "0.1.0" 1154version = "0.1.0"
1155dependencies = [ 1155dependencies = [
1156 "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", 1156 "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
1157 "flexi_logger 0.13.3 (registry+https://github.com/rust-lang/crates.io-index)", 1157 "flexi_logger 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)",
1158 "indicatif 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", 1158 "indicatif 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
1159 "ra_batch 0.1.0", 1159 "ra_batch 0.1.0",
1160 "ra_db 0.1.0", 1160 "ra_db 0.1.0",
@@ -1192,10 +1192,10 @@ dependencies = [
1192 "chalk-rust-ir 0.1.0 (git+https://github.com/rust-lang/chalk.git)", 1192 "chalk-rust-ir 0.1.0 (git+https://github.com/rust-lang/chalk.git)",
1193 "chalk-solve 0.1.0 (git+https://github.com/rust-lang/chalk.git)", 1193 "chalk-solve 0.1.0 (git+https://github.com/rust-lang/chalk.git)",
1194 "ena 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", 1194 "ena 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
1195 "insta 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", 1195 "insta 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)",
1196 "lalrpop-intern 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)", 1196 "lalrpop-intern 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)",
1197 "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", 1197 "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)",
1198 "once_cell 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 1198 "once_cell 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
1199 "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", 1199 "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
1200 "ra_arena 0.1.0", 1200 "ra_arena 0.1.0",
1201 "ra_db 0.1.0", 1201 "ra_db 0.1.0",
@@ -1213,8 +1213,8 @@ name = "ra_ide_api"
1213version = "0.1.0" 1213version = "0.1.0"
1214dependencies = [ 1214dependencies = [
1215 "format-buf 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 1215 "format-buf 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
1216 "fst 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 1216 "fst 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
1217 "insta 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", 1217 "insta 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)",
1218 "itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 1218 "itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
1219 "join_to_string 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 1219 "join_to_string 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
1220 "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", 1220 "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1240,7 +1240,7 @@ name = "ra_lsp_server"
1240version = "0.1.0" 1240version = "0.1.0"
1241dependencies = [ 1241dependencies = [
1242 "crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 1242 "crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
1243 "flexi_logger 0.13.3 (registry+https://github.com/rust-lang/crates.io-index)", 1243 "flexi_logger 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)",
1244 "gen_lsp_server 0.2.0", 1244 "gen_lsp_server 0.2.0",
1245 "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", 1245 "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)",
1246 "lsp-types 0.59.0 (registry+https://github.com/rust-lang/crates.io-index)", 1246 "lsp-types 0.59.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1253,7 +1253,7 @@ dependencies = [
1253 "ra_vfs 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", 1253 "ra_vfs 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)",
1254 "relative-path 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1254 "relative-path 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
1255 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 1255 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
1256 "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", 1256 "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)",
1257 "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", 1257 "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
1258 "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1258 "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
1259 "test_utils 0.1.0", 1259 "test_utils 0.1.0",
@@ -1286,12 +1286,12 @@ dependencies = [
1286name = "ra_prof" 1286name = "ra_prof"
1287version = "0.1.0" 1287version = "0.1.0"
1288dependencies = [ 1288dependencies = [
1289 "backtrace 0.3.32 (registry+https://github.com/rust-lang/crates.io-index)", 1289 "backtrace 0.3.33 (registry+https://github.com/rust-lang/crates.io-index)",
1290 "cpuprofiler 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 1290 "cpuprofiler 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
1291 "itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 1291 "itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
1292 "jemalloc-ctl 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 1292 "jemalloc-ctl 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
1293 "jemallocator 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 1293 "jemallocator 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
1294 "once_cell 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 1294 "once_cell 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
1295] 1295]
1296 1296
1297[[package]] 1297[[package]]
@@ -1304,22 +1304,31 @@ dependencies = [
1304 "ra_db 0.1.0", 1304 "ra_db 0.1.0",
1305 "relative-path 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1305 "relative-path 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
1306 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 1306 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
1307 "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", 1307 "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)",
1308 "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", 1308 "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
1309] 1309]
1310 1310
1311[[package]] 1311[[package]]
1312name = "ra_rustc_lexer"
1313version = "0.1.0-pre.1"
1314source = "registry+https://github.com/rust-lang/crates.io-index"
1315dependencies = [
1316 "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
1317]
1318
1319[[package]]
1312name = "ra_syntax" 1320name = "ra_syntax"
1313version = "0.1.0" 1321version = "0.1.0"
1314dependencies = [ 1322dependencies = [
1315 "itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 1323 "itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
1316 "ra_parser 0.1.0", 1324 "ra_parser 0.1.0",
1325 "ra_rustc_lexer 0.1.0-pre.1 (registry+https://github.com/rust-lang/crates.io-index)",
1317 "ra_text_edit 0.1.0", 1326 "ra_text_edit 0.1.0",
1318 "rowan 0.6.0-pre.1 (registry+https://github.com/rust-lang/crates.io-index)", 1327 "rowan 0.6.0-pre.1 (registry+https://github.com/rust-lang/crates.io-index)",
1319 "smol_str 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1328 "smol_str 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
1320 "test_utils 0.1.0", 1329 "test_utils 0.1.0",
1321 "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1330 "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
1322 "walkdir 2.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 1331 "walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)",
1323] 1332]
1324 1333
1325[[package]] 1334[[package]]
@@ -1338,7 +1347,7 @@ dependencies = [
1338 "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", 1347 "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
1339 "itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 1348 "itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
1340 "teraron 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1349 "teraron 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
1341 "walkdir 2.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 1350 "walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)",
1342] 1351]
1343 1352
1344[[package]] 1353[[package]]
@@ -1359,7 +1368,7 @@ dependencies = [
1359 "parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 1368 "parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
1360 "relative-path 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1369 "relative-path 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
1361 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 1370 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
1362 "walkdir 2.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 1371 "walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)",
1363] 1372]
1364 1373
1365[[package]] 1374[[package]]
@@ -1367,7 +1376,7 @@ name = "rand"
1367version = "0.6.5" 1376version = "0.6.5"
1368source = "registry+https://github.com/rust-lang/crates.io-index" 1377source = "registry+https://github.com/rust-lang/crates.io-index"
1369dependencies = [ 1378dependencies = [
1370 "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 1379 "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
1371 "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", 1380 "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
1372 "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1381 "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
1373 "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1382 "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1398,7 +1407,7 @@ name = "rand_chacha"
1398version = "0.1.1" 1407version = "0.1.1"
1399source = "registry+https://github.com/rust-lang/crates.io-index" 1408source = "registry+https://github.com/rust-lang/crates.io-index"
1400dependencies = [ 1409dependencies = [
1401 "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 1410 "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
1402 "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 1411 "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
1403] 1412]
1404 1413
@@ -1407,7 +1416,7 @@ name = "rand_chacha"
1407version = "0.2.0" 1416version = "0.2.0"
1408source = "registry+https://github.com/rust-lang/crates.io-index" 1417source = "registry+https://github.com/rust-lang/crates.io-index"
1409dependencies = [ 1418dependencies = [
1410 "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 1419 "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
1411 "c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 1420 "c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
1412 "rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", 1421 "rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
1413] 1422]
@@ -1485,7 +1494,7 @@ name = "rand_pcg"
1485version = "0.1.2" 1494version = "0.1.2"
1486source = "registry+https://github.com/rust-lang/crates.io-index" 1495source = "registry+https://github.com/rust-lang/crates.io-index"
1487dependencies = [ 1496dependencies = [
1488 "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 1497 "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
1489 "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1498 "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
1490] 1499]
1491 1500
@@ -1494,7 +1503,7 @@ name = "rand_pcg"
1494version = "0.2.0" 1503version = "0.2.0"
1495source = "registry+https://github.com/rust-lang/crates.io-index" 1504source = "registry+https://github.com/rust-lang/crates.io-index"
1496dependencies = [ 1505dependencies = [
1497 "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 1506 "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
1498 "rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", 1507 "rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
1499] 1508]
1500 1509
@@ -1543,22 +1552,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1543 1552
1544[[package]] 1553[[package]]
1545name = "regex" 1554name = "regex"
1546version = "1.1.9" 1555version = "1.2.0"
1547source = "registry+https://github.com/rust-lang/crates.io-index" 1556source = "registry+https://github.com/rust-lang/crates.io-index"
1548dependencies = [ 1557dependencies = [
1549 "aho-corasick 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", 1558 "aho-corasick 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)",
1550 "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 1559 "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
1551 "regex-syntax 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", 1560 "regex-syntax 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)",
1552 "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 1561 "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
1553 "utf8-ranges 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 1562 "utf8-ranges 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
1554] 1563]
1555 1564
1556[[package]] 1565[[package]]
1557name = "regex-syntax" 1566name = "regex-syntax"
1558version = "0.6.8" 1567version = "0.6.10"
1559source = "registry+https://github.com/rust-lang/crates.io-index" 1568source = "registry+https://github.com/rust-lang/crates.io-index"
1560dependencies = [ 1569dependencies = [
1561 "ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 1570 "ucd-util 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
1562] 1571]
1563 1572
1564[[package]] 1573[[package]]
@@ -1581,7 +1590,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1581dependencies = [ 1590dependencies = [
1582 "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 1591 "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
1583 "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1592 "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
1584 "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", 1593 "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)",
1585] 1594]
1586 1595
1587[[package]] 1596[[package]]
@@ -1644,12 +1653,12 @@ dependencies = [
1644 "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 1653 "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
1645 "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", 1654 "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
1646 "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", 1655 "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)",
1647 "syn 0.15.39 (registry+https://github.com/rust-lang/crates.io-index)", 1656 "syn 0.15.40 (registry+https://github.com/rust-lang/crates.io-index)",
1648] 1657]
1649 1658
1650[[package]] 1659[[package]]
1651name = "same-file" 1660name = "same-file"
1652version = "1.0.4" 1661version = "1.0.5"
1653source = "registry+https://github.com/rust-lang/crates.io-index" 1662source = "registry+https://github.com/rust-lang/crates.io-index"
1654dependencies = [ 1663dependencies = [
1655 "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 1664 "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1671,7 +1680,7 @@ version = "0.9.0"
1671source = "registry+https://github.com/rust-lang/crates.io-index" 1680source = "registry+https://github.com/rust-lang/crates.io-index"
1672dependencies = [ 1681dependencies = [
1673 "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 1682 "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
1674 "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", 1683 "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)",
1675] 1684]
1676 1685
1677[[package]] 1686[[package]]
@@ -1681,20 +1690,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1681 1690
1682[[package]] 1691[[package]]
1683name = "serde" 1692name = "serde"
1684version = "1.0.94" 1693version = "1.0.97"
1685source = "registry+https://github.com/rust-lang/crates.io-index" 1694source = "registry+https://github.com/rust-lang/crates.io-index"
1686dependencies = [ 1695dependencies = [
1687 "serde_derive 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", 1696 "serde_derive 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)",
1688] 1697]
1689 1698
1690[[package]] 1699[[package]]
1691name = "serde_derive" 1700name = "serde_derive"
1692version = "1.0.94" 1701version = "1.0.97"
1693source = "registry+https://github.com/rust-lang/crates.io-index" 1702source = "registry+https://github.com/rust-lang/crates.io-index"
1694dependencies = [ 1703dependencies = [
1695 "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", 1704 "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
1696 "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", 1705 "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)",
1697 "syn 0.15.39 (registry+https://github.com/rust-lang/crates.io-index)", 1706 "syn 0.15.40 (registry+https://github.com/rust-lang/crates.io-index)",
1698] 1707]
1699 1708
1700[[package]] 1709[[package]]
@@ -1704,7 +1713,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1704dependencies = [ 1713dependencies = [
1705 "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", 1714 "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
1706 "ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 1715 "ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
1707 "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", 1716 "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)",
1708] 1717]
1709 1718
1710[[package]] 1719[[package]]
@@ -1714,7 +1723,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1714dependencies = [ 1723dependencies = [
1715 "dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", 1724 "dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
1716 "linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", 1725 "linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
1717 "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", 1726 "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)",
1718 "yaml-rust 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", 1727 "yaml-rust 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)",
1719] 1728]
1720 1729
@@ -1752,7 +1761,7 @@ name = "smol_str"
1752version = "0.1.12" 1761version = "0.1.12"
1753source = "registry+https://github.com/rust-lang/crates.io-index" 1762source = "registry+https://github.com/rust-lang/crates.io-index"
1754dependencies = [ 1763dependencies = [
1755 "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", 1764 "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)",
1756] 1765]
1757 1766
1758[[package]] 1767[[package]]
@@ -1783,7 +1792,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1783 1792
1784[[package]] 1793[[package]]
1785name = "syn" 1794name = "syn"
1786version = "0.15.39" 1795version = "0.15.40"
1787source = "registry+https://github.com/rust-lang/crates.io-index" 1796source = "registry+https://github.com/rust-lang/crates.io-index"
1788dependencies = [ 1797dependencies = [
1789 "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", 1798 "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1798,7 +1807,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1798dependencies = [ 1807dependencies = [
1799 "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", 1808 "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
1800 "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", 1809 "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)",
1801 "syn 0.15.39 (registry+https://github.com/rust-lang/crates.io-index)", 1810 "syn 0.15.40 (registry+https://github.com/rust-lang/crates.io-index)",
1802 "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1811 "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
1803] 1812]
1804 1813
@@ -1827,8 +1836,8 @@ dependencies = [
1827 "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 1836 "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
1828 "pest 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1837 "pest 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
1829 "pest_derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1838 "pest_derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
1830 "regex 1.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 1839 "regex 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
1831 "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", 1840 "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)",
1832 "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", 1841 "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
1833 "slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 1842 "slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
1834 "unic-segment 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 1843 "unic-segment 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1916,12 +1925,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1916 1925
1917[[package]] 1926[[package]]
1918name = "ucd-trie" 1927name = "ucd-trie"
1919version = "0.1.1" 1928version = "0.1.2"
1920source = "registry+https://github.com/rust-lang/crates.io-index" 1929source = "registry+https://github.com/rust-lang/crates.io-index"
1921 1930
1922[[package]] 1931[[package]]
1923name = "ucd-util" 1932name = "ucd-util"
1924version = "0.1.3" 1933version = "0.1.5"
1925source = "registry+https://github.com/rust-lang/crates.io-index" 1934source = "registry+https://github.com/rust-lang/crates.io-index"
1926 1935
1927[[package]] 1936[[package]]
@@ -2022,7 +2031,7 @@ name = "url_serde"
2022version = "0.2.0" 2031version = "0.2.0"
2023source = "registry+https://github.com/rust-lang/crates.io-index" 2032source = "registry+https://github.com/rust-lang/crates.io-index"
2024dependencies = [ 2033dependencies = [
2025 "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", 2034 "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)",
2026 "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 2035 "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
2027] 2036]
2028 2037
@@ -2037,7 +2046,7 @@ version = "0.7.4"
2037source = "registry+https://github.com/rust-lang/crates.io-index" 2046source = "registry+https://github.com/rust-lang/crates.io-index"
2038dependencies = [ 2047dependencies = [
2039 "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", 2048 "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
2040 "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", 2049 "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)",
2041] 2050]
2042 2051
2043[[package]] 2052[[package]]
@@ -2052,10 +2061,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
2052 2061
2053[[package]] 2062[[package]]
2054name = "walkdir" 2063name = "walkdir"
2055version = "2.2.8" 2064version = "2.2.9"
2056source = "registry+https://github.com/rust-lang/crates.io-index" 2065source = "registry+https://github.com/rust-lang/crates.io-index"
2057dependencies = [ 2066dependencies = [
2058 "same-file 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", 2067 "same-file 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
2059 "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 2068 "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
2060 "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 2069 "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
2061] 2070]
@@ -2123,11 +2132,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
2123"checksum aho-corasick 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "36b7aa1ccb7d7ea3f437cf025a2ab1c47cc6c1bc9fc84918ff449def12f5e282" 2132"checksum aho-corasick 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "36b7aa1ccb7d7ea3f437cf025a2ab1c47cc6c1bc9fc84918ff449def12f5e282"
2124"checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" 2133"checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b"
2125"checksum arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b8d73f9beda665eaa98ab9e4f7442bd4e7de6652587de55b2525e52e29c1b0ba" 2134"checksum arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b8d73f9beda665eaa98ab9e4f7442bd4e7de6652587de55b2525e52e29c1b0ba"
2126"checksum atty 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)" = "ecaaea69f52b3b18633611ec0007d188517d0366f47ff703d400fa6879d6f8d5" 2135"checksum atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "1803c647a3ec87095e7ae7acfca019e98de5ec9a7d01343f611cf3152ed71a90"
2127"checksum autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "0e49efa51329a5fd37e7c79db4621af617cd4e3e5bc224939808d076077077bf" 2136"checksum autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "22130e92352b948e7e82a49cdb0aa94f2211761117f29e052dd397c1ac33542b"
2128"checksum backtrace 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "346d7644f0b5f9bc73082d3b2236b69a05fd35cce0cfa3724e184e6a5c9e2a2f" 2137"checksum backtrace 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "346d7644f0b5f9bc73082d3b2236b69a05fd35cce0cfa3724e184e6a5c9e2a2f"
2129"checksum backtrace 0.3.32 (registry+https://github.com/rust-lang/crates.io-index)" = "18b50f5258d1a9ad8396d2d345827875de4261b158124d4c819d9b351454fae5" 2138"checksum backtrace 0.3.33 (registry+https://github.com/rust-lang/crates.io-index)" = "88fb679bc9af8fa639198790a77f52d345fe13656c08b43afa9424c206b731c6"
2130"checksum backtrace-sys 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)" = "5b3a000b9c543553af61bc01cbfc403b04b5caa9e421033866f2e98061eb3e61" 2139"checksum backtrace-sys 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)" = "82a830b4ef2d1124a711c71d263c5abdc710ef8e907bd508c88be475cebc422b"
2131"checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" 2140"checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e"
2132"checksum bit-set 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e84c238982c4b1e1ee668d136c510c67a13465279c0cb367ea6baf6310620a80" 2141"checksum bit-set 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e84c238982c4b1e1ee668d136c510c67a13465279c0cb367ea6baf6310620a80"
2133"checksum bit-vec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f59bbe95d4e52a6398ec21238d31577f2b28a9d86807f06ca59d191d8440d0bb" 2142"checksum bit-vec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f59bbe95d4e52a6398ec21238d31577f2b28a9d86807f06ca59d191d8440d0bb"
@@ -2175,12 +2184,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
2175"checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" 2184"checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed"
2176"checksum filetime 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "2f8c63033fcba1f51ef744505b3cad42510432b904c062afa67ad7ece008429d" 2185"checksum filetime 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "2f8c63033fcba1f51ef744505b3cad42510432b904c062afa67ad7ece008429d"
2177"checksum fixedbitset 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "86d4de0081402f5e88cdac65c8dcdcc73118c1a7a465e2a05f0da05843a8ea33" 2186"checksum fixedbitset 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "86d4de0081402f5e88cdac65c8dcdcc73118c1a7a465e2a05f0da05843a8ea33"
2178"checksum flexi_logger 0.13.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e9d3c4470d1ff8446baa0c13202646722886dde8dc4c5d33cb8242d70ece79d5" 2187"checksum flexi_logger 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)" = "85f80d16fde95e0f424de0b523d40278fd66925a81247246963fcdf1f390f9fb"
2179"checksum format-buf 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f7aea5a5909a74969507051a3b17adc84737e31a5f910559892aedce026f4d53" 2188"checksum format-buf 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f7aea5a5909a74969507051a3b17adc84737e31a5f910559892aedce026f4d53"
2180"checksum fs_extra 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5f2a4a2034423744d2cc7ca2068453168dcdb82c438419e639a26bd87839c674" 2189"checksum fs_extra 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5f2a4a2034423744d2cc7ca2068453168dcdb82c438419e639a26bd87839c674"
2181"checksum fsevent 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5ab7d1bd1bd33cc98b0889831b72da23c0aa4df9cec7e0702f46ecea04b35db6" 2190"checksum fsevent 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5ab7d1bd1bd33cc98b0889831b72da23c0aa4df9cec7e0702f46ecea04b35db6"
2182"checksum fsevent-sys 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f41b048a94555da0f42f1d632e2e19510084fb8e303b0daa2816e733fb3644a0" 2191"checksum fsevent-sys 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f41b048a94555da0f42f1d632e2e19510084fb8e303b0daa2816e733fb3644a0"
2183"checksum fst 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "db72126ca7dff566cdbbdd54af44668c544897d9d3862b198141f176f1238bdf" 2192"checksum fst 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "927fb434ff9f0115b215dc0efd2e4fbdd7448522a92a1aa37c77d6a2f8f1ebd6"
2184"checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" 2193"checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba"
2185"checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" 2194"checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82"
2186"checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" 2195"checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7"
@@ -2195,7 +2204,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
2195"checksum indicatif 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2c60da1c9abea75996b70a931bba6c750730399005b61ccd853cee50ef3d0d0c" 2204"checksum indicatif 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2c60da1c9abea75996b70a931bba6c750730399005b61ccd853cee50ef3d0d0c"
2196"checksum inotify 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "40b54539f3910d6f84fbf9a643efd6e3aa6e4f001426c0329576128255994718" 2205"checksum inotify 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "40b54539f3910d6f84fbf9a643efd6e3aa6e4f001426c0329576128255994718"
2197"checksum inotify-sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e74a1aa87c59aeff6ef2cc2fa62d41bc43f54952f55652656b18a02fd5e356c0" 2206"checksum inotify-sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e74a1aa87c59aeff6ef2cc2fa62d41bc43f54952f55652656b18a02fd5e356c0"
2198"checksum insta 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8bbbb69ec4557c37b2bf4d525d106d828e0c2fbd6c44bc98cd3798da13c73b9f" 2207"checksum insta 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "94827696a8daac1e895e8f7d091af79e558634801c8e2cf4f0099416ff0a64ca"
2199"checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" 2208"checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08"
2200"checksum itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5b8467d9c1cebe26feb08c640139247fac215782d35371ade9a2136ed6085358" 2209"checksum itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5b8467d9c1cebe26feb08c640139247fac215782d35371ade9a2136ed6085358"
2201"checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f" 2210"checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f"
@@ -2229,13 +2238,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
2229"checksum num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "6ba9a427cfca2be13aa6f6403b0b7e7368fe982bfa16fccc450ce74c46cd9b32" 2238"checksum num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "6ba9a427cfca2be13aa6f6403b0b7e7368fe982bfa16fccc450ce74c46cd9b32"
2230"checksum num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bcef43580c035376c0705c42792c294b66974abbfd2789b511784023f71f3273" 2239"checksum num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bcef43580c035376c0705c42792c294b66974abbfd2789b511784023f71f3273"
2231"checksum number_prefix 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "dbf9993e59c894e3c08aa1c2712914e9e6bf1fcbfc6bef283e2183df345a4fee" 2240"checksum number_prefix 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "dbf9993e59c894e3c08aa1c2712914e9e6bf1fcbfc6bef283e2183df345a4fee"
2232"checksum once_cell 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "9a2252e34627a9c92cc13aef3dff2ff753f460d3dc62a8a9665ae68e2ac5be51" 2241"checksum once_cell 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d584f08c2d717d5c23a6414fc2822b71c651560713e54fa7eace675f758a355e"
2233"checksum opaque-debug 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "93f5bb2e8e8dec81642920ccff6b61f1eb94fa3020c5a325c9851ff604152409" 2242"checksum opaque-debug 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "93f5bb2e8e8dec81642920ccff6b61f1eb94fa3020c5a325c9851ff604152409"
2234"checksum ordermap 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "a86ed3f5f244b372d6b1a00b72ef7f8876d0bc6a78a4c9985c53614041512063" 2243"checksum ordermap 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "a86ed3f5f244b372d6b1a00b72ef7f8876d0bc6a78a4c9985c53614041512063"
2235"checksum parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fa7767817701cce701d5585b9c4db3cdd02086398322c1d7e8bf5094a96a2ce7" 2244"checksum parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fa7767817701cce701d5585b9c4db3cdd02086398322c1d7e8bf5094a96a2ce7"
2236"checksum parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" 2245"checksum parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252"
2237"checksum parking_lot_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cb88cb1cb3790baa6776844f968fea3be44956cf184fa1be5a03341f5491278c" 2246"checksum parking_lot_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cb88cb1cb3790baa6776844f968fea3be44956cf184fa1be5a03341f5491278c"
2238"checksum parking_lot_core 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "67812d70a819b886655846594086c00ac1f3e8b77c36ef494aa730c620b19d57" 2247"checksum parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b"
2239"checksum paste 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "1f4a4a1c555c6505821f9d58b8779d0f630a6b7e4e1be24ba718610acf01fa79" 2248"checksum paste 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "1f4a4a1c555c6505821f9d58b8779d0f630a6b7e4e1be24ba718610acf01fa79"
2240"checksum paste-impl 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "26e796e623b8b257215f27e6c80a5478856cae305f5b59810ff9acdaa34570e6" 2249"checksum paste-impl 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "26e796e623b8b257215f27e6c80a5478856cae305f5b59810ff9acdaa34570e6"
2241"checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" 2250"checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831"
@@ -2250,6 +2259,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
2250"checksum proptest 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cf147e022eacf0c8a054ab864914a7602618adba841d800a9a9868a5237a529f" 2259"checksum proptest 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cf147e022eacf0c8a054ab864914a7602618adba841d800a9a9868a5237a529f"
2251"checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" 2260"checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0"
2252"checksum quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" 2261"checksum quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1"
2262"checksum ra_rustc_lexer 0.1.0-pre.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e8d92772f822978a6c9c4657aa61af439e4e635180628b3354049b283b749f1e"
2253"checksum ra_vfs 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fb7cd4e302032c5ab514f1c01c89727cd96fd950dd36f9ebee9252df45d9fb1a" 2263"checksum ra_vfs 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fb7cd4e302032c5ab514f1c01c89727cd96fd950dd36f9ebee9252df45d9fb1a"
2254"checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" 2264"checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca"
2255"checksum rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d47eab0e83d9693d40f825f86948aa16eff6750ead4bdffc4ab95b8b3a7f052c" 2265"checksum rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d47eab0e83d9693d40f825f86948aa16eff6750ead4bdffc4ab95b8b3a7f052c"
@@ -2270,8 +2280,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
2270"checksum rayon-core 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ebbe0df8435ac0c397d467b6cad6d25543d06e8a019ef3f6af3c384597515bd2" 2280"checksum rayon-core 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ebbe0df8435ac0c397d467b6cad6d25543d06e8a019ef3f6af3c384597515bd2"
2271"checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" 2281"checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2"
2272"checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" 2282"checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84"
2273"checksum regex 1.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "d9d8297cc20bbb6184f8b45ff61c8ee6a9ac56c156cec8e38c3e5084773c44ad" 2283"checksum regex 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6b23da8dfd98a84bd7e08700190a5d9f7d2d38abd4369dd1dae651bc40bfd2cc"
2274"checksum regex-syntax 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)" = "9b01330cce219c1c6b2e209e5ed64ccd587ae5c67bed91c0b49eecf02ae40e21" 2284"checksum regex-syntax 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "cd5485bf1523a9ed51c4964273f22f63f24e31632adb5dad134f488f86a3875c"
2275"checksum relative-path 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0e7790c7f1cc73d831d28dc5a7deb316a006e7848e6a7f467cdb10a0a9e0fb1c" 2285"checksum relative-path 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0e7790c7f1cc73d831d28dc5a7deb316a006e7848e6a7f467cdb10a0a9e0fb1c"
2276"checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e" 2286"checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e"
2277"checksum ron 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "17f52a24414403f81528b67488cf8edc4eda977d3af1646bb6b106a600ead78f" 2287"checksum ron 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "17f52a24414403f81528b67488cf8edc4eda977d3af1646bb6b106a600ead78f"
@@ -2282,13 +2292,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
2282"checksum ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c92464b447c0ee8c4fb3824ecc8383b81717b9f1e74ba2e72540aef7b9f82997" 2292"checksum ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c92464b447c0ee8c4fb3824ecc8383b81717b9f1e74ba2e72540aef7b9f82997"
2283"checksum salsa 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2891cd628406e8a0ca714b827511de1bff76f796e3382cc72a3de732ccad5aea" 2293"checksum salsa 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2891cd628406e8a0ca714b827511de1bff76f796e3382cc72a3de732ccad5aea"
2284"checksum salsa-macros 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b7f1e25ca2b995bdf032946174929d62156ffd57abd7ff88dc6f9bdeb5ac0c59" 2294"checksum salsa-macros 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b7f1e25ca2b995bdf032946174929d62156ffd57abd7ff88dc6f9bdeb5ac0c59"
2285"checksum same-file 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8f20c4be53a8a1ff4c1f1b2bd14570d2f634628709752f0702ecdd2b3f9a5267" 2295"checksum same-file 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "585e8ddcedc187886a30fa705c47985c3fa88d06624095856b36ca0b82ff4421"
2286"checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" 2296"checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27"
2287"checksum scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d" 2297"checksum scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d"
2288"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" 2298"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
2289"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" 2299"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
2290"checksum serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)" = "076a696fdea89c19d3baed462576b8f6d663064414b5c793642da8dfeb99475b" 2300"checksum serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)" = "d46b3dfedb19360a74316866cef04687cd4d6a70df8e6a506c63512790769b72"
2291"checksum serde_derive 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)" = "ef45eb79d6463b22f5f9e16d283798b7c0175ba6050bc25c1a946c122727fe7b" 2301"checksum serde_derive 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)" = "c22a0820adfe2f257b098714323563dd06426502abbbce4f51b72ef544c5027f"
2292"checksum serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)" = "051c49229f282f7c6f3813f8286cc1e3323e8051823fce42c7ea80fe13521704" 2302"checksum serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)" = "051c49229f282f7c6f3813f8286cc1e3323e8051823fce42c7ea80fe13521704"
2293"checksum serde_yaml 0.8.9 (registry+https://github.com/rust-lang/crates.io-index)" = "38b08a9a90e5260fe01c6480ec7c811606df6d3a660415808c3c3fa8ed95b582" 2303"checksum serde_yaml 0.8.9 (registry+https://github.com/rust-lang/crates.io-index)" = "38b08a9a90e5260fe01c6480ec7c811606df6d3a660415808c3c3fa8ed95b582"
2294"checksum sha-1 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "23962131a91661d643c98940b20fcaffe62d776a823247be80a48fcb8b6fce68" 2304"checksum sha-1 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "23962131a91661d643c98940b20fcaffe62d776a823247be80a48fcb8b6fce68"
@@ -2300,7 +2310,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
2300"checksum stacker 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fb79482f57cf598af52094ec4cc3b3c42499d3ce5bd426f2ac41515b7e57404b" 2310"checksum stacker 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fb79482f57cf598af52094ec4cc3b3c42499d3ce5bd426f2ac41515b7e57404b"
2301"checksum strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" 2311"checksum strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
2302"checksum superslice 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ab16ced94dbd8a46c82fd81e3ed9a8727dac2977ea869d217bcc4ea1f122e81f" 2312"checksum superslice 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ab16ced94dbd8a46c82fd81e3ed9a8727dac2977ea869d217bcc4ea1f122e81f"
2303"checksum syn 0.15.39 (registry+https://github.com/rust-lang/crates.io-index)" = "b4d960b829a55e56db167e861ddb43602c003c7be0bee1d345021703fac2fb7c" 2313"checksum syn 0.15.40 (registry+https://github.com/rust-lang/crates.io-index)" = "bc945221ccf4a7e8c31222b9d1fc77aefdd6638eb901a6ce457a3dc29d4c31e8"
2304"checksum synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "02353edf96d6e4dc81aea2d8490a7e9db177bf8acb0e951c24940bf866cb313f" 2314"checksum synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "02353edf96d6e4dc81aea2d8490a7e9db177bf8acb0e951c24940bf866cb313f"
2305"checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" 2315"checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9"
2306"checksum tera 0.11.20 (registry+https://github.com/rust-lang/crates.io-index)" = "4b505279e19d8f7d24b1a9dc58327c9c36174b1a2c7ebdeac70792d017cb64f3" 2316"checksum tera 0.11.20 (registry+https://github.com/rust-lang/crates.io-index)" = "4b505279e19d8f7d24b1a9dc58327c9c36174b1a2c7ebdeac70792d017cb64f3"
@@ -2312,8 +2322,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
2312"checksum threadpool 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e2f0c90a5f3459330ac8bc0d2f879c693bb7a2f59689c1083fc4ef83834da865" 2322"checksum threadpool 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e2f0c90a5f3459330ac8bc0d2f879c693bb7a2f59689c1083fc4ef83834da865"
2313"checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" 2323"checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f"
2314"checksum typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "612d636f949607bdf9b123b4a6f6d966dedf3ff669f7f045890d3a4a73948169" 2324"checksum typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "612d636f949607bdf9b123b4a6f6d966dedf3ff669f7f045890d3a4a73948169"
2315"checksum ucd-trie 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "71a9c5b1fe77426cf144cc30e49e955270f5086e31a6441dfa8b32efc09b9d77" 2325"checksum ucd-trie 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8f00ed7be0c1ff1e24f46c3d2af4859f7e863672ba3a6e92e7cff702bf9f06c2"
2316"checksum ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "535c204ee4d8434478593480b8f86ab45ec9aae0e83c568ca81abf0fd0e88f86" 2326"checksum ucd-util 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fa9b3b49edd3468c0e6565d85783f51af95212b6fa3986a5500954f00b460874"
2317"checksum unic-char-property 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ce36d3f7ce754afdbccccf8ff0dd0134e50fb44aaae579f96218856e9e5dbd1e" 2327"checksum unic-char-property 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ce36d3f7ce754afdbccccf8ff0dd0134e50fb44aaae579f96218856e9e5dbd1e"
2318"checksum unic-char-range 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d9ab85fab42ad1b26cafc03bf891f69cb4d6e15f491030e89a0122197baa8ae8" 2328"checksum unic-char-range 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d9ab85fab42ad1b26cafc03bf891f69cb4d6e15f491030e89a0122197baa8ae8"
2319"checksum unic-common 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ff8d4a7ade929ef7d971e16ced21a8cd56a63869aa6032dfb8cb083cf7d077bf" 2329"checksum unic-common 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ff8d4a7ade929ef7d971e16ced21a8cd56a63869aa6032dfb8cb083cf7d077bf"
@@ -2332,7 +2342,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
2332"checksum uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "90dbc611eb48397705a6b0f6e917da23ae517e4d127123d2cf7674206627d32a" 2342"checksum uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "90dbc611eb48397705a6b0f6e917da23ae517e4d127123d2cf7674206627d32a"
2333"checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a" 2343"checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a"
2334"checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" 2344"checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd"
2335"checksum walkdir 2.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "c7904a7e2bb3cdf0cf5e783f44204a85a37a93151738fa349f06680f59a98b45" 2345"checksum walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)" = "9658c94fa8b940eab2250bd5a457f9c48b748420d71293b165c8cdbe2f55f71e"
2336"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" 2346"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
2337"checksum winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "f10e386af2b13e47c89e7236a7a14a086791a2b88ebad6df9bf42040195cf770" 2347"checksum winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "f10e386af2b13e47c89e7236a7a14a086791a2b88ebad6df9bf42040195cf770"
2338"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" 2348"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"
diff --git a/crates/ra_syntax/Cargo.toml b/crates/ra_syntax/Cargo.toml
index 97b6b047f..9ef8dee5d 100644
--- a/crates/ra_syntax/Cargo.toml
+++ b/crates/ra_syntax/Cargo.toml
@@ -11,6 +11,7 @@ repository = "https://github.com/rust-analyzer/rust-analyzer"
11unicode-xid = "0.1.0" 11unicode-xid = "0.1.0"
12itertools = "0.8.0" 12itertools = "0.8.0"
13rowan = "0.6.0-pre.1" 13rowan = "0.6.0-pre.1"
14ra_rustc_lexer = { version = "0.1.0-pre.1", features = [ "unicode-xid" ] }
14 15
15# ideally, `serde` should be enabled by `ra_lsp_server`, but we enable it here 16# ideally, `serde` should be enabled by `ra_lsp_server`, but we enable it here
16# to reduce number of compilations 17# to reduce number of compilations
diff --git a/crates/ra_syntax/src/parsing/lexer.rs b/crates/ra_syntax/src/parsing/lexer.rs
index 60cf37047..2a4343b0a 100644
--- a/crates/ra_syntax/src/parsing/lexer.rs
+++ b/crates/ra_syntax/src/parsing/lexer.rs
@@ -1,22 +1,6 @@
1mod classes;
2mod comments;
3mod numbers;
4mod ptr;
5mod strings;
6
7use crate::{ 1use crate::{
8 SyntaxKind::{self, *}, 2 SyntaxKind::{self, *},
9 TextUnit, T, 3 TextUnit,
10};
11
12use self::{
13 classes::*,
14 comments::{scan_comment, scan_shebang},
15 numbers::scan_number,
16 ptr::Ptr,
17 strings::{
18 is_string_literal_start, scan_byte_char_or_string, scan_char, scan_raw_string, scan_string,
19 },
20}; 4};
21 5
22/// A token of Rust source. 6/// A token of Rust source.
@@ -30,149 +14,134 @@ pub struct Token {
30 14
31/// Break a string up into its component tokens 15/// Break a string up into its component tokens
32pub fn tokenize(text: &str) -> Vec<Token> { 16pub fn tokenize(text: &str) -> Vec<Token> {
17 if text.is_empty() {
18 return vec![];
19 }
33 let mut text = text; 20 let mut text = text;
34 let mut acc = Vec::new(); 21 let mut acc = Vec::new();
35 while !text.is_empty() { 22 if let Some(len) = ra_rustc_lexer::strip_shebang(text) {
36 let token = next_token(text); 23 acc.push(Token { kind: SHEBANG, len: TextUnit::from_usize(len) });
37 acc.push(token); 24 text = &text[len..];
38 let len: u32 = token.len.into();
39 text = &text[len as usize..];
40 }
41 acc
42}
43
44/// Get the next token from a string
45pub fn next_token(text: &str) -> Token {
46 assert!(!text.is_empty());
47 let mut ptr = Ptr::new(text);
48 let c = ptr.bump().unwrap();
49 let kind = next_token_inner(c, &mut ptr);
50 let len = ptr.into_len();
51 Token { kind, len }
52}
53
54fn next_token_inner(c: char, ptr: &mut Ptr) -> SyntaxKind {
55 if is_whitespace(c) {
56 ptr.bump_while(is_whitespace);
57 return WHITESPACE;
58 } 25 }
59 26 while !text.is_empty() {
60 match c { 27 let rustc_token = ra_rustc_lexer::first_token(text);
61 '#' => { 28 macro_rules! decompose {
62 if scan_shebang(ptr) { 29 ($t1:expr, $t2:expr) => {{
63 return SHEBANG; 30 acc.push(Token { kind: $t1, len: 1.into() });
64 } 31 acc.push(Token { kind: $t2, len: 1.into() });
65 } 32 text = &text[2..];
66 '/' => { 33 continue;
67 if let Some(kind) = scan_comment(ptr) { 34 }};
68 return kind; 35 ($t1:expr, $t2:expr, $t3:expr) => {{
69 } 36 acc.push(Token { kind: $t1, len: 1.into() });
37 acc.push(Token { kind: $t2, len: 1.into() });
38 acc.push(Token { kind: $t3, len: 1.into() });
39 text = &text[3..];
40 continue;
41 }};
70 } 42 }
71 _ => (), 43 let kind = match rustc_token.kind {
72 } 44 ra_rustc_lexer::TokenKind::LineComment => COMMENT,
73 45 ra_rustc_lexer::TokenKind::BlockComment { .. } => COMMENT,
74 let ident_start = is_ident_start(c) && !is_string_literal_start(c, ptr.current(), ptr.nth(1)); 46 ra_rustc_lexer::TokenKind::Whitespace => WHITESPACE,
75 if ident_start { 47 ra_rustc_lexer::TokenKind::Ident => {
76 return scan_ident(c, ptr); 48 let token_text = &text[..rustc_token.len];
77 } 49 if token_text == "_" {
78 50 UNDERSCORE
79 if is_dec_digit(c) { 51 } else {
80 let kind = scan_number(c, ptr); 52 SyntaxKind::from_keyword(&text[..rustc_token.len]).unwrap_or(IDENT)
81 scan_literal_suffix(ptr);
82 return kind;
83 }
84
85 // One-byte tokens.
86 if let Some(kind) = SyntaxKind::from_char(c) {
87 return kind;
88 }
89
90 match c {
91 // Possiblily multi-byte tokens,
92 // but we only produce single byte token now
93 // T![...], T![..], T![..=], T![.]
94 '.' => return T![.],
95 // T![::] T![:]
96 ':' => return T![:],
97 // T![==] FATARROW T![=]
98 '=' => return T![=],
99 // T![!=] T![!]
100 '!' => return T![!],
101 // T![->] T![-]
102 '-' => return T![-],
103
104 // If the character is an ident start not followed by another single
105 // quote, then this is a lifetime name:
106 '\'' => {
107 return if ptr.at_p(is_ident_start) && !ptr.at_str("''") {
108 ptr.bump();
109 while ptr.at_p(is_ident_continue) {
110 ptr.bump();
111 } 53 }
112 // lifetimes shouldn't end with a single quote 54 }
113 // if we find one, then this is an invalid character literal 55 ra_rustc_lexer::TokenKind::RawIdent => IDENT,
114 if ptr.at('\'') { 56 ra_rustc_lexer::TokenKind::Literal { kind, .. } => match kind {
115 ptr.bump(); 57 ra_rustc_lexer::LiteralKind::Int { .. } => INT_NUMBER,
116 return CHAR; 58 ra_rustc_lexer::LiteralKind::Float { .. } => FLOAT_NUMBER,
117 } 59 ra_rustc_lexer::LiteralKind::Char { .. } => CHAR,
118 LIFETIME 60 ra_rustc_lexer::LiteralKind::Byte { .. } => BYTE,
119 } else { 61 ra_rustc_lexer::LiteralKind::Str { .. } => STRING,
120 scan_char(ptr); 62 ra_rustc_lexer::LiteralKind::ByteStr { .. } => BYTE_STRING,
121 scan_literal_suffix(ptr); 63 ra_rustc_lexer::LiteralKind::RawStr { .. } => RAW_STRING,
122 CHAR 64 ra_rustc_lexer::LiteralKind::RawByteStr { .. } => RAW_BYTE_STRING,
123 }; 65 },
124 } 66 ra_rustc_lexer::TokenKind::Lifetime { .. } => LIFETIME,
125 'b' => { 67 ra_rustc_lexer::TokenKind::Semi => SEMI,
126 let kind = scan_byte_char_or_string(ptr); 68 ra_rustc_lexer::TokenKind::Comma => COMMA,
127 scan_literal_suffix(ptr); 69 ra_rustc_lexer::TokenKind::DotDotDot => decompose!(DOT, DOT, DOT),
128 return kind; 70 ra_rustc_lexer::TokenKind::DotDotEq => decompose!(DOT, DOT, EQ),
129 } 71 ra_rustc_lexer::TokenKind::DotDot => decompose!(DOT, DOT),
130 '"' => { 72 ra_rustc_lexer::TokenKind::Dot => DOT,
131 scan_string(ptr); 73 ra_rustc_lexer::TokenKind::OpenParen => L_PAREN,
132 scan_literal_suffix(ptr); 74 ra_rustc_lexer::TokenKind::CloseParen => R_PAREN,
133 return STRING; 75 ra_rustc_lexer::TokenKind::OpenBrace => L_CURLY,
134 } 76 ra_rustc_lexer::TokenKind::CloseBrace => R_CURLY,
135 'r' => { 77 ra_rustc_lexer::TokenKind::OpenBracket => L_BRACK,
136 scan_raw_string(ptr); 78 ra_rustc_lexer::TokenKind::CloseBracket => R_BRACK,
137 scan_literal_suffix(ptr); 79 ra_rustc_lexer::TokenKind::At => AT,
138 return RAW_STRING; 80 ra_rustc_lexer::TokenKind::Pound => POUND,
139 } 81 ra_rustc_lexer::TokenKind::Tilde => TILDE,
140 _ => (), 82 ra_rustc_lexer::TokenKind::Question => QUESTION,
141 } 83 ra_rustc_lexer::TokenKind::ColonColon => decompose!(COLON, COLON),
142 ERROR 84 ra_rustc_lexer::TokenKind::Colon => COLON,
143} 85 ra_rustc_lexer::TokenKind::Dollar => DOLLAR,
144 86 ra_rustc_lexer::TokenKind::EqEq => decompose!(EQ, EQ),
145fn scan_ident(c: char, ptr: &mut Ptr) -> SyntaxKind { 87 ra_rustc_lexer::TokenKind::Eq => EQ,
146 let is_raw = match (c, ptr.current()) { 88 ra_rustc_lexer::TokenKind::FatArrow => decompose!(EQ, R_ANGLE),
147 ('r', Some('#')) => { 89 ra_rustc_lexer::TokenKind::Ne => decompose!(EXCL, EQ),
148 ptr.bump(); 90 ra_rustc_lexer::TokenKind::Not => EXCL,
149 true 91 ra_rustc_lexer::TokenKind::Le => decompose!(L_ANGLE, EQ),
150 } 92 ra_rustc_lexer::TokenKind::LArrow => decompose!(COLON, MINUS),
151 ('_', None) => return T![_], 93 ra_rustc_lexer::TokenKind::Lt => L_ANGLE,
152 ('_', Some(c)) if !is_ident_continue(c) => return T![_], 94 ra_rustc_lexer::TokenKind::ShlEq => decompose!(L_ANGLE, L_ANGLE, EQ),
153 _ => false, 95 ra_rustc_lexer::TokenKind::Shl => decompose!(L_ANGLE, L_ANGLE),
154 }; 96 ra_rustc_lexer::TokenKind::Ge => decompose!(R_ANGLE, EQ),
155 ptr.bump_while(is_ident_continue); 97 ra_rustc_lexer::TokenKind::Gt => R_ANGLE,
156 if !is_raw { 98 ra_rustc_lexer::TokenKind::ShrEq => decompose!(R_ANGLE, R_ANGLE, EQ),
157 if let Some(kind) = SyntaxKind::from_keyword(ptr.current_token_text()) { 99 ra_rustc_lexer::TokenKind::Shr => decompose!(R_ANGLE, R_ANGLE),
158 return kind; 100 ra_rustc_lexer::TokenKind::RArrow => decompose!(MINUS, R_ANGLE),
159 } 101 ra_rustc_lexer::TokenKind::Minus => MINUS,
160 } 102 ra_rustc_lexer::TokenKind::MinusEq => decompose!(MINUS, EQ),
161 IDENT 103 ra_rustc_lexer::TokenKind::And => AMP,
162} 104 ra_rustc_lexer::TokenKind::AndAnd => decompose!(AMP, AMP),
163 105 ra_rustc_lexer::TokenKind::AndEq => decompose!(AMP, EQ),
164fn scan_literal_suffix(ptr: &mut Ptr) { 106 ra_rustc_lexer::TokenKind::Or => PIPE,
165 if ptr.at_p(is_ident_start) { 107 ra_rustc_lexer::TokenKind::OrOr => decompose!(PIPE, PIPE),
166 ptr.bump(); 108 ra_rustc_lexer::TokenKind::OrEq => decompose!(PIPE, EQ),
109 ra_rustc_lexer::TokenKind::PlusEq => decompose!(PLUS, EQ),
110 ra_rustc_lexer::TokenKind::Plus => PLUS,
111 ra_rustc_lexer::TokenKind::StarEq => decompose!(STAR, EQ),
112 ra_rustc_lexer::TokenKind::Star => STAR,
113 ra_rustc_lexer::TokenKind::SlashEq => decompose!(SLASH, EQ),
114 ra_rustc_lexer::TokenKind::Slash => SLASH,
115 ra_rustc_lexer::TokenKind::CaretEq => decompose!(CARET, EQ),
116 ra_rustc_lexer::TokenKind::Caret => CARET,
117 ra_rustc_lexer::TokenKind::PercentEq => decompose!(PERCENT, EQ),
118 ra_rustc_lexer::TokenKind::Percent => PERCENT,
119 ra_rustc_lexer::TokenKind::Unknown => ERROR,
120 };
121 let token = Token { kind, len: TextUnit::from_usize(rustc_token.len) };
122 acc.push(token);
123 text = &text[rustc_token.len..];
167 } 124 }
168 ptr.bump_while(is_ident_continue); 125 acc
169} 126}
170 127
171pub fn classify_literal(text: &str) -> Option<Token> { 128pub fn classify_literal(text: &str) -> Option<Token> {
172 let tkn = next_token(text); 129 let t = ra_rustc_lexer::first_token(text);
173 if !tkn.kind.is_literal() || tkn.len.to_usize() != text.len() { 130 if t.len != text.len() {
174 return None; 131 return None;
175 } 132 }
176 133 let kind = match t.kind {
177 Some(tkn) 134 ra_rustc_lexer::TokenKind::Literal { kind, .. } => match kind {
135 ra_rustc_lexer::LiteralKind::Int { .. } => INT_NUMBER,
136 ra_rustc_lexer::LiteralKind::Float { .. } => FLOAT_NUMBER,
137 ra_rustc_lexer::LiteralKind::Char { .. } => CHAR,
138 ra_rustc_lexer::LiteralKind::Byte { .. } => BYTE,
139 ra_rustc_lexer::LiteralKind::Str { .. } => STRING,
140 ra_rustc_lexer::LiteralKind::ByteStr { .. } => BYTE_STRING,
141 ra_rustc_lexer::LiteralKind::RawStr { .. } => RAW_STRING,
142 ra_rustc_lexer::LiteralKind::RawByteStr { .. } => RAW_BYTE_STRING,
143 },
144 _ => return None,
145 };
146 Some(Token { kind, len: TextUnit::from_usize(t.len) })
178} 147}
diff --git a/crates/ra_syntax/src/parsing/lexer/classes.rs b/crates/ra_syntax/src/parsing/lexer/classes.rs
deleted file mode 100644
index 4235d2648..000000000
--- a/crates/ra_syntax/src/parsing/lexer/classes.rs
+++ /dev/null
@@ -1,26 +0,0 @@
1use unicode_xid::UnicodeXID;
2
3pub fn is_ident_start(c: char) -> bool {
4 (c >= 'a' && c <= 'z')
5 || (c >= 'A' && c <= 'Z')
6 || c == '_'
7 || (c > '\x7f' && UnicodeXID::is_xid_start(c))
8}
9
10pub fn is_ident_continue(c: char) -> bool {
11 (c >= 'a' && c <= 'z')
12 || (c >= 'A' && c <= 'Z')
13 || (c >= '0' && c <= '9')
14 || c == '_'
15 || (c > '\x7f' && UnicodeXID::is_xid_continue(c))
16}
17
18pub fn is_whitespace(c: char) -> bool {
19 //FIXME: use is_pattern_whitespace
20 //https://github.com/behnam/rust-unic/issues/192
21 c.is_whitespace()
22}
23
24pub fn is_dec_digit(c: char) -> bool {
25 '0' <= c && c <= '9'
26}
diff --git a/crates/ra_syntax/src/parsing/lexer/comments.rs b/crates/ra_syntax/src/parsing/lexer/comments.rs
deleted file mode 100644
index 8bbbe659b..000000000
--- a/crates/ra_syntax/src/parsing/lexer/comments.rs
+++ /dev/null
@@ -1,57 +0,0 @@
1use crate::parsing::lexer::ptr::Ptr;
2
3use crate::SyntaxKind::{self, *};
4
5pub(crate) fn scan_shebang(ptr: &mut Ptr) -> bool {
6 if ptr.at_str("!/") {
7 ptr.bump();
8 ptr.bump();
9 bump_until_eol(ptr);
10 true
11 } else {
12 false
13 }
14}
15
16fn scan_block_comment(ptr: &mut Ptr) -> Option<SyntaxKind> {
17 if ptr.at('*') {
18 ptr.bump();
19 let mut depth: u32 = 1;
20 while depth > 0 {
21 if ptr.at_str("*/") {
22 depth -= 1;
23 ptr.bump();
24 ptr.bump();
25 } else if ptr.at_str("/*") {
26 depth += 1;
27 ptr.bump();
28 ptr.bump();
29 } else if ptr.bump().is_none() {
30 break;
31 }
32 }
33 Some(COMMENT)
34 } else {
35 None
36 }
37}
38
39pub(crate) fn scan_comment(ptr: &mut Ptr) -> Option<SyntaxKind> {
40 if ptr.at('/') {
41 bump_until_eol(ptr);
42 Some(COMMENT)
43 } else {
44 scan_block_comment(ptr)
45 }
46}
47
48fn bump_until_eol(ptr: &mut Ptr) {
49 loop {
50 if ptr.at('\n') || ptr.at_str("\r\n") {
51 return;
52 }
53 if ptr.bump().is_none() {
54 break;
55 }
56 }
57}
diff --git a/crates/ra_syntax/src/parsing/lexer/numbers.rs b/crates/ra_syntax/src/parsing/lexer/numbers.rs
deleted file mode 100644
index e53ae231b..000000000
--- a/crates/ra_syntax/src/parsing/lexer/numbers.rs
+++ /dev/null
@@ -1,66 +0,0 @@
1use crate::parsing::lexer::{classes::*, ptr::Ptr};
2
3use crate::SyntaxKind::{self, *};
4
5pub(crate) fn scan_number(c: char, ptr: &mut Ptr) -> SyntaxKind {
6 if c == '0' {
7 match ptr.current().unwrap_or('\0') {
8 'b' | 'o' => {
9 ptr.bump();
10 scan_digits(ptr, false);
11 }
12 'x' => {
13 ptr.bump();
14 scan_digits(ptr, true);
15 }
16 '0'..='9' | '_' | '.' | 'e' | 'E' => {
17 scan_digits(ptr, true);
18 }
19 _ => return INT_NUMBER,
20 }
21 } else {
22 scan_digits(ptr, false);
23 }
24
25 // might be a float, but don't be greedy if this is actually an
26 // integer literal followed by field/method access or a range pattern
27 // (`0..2` and `12.foo()`)
28 if ptr.at('.') && !(ptr.at_str("..") || ptr.nth_is_p(1, is_ident_start)) {
29 // might have stuff after the ., and if it does, it needs to start
30 // with a number
31 ptr.bump();
32 scan_digits(ptr, false);
33 scan_float_exponent(ptr);
34 return FLOAT_NUMBER;
35 }
36 // it might be a float if it has an exponent
37 if ptr.at('e') || ptr.at('E') {
38 scan_float_exponent(ptr);
39 return FLOAT_NUMBER;
40 }
41 INT_NUMBER
42}
43
44fn scan_digits(ptr: &mut Ptr, allow_hex: bool) {
45 while let Some(c) = ptr.current() {
46 match c {
47 '_' | '0'..='9' => {
48 ptr.bump();
49 }
50 'a'..='f' | 'A'..='F' if allow_hex => {
51 ptr.bump();
52 }
53 _ => return,
54 }
55 }
56}
57
58fn scan_float_exponent(ptr: &mut Ptr) {
59 if ptr.at('e') || ptr.at('E') {
60 ptr.bump();
61 if ptr.at('-') || ptr.at('+') {
62 ptr.bump();
63 }
64 scan_digits(ptr, false);
65 }
66}
diff --git a/crates/ra_syntax/src/parsing/lexer/ptr.rs b/crates/ra_syntax/src/parsing/lexer/ptr.rs
deleted file mode 100644
index c341c4176..000000000
--- a/crates/ra_syntax/src/parsing/lexer/ptr.rs
+++ /dev/null
@@ -1,162 +0,0 @@
1use crate::TextUnit;
2
3use std::str::Chars;
4
5/// A simple view into the characters of a string.
6pub(crate) struct Ptr<'s> {
7 text: &'s str,
8 len: TextUnit,
9}
10
11impl<'s> Ptr<'s> {
12 /// Creates a new `Ptr` from a string.
13 pub fn new(text: &'s str) -> Ptr<'s> {
14 Ptr { text, len: 0.into() }
15 }
16
17 /// Gets the length of the remaining string.
18 pub fn into_len(self) -> TextUnit {
19 self.len
20 }
21
22 /// Gets the current character, if one exists.
23 pub fn current(&self) -> Option<char> {
24 self.chars().next()
25 }
26
27 /// Gets the nth character from the current.
28 /// For example, 0 will return the current character, 1 will return the next, etc.
29 pub fn nth(&self, n: u32) -> Option<char> {
30 self.chars().nth(n as usize)
31 }
32
33 /// Checks whether the current character is `c`.
34 pub fn at(&self, c: char) -> bool {
35 self.current() == Some(c)
36 }
37
38 /// Checks whether the next characters match `s`.
39 pub fn at_str(&self, s: &str) -> bool {
40 let chars = self.chars();
41 chars.as_str().starts_with(s)
42 }
43
44 /// Checks whether the current character satisfies the predicate `p`.
45 pub fn at_p<P: Fn(char) -> bool>(&self, p: P) -> bool {
46 self.current().map(p) == Some(true)
47 }
48
49 /// Checks whether the nth character satisfies the predicate `p`.
50 pub fn nth_is_p<P: Fn(char) -> bool>(&self, n: u32, p: P) -> bool {
51 self.nth(n).map(p) == Some(true)
52 }
53
54 /// Moves to the next character.
55 pub fn bump(&mut self) -> Option<char> {
56 let ch = self.chars().next()?;
57 self.len += TextUnit::of_char(ch);
58 Some(ch)
59 }
60
61 /// Moves to the next character as long as `pred` is satisfied.
62 pub fn bump_while<F: Fn(char) -> bool>(&mut self, pred: F) {
63 loop {
64 match self.current() {
65 Some(c) if pred(c) => {
66 self.bump();
67 }
68 _ => return,
69 }
70 }
71 }
72
73 /// Returns the text up to the current point.
74 pub fn current_token_text(&self) -> &str {
75 let len: u32 = self.len.into();
76 &self.text[..len as usize]
77 }
78
79 /// Returns an iterator over the remaining characters.
80 fn chars(&self) -> Chars {
81 let len: u32 = self.len.into();
82 self.text[len as usize..].chars()
83 }
84}
85
86#[cfg(test)]
87mod tests {
88 use super::*;
89
90 #[test]
91 fn test_current() {
92 let ptr = Ptr::new("test");
93 assert_eq!(ptr.current(), Some('t'));
94 }
95
96 #[test]
97 fn test_nth() {
98 let ptr = Ptr::new("test");
99 assert_eq!(ptr.nth(0), Some('t'));
100 assert_eq!(ptr.nth(1), Some('e'));
101 assert_eq!(ptr.nth(2), Some('s'));
102 assert_eq!(ptr.nth(3), Some('t'));
103 assert_eq!(ptr.nth(4), None);
104 }
105
106 #[test]
107 fn test_at() {
108 let ptr = Ptr::new("test");
109 assert!(ptr.at('t'));
110 assert!(!ptr.at('a'));
111 }
112
113 #[test]
114 fn test_at_str() {
115 let ptr = Ptr::new("test");
116 assert!(ptr.at_str("t"));
117 assert!(ptr.at_str("te"));
118 assert!(ptr.at_str("test"));
119 assert!(!ptr.at_str("tests"));
120 assert!(!ptr.at_str("rust"));
121 }
122
123 #[test]
124 fn test_at_p() {
125 let ptr = Ptr::new("test");
126 assert!(ptr.at_p(|c| c == 't'));
127 assert!(!ptr.at_p(|c| c == 'e'));
128 }
129
130 #[test]
131 fn test_nth_is_p() {
132 let ptr = Ptr::new("test");
133 assert!(ptr.nth_is_p(0, |c| c == 't'));
134 assert!(!ptr.nth_is_p(1, |c| c == 't'));
135 assert!(ptr.nth_is_p(3, |c| c == 't'));
136 assert!(!ptr.nth_is_p(150, |c| c == 't'));
137 }
138
139 #[test]
140 fn test_bump() {
141 let mut ptr = Ptr::new("test");
142 assert_eq!(ptr.current(), Some('t'));
143 ptr.bump();
144 assert_eq!(ptr.current(), Some('e'));
145 ptr.bump();
146 assert_eq!(ptr.current(), Some('s'));
147 ptr.bump();
148 assert_eq!(ptr.current(), Some('t'));
149 ptr.bump();
150 assert_eq!(ptr.current(), None);
151 ptr.bump();
152 assert_eq!(ptr.current(), None);
153 }
154
155 #[test]
156 fn test_bump_while() {
157 let mut ptr = Ptr::new("test");
158 assert_eq!(ptr.current(), Some('t'));
159 ptr.bump_while(|c| c != 's');
160 assert_eq!(ptr.current(), Some('s'));
161 }
162}
diff --git a/crates/ra_syntax/src/parsing/lexer/strings.rs b/crates/ra_syntax/src/parsing/lexer/strings.rs
deleted file mode 100644
index f74acff9e..000000000
--- a/crates/ra_syntax/src/parsing/lexer/strings.rs
+++ /dev/null
@@ -1,112 +0,0 @@
1use crate::{
2 parsing::lexer::ptr::Ptr,
3 SyntaxKind::{self, *},
4};
5
6pub(crate) fn is_string_literal_start(c: char, c1: Option<char>, c2: Option<char>) -> bool {
7 match (c, c1, c2) {
8 ('r', Some('"'), _)
9 | ('r', Some('#'), Some('"'))
10 | ('r', Some('#'), Some('#'))
11 | ('b', Some('"'), _)
12 | ('b', Some('\''), _)
13 | ('b', Some('r'), Some('"'))
14 | ('b', Some('r'), Some('#')) => true,
15 _ => false,
16 }
17}
18
19pub(crate) fn scan_char(ptr: &mut Ptr) {
20 while let Some(c) = ptr.current() {
21 match c {
22 '\\' => {
23 ptr.bump();
24 if ptr.at('\\') || ptr.at('\'') {
25 ptr.bump();
26 }
27 }
28 '\'' => {
29 ptr.bump();
30 return;
31 }
32 '\n' => return,
33 _ => {
34 ptr.bump();
35 }
36 }
37 }
38}
39
40pub(crate) fn scan_byte_char_or_string(ptr: &mut Ptr) -> SyntaxKind {
41 // unwrapping and not-exhaustive match are ok
42 // because of string_literal_start
43 let c = ptr.bump().unwrap();
44 match c {
45 '\'' => {
46 scan_byte(ptr);
47 BYTE
48 }
49 '"' => {
50 scan_byte_string(ptr);
51 BYTE_STRING
52 }
53 'r' => {
54 scan_raw_string(ptr);
55 RAW_BYTE_STRING
56 }
57 _ => unreachable!(),
58 }
59}
60
61pub(crate) fn scan_string(ptr: &mut Ptr) {
62 while let Some(c) = ptr.current() {
63 match c {
64 '\\' => {
65 ptr.bump();
66 if ptr.at('\\') || ptr.at('"') {
67 ptr.bump();
68 }
69 }
70 '"' => {
71 ptr.bump();
72 return;
73 }
74 _ => {
75 ptr.bump();
76 }
77 }
78 }
79}
80
81pub(crate) fn scan_raw_string(ptr: &mut Ptr) {
82 let mut hashes = 0;
83 while ptr.at('#') {
84 hashes += 1;
85 ptr.bump();
86 }
87 if !ptr.at('"') {
88 return;
89 }
90 ptr.bump();
91
92 while let Some(c) = ptr.bump() {
93 if c == '"' {
94 let mut hashes_left = hashes;
95 while ptr.at('#') && hashes_left > 0 {
96 hashes_left -= 1;
97 ptr.bump();
98 }
99 if hashes_left == 0 {
100 return;
101 }
102 }
103 }
104}
105
106fn scan_byte(ptr: &mut Ptr) {
107 scan_char(ptr)
108}
109
110fn scan_byte_string(ptr: &mut Ptr) {
111 scan_string(ptr)
112}
diff --git a/crates/ra_syntax/tests/data/lexer/0004_numbers.txt b/crates/ra_syntax/tests/data/lexer/0004_numbers.txt
index 39988aedc..7bb89b8ae 100644
--- a/crates/ra_syntax/tests/data/lexer/0004_numbers.txt
+++ b/crates/ra_syntax/tests/data/lexer/0004_numbers.txt
@@ -12,9 +12,9 @@ INT_NUMBER 2 "0_"
12WHITESPACE 1 " " 12WHITESPACE 1 " "
13FLOAT_NUMBER 2 "0." 13FLOAT_NUMBER 2 "0."
14WHITESPACE 1 " " 14WHITESPACE 1 " "
15INT_NUMBER 2 "0e" 15FLOAT_NUMBER 2 "0e"
16WHITESPACE 1 " " 16WHITESPACE 1 " "
17INT_NUMBER 2 "0E" 17FLOAT_NUMBER 2 "0E"
18WHITESPACE 1 " " 18WHITESPACE 1 " "
19INT_NUMBER 2 "0z" 19INT_NUMBER 2 "0z"
20WHITESPACE 1 "\n" 20WHITESPACE 1 "\n"
@@ -32,9 +32,9 @@ INT_NUMBER 6 "0_1279"
32WHITESPACE 1 " " 32WHITESPACE 1 " "
33FLOAT_NUMBER 6 "0.1279" 33FLOAT_NUMBER 6 "0.1279"
34WHITESPACE 1 " " 34WHITESPACE 1 " "
35INT_NUMBER 6 "0e1279" 35FLOAT_NUMBER 6 "0e1279"
36WHITESPACE 1 " " 36WHITESPACE 1 " "
37INT_NUMBER 6 "0E1279" 37FLOAT_NUMBER 6 "0E1279"
38WHITESPACE 1 "\n" 38WHITESPACE 1 "\n"
39INT_NUMBER 1 "0" 39INT_NUMBER 1 "0"
40DOT 1 "." 40DOT 1 "."
@@ -47,9 +47,7 @@ IDENT 3 "foo"
47L_PAREN 1 "(" 47L_PAREN 1 "("
48R_PAREN 1 ")" 48R_PAREN 1 ")"
49WHITESPACE 1 "\n" 49WHITESPACE 1 "\n"
50INT_NUMBER 2 "0e" 50FLOAT_NUMBER 4 "0e+1"
51PLUS 1 "+"
52INT_NUMBER 1 "1"
53WHITESPACE 1 "\n" 51WHITESPACE 1 "\n"
54INT_NUMBER 1 "0" 52INT_NUMBER 1 "0"
55DOT 1 "." 53DOT 1 "."
diff --git a/crates/ra_syntax/tests/data/lexer/0014_unclosed_char.txt b/crates/ra_syntax/tests/data/lexer/0014_unclosed_char.txt
index 812dfbc18..737a300ee 100644
--- a/crates/ra_syntax/tests/data/lexer/0014_unclosed_char.txt
+++ b/crates/ra_syntax/tests/data/lexer/0014_unclosed_char.txt
@@ -1 +1 @@
CHAR 2 "\'1" LIFETIME 2 "\'1"
diff --git a/crates/ra_syntax/tests/data/parser/err/0002_duplicate_shebang.txt b/crates/ra_syntax/tests/data/parser/err/0002_duplicate_shebang.txt
index 76d186a3c..84867026f 100644
--- a/crates/ra_syntax/tests/data/parser/err/0002_duplicate_shebang.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0002_duplicate_shebang.txt
@@ -1,7 +1,39 @@
1SOURCE_FILE@[0; 42) 1SOURCE_FILE@[0; 42)
2 SHEBANG@[0; 20) "#!/use/bin/env rusti" 2 SHEBANG@[0; 20) "#!/use/bin/env rusti"
3 WHITESPACE@[20; 21) "\n" 3 WHITESPACE@[20; 21) "\n"
4 ERROR@[21; 41) 4 ATTR@[21; 23)
5 SHEBANG@[21; 41) "#!/use/bin/env rusti" 5 POUND@[21; 22) "#"
6 EXCL@[22; 23) "!"
7 ERROR@[23; 24)
8 SLASH@[23; 24) "/"
9 USE_ITEM@[24; 28)
10 USE_KW@[24; 27) "use"
11 ERROR@[27; 28)
12 SLASH@[27; 28) "/"
13 MACRO_CALL@[28; 31)
14 PATH@[28; 31)
15 PATH_SEGMENT@[28; 31)
16 NAME_REF@[28; 31)
17 IDENT@[28; 31) "bin"
18 ERROR@[31; 32)
19 SLASH@[31; 32) "/"
20 MACRO_CALL@[32; 41)
21 PATH@[32; 35)
22 PATH_SEGMENT@[32; 35)
23 NAME_REF@[32; 35)
24 IDENT@[32; 35) "env"
25 WHITESPACE@[35; 36) " "
26 NAME@[36; 41)
27 IDENT@[36; 41) "rusti"
6 WHITESPACE@[41; 42) "\n" 28 WHITESPACE@[41; 42) "\n"
7error 21: expected an item 29error 23: expected `[`
30error 23: expected an item
31error 27: expected one of `*`, `::`, `{`, `self`, `super` or an indentifier
32error 28: expected SEMI
33error 31: expected EXCL
34error 31: expected `{`, `[`, `(`
35error 31: expected SEMI
36error 31: expected an item
37error 35: expected EXCL
38error 41: expected `{`, `[`, `(`
39error 41: expected SEMI
diff --git a/crates/ra_syntax/tests/data/parser/err/0030_string_suffixes.rs b/crates/ra_syntax/tests/data/parser/ok/0030_string_suffixes.rs
index 261aad1fb..261aad1fb 100644
--- a/crates/ra_syntax/tests/data/parser/err/0030_string_suffixes.rs
+++ b/crates/ra_syntax/tests/data/parser/ok/0030_string_suffixes.rs
diff --git a/crates/ra_syntax/tests/data/parser/err/0030_string_suffixes.txt b/crates/ra_syntax/tests/data/parser/ok/0030_string_suffixes.txt
index b0acfa5d2..4f7e809c5 100644
--- a/crates/ra_syntax/tests/data/parser/err/0030_string_suffixes.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0030_string_suffixes.txt
@@ -11,7 +11,7 @@ SOURCE_FILE@[0; 112)
11 BLOCK@[10; 111) 11 BLOCK@[10; 111)
12 L_CURLY@[10; 11) "{" 12 L_CURLY@[10; 11) "{"
13 WHITESPACE@[11; 16) "\n " 13 WHITESPACE@[11; 16) "\n "
14 LET_STMT@[16; 27) 14 LET_STMT@[16; 31)
15 LET_KW@[16; 19) "let" 15 LET_KW@[16; 19) "let"
16 WHITESPACE@[19; 20) " " 16 WHITESPACE@[19; 20) " "
17 PLACEHOLDER_PAT@[20; 21) 17 PLACEHOLDER_PAT@[20; 21)
@@ -19,14 +19,8 @@ SOURCE_FILE@[0; 112)
19 WHITESPACE@[21; 22) " " 19 WHITESPACE@[21; 22) " "
20 EQ@[22; 23) "=" 20 EQ@[22; 23) "="
21 WHITESPACE@[23; 24) " " 21 WHITESPACE@[23; 24) " "
22 LITERAL@[24; 27) 22 LITERAL@[24; 30)
23 CHAR@[24; 27) "\'c\'" 23 CHAR@[24; 30) "\'c\'u32"
24 EXPR_STMT@[27; 31)
25 PATH_EXPR@[27; 30)
26 PATH@[27; 30)
27 PATH_SEGMENT@[27; 30)
28 NAME_REF@[27; 30)
29 IDENT@[27; 30) "u32"
30 SEMI@[30; 31) ";" 24 SEMI@[30; 31) ";"
31 WHITESPACE@[31; 36) "\n " 25 WHITESPACE@[31; 36) "\n "
32 LET_STMT@[36; 60) 26 LET_STMT@[36; 60)
@@ -67,4 +61,3 @@ SOURCE_FILE@[0; 112)
67 WHITESPACE@[109; 110) "\n" 61 WHITESPACE@[109; 110) "\n"
68 R_CURLY@[110; 111) "}" 62 R_CURLY@[110; 111) "}"
69 WHITESPACE@[111; 112) "\n" 63 WHITESPACE@[111; 112) "\n"
70error 27: expected SEMI