aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Cargo.lock166
-rw-r--r--crates/ra_cli/Cargo.toml2
-rw-r--r--crates/ra_cli/src/main.rs3
-rw-r--r--crates/ra_hir/src/source_binder.rs2
-rw-r--r--crates/ra_hir_def/src/body.rs7
-rw-r--r--crates/ra_hir_def/src/nameres.rs29
-rw-r--r--crates/ra_hir_def/src/nameres/collector.rs4
-rw-r--r--crates/ra_hir_def/src/nameres/path_resolution.rs55
-rw-r--r--crates/ra_hir_def/src/resolver.rs38
-rw-r--r--crates/ra_hir_ty/src/tests.rs36
-rw-r--r--crates/ra_lsp_server/Cargo.toml2
-rw-r--r--crates/ra_lsp_server/src/main.rs7
-rw-r--r--crates/ra_lsp_server/tests/heavy_tests/main.rs1
-rw-r--r--crates/ra_lsp_server/tests/heavy_tests/support.rs3
-rw-r--r--docs/dev/README.md5
-rw-r--r--docs/user/README.md15
16 files changed, 220 insertions, 155 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 2557b5e59..57cfde978 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -10,7 +10,7 @@ dependencies = [
10 10
11[[package]] 11[[package]]
12name = "anyhow" 12name = "anyhow"
13version = "1.0.24" 13version = "1.0.25"
14source = "registry+https://github.com/rust-lang/crates.io-index" 14source = "registry+https://github.com/rust-lang/crates.io-index"
15 15
16[[package]] 16[[package]]
@@ -23,7 +23,7 @@ name = "atty"
23version = "0.2.13" 23version = "0.2.13"
24source = "registry+https://github.com/rust-lang/crates.io-index" 24source = "registry+https://github.com/rust-lang/crates.io-index"
25dependencies = [ 25dependencies = [
26 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 26 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
27 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 27 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
28] 28]
29 29
@@ -39,7 +39,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
39dependencies = [ 39dependencies = [
40 "backtrace-sys 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)", 40 "backtrace-sys 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
41 "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 41 "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
42 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 42 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
43 "rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", 43 "rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
44] 44]
45 45
@@ -49,7 +49,7 @@ version = "0.1.32"
49source = "registry+https://github.com/rust-lang/crates.io-index" 49source = "registry+https://github.com/rust-lang/crates.io-index"
50dependencies = [ 50dependencies = [
51 "cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)", 51 "cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)",
52 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 52 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
53] 53]
54 54
55[[package]] 55[[package]]
@@ -101,7 +101,7 @@ dependencies = [
101 101
102[[package]] 102[[package]]
103name = "cargo_metadata" 103name = "cargo_metadata"
104version = "0.9.0" 104version = "0.9.1"
105source = "registry+https://github.com/rust-lang/crates.io-index" 105source = "registry+https://github.com/rust-lang/crates.io-index"
106dependencies = [ 106dependencies = [
107 "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", 107 "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -127,7 +127,7 @@ source = "git+https://github.com/jackh726/chalk.git?rev=095cd38a4f16337913bba487
127dependencies = [ 127dependencies = [
128 "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 128 "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
129 "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 129 "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
130 "syn 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", 130 "syn 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)",
131] 131]
132 132
133[[package]] 133[[package]]
@@ -187,23 +187,13 @@ dependencies = [
187] 187]
188 188
189[[package]] 189[[package]]
190name = "chrono"
191version = "0.4.10"
192source = "registry+https://github.com/rust-lang/crates.io-index"
193dependencies = [
194 "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)",
195 "num-traits 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
196 "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
197]
198
199[[package]]
200name = "clicolors-control" 190name = "clicolors-control"
201version = "1.0.1" 191version = "1.0.1"
202source = "registry+https://github.com/rust-lang/crates.io-index" 192source = "registry+https://github.com/rust-lang/crates.io-index"
203dependencies = [ 193dependencies = [
204 "atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", 194 "atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
205 "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 195 "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
206 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 196 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
207 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 197 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
208] 198]
209 199
@@ -223,7 +213,7 @@ dependencies = [
223 "clicolors-control 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 213 "clicolors-control 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
224 "encode_unicode 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 214 "encode_unicode 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
225 "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 215 "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
226 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 216 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
227 "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 217 "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
228 "termios 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 218 "termios 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
229 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 219 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -324,12 +314,21 @@ version = "0.3.6"
324source = "registry+https://github.com/rust-lang/crates.io-index" 314source = "registry+https://github.com/rust-lang/crates.io-index"
325 315
326[[package]] 316[[package]]
317name = "env_logger"
318version = "0.7.1"
319source = "registry+https://github.com/rust-lang/crates.io-index"
320dependencies = [
321 "humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
322 "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
323]
324
325[[package]]
327name = "filetime" 326name = "filetime"
328version = "0.2.8" 327version = "0.2.8"
329source = "registry+https://github.com/rust-lang/crates.io-index" 328source = "registry+https://github.com/rust-lang/crates.io-index"
330dependencies = [ 329dependencies = [
331 "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 330 "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
332 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 331 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
333 "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", 332 "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)",
334 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 333 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
335] 334]
@@ -340,18 +339,6 @@ version = "0.1.9"
340source = "registry+https://github.com/rust-lang/crates.io-index" 339source = "registry+https://github.com/rust-lang/crates.io-index"
341 340
342[[package]] 341[[package]]
343name = "flexi_logger"
344version = "0.14.5"
345source = "registry+https://github.com/rust-lang/crates.io-index"
346dependencies = [
347 "chrono 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)",
348 "glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
349 "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
350 "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
351 "yansi 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
352]
353
354[[package]]
355name = "fnv" 342name = "fnv"
356version = "1.0.6" 343version = "1.0.6"
357source = "registry+https://github.com/rust-lang/crates.io-index" 344source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -380,7 +367,7 @@ name = "fsevent-sys"
380version = "2.0.1" 367version = "2.0.1"
381source = "registry+https://github.com/rust-lang/crates.io-index" 368source = "registry+https://github.com/rust-lang/crates.io-index"
382dependencies = [ 369dependencies = [
383 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 370 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
384] 371]
385 372
386[[package]] 373[[package]]
@@ -416,16 +403,11 @@ version = "0.1.13"
416source = "registry+https://github.com/rust-lang/crates.io-index" 403source = "registry+https://github.com/rust-lang/crates.io-index"
417dependencies = [ 404dependencies = [
418 "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 405 "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
419 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 406 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
420 "wasi 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 407 "wasi 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
421] 408]
422 409
423[[package]] 410[[package]]
424name = "glob"
425version = "0.3.0"
426source = "registry+https://github.com/rust-lang/crates.io-index"
427
428[[package]]
429name = "globset" 411name = "globset"
430version = "0.4.4" 412version = "0.4.4"
431source = "registry+https://github.com/rust-lang/crates.io-index" 413source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -450,7 +432,15 @@ name = "hermit-abi"
450version = "0.1.3" 432version = "0.1.3"
451source = "registry+https://github.com/rust-lang/crates.io-index" 433source = "registry+https://github.com/rust-lang/crates.io-index"
452dependencies = [ 434dependencies = [
453 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 435 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
436]
437
438[[package]]
439name = "humantime"
440version = "1.3.0"
441source = "registry+https://github.com/rust-lang/crates.io-index"
442dependencies = [
443 "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
454] 444]
455 445
456[[package]] 446[[package]]
@@ -478,7 +468,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
478dependencies = [ 468dependencies = [
479 "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 469 "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
480 "inotify-sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 470 "inotify-sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
481 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 471 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
482] 472]
483 473
484[[package]] 474[[package]]
@@ -486,7 +476,7 @@ name = "inotify-sys"
486version = "0.1.3" 476version = "0.1.3"
487source = "registry+https://github.com/rust-lang/crates.io-index" 477source = "registry+https://github.com/rust-lang/crates.io-index"
488dependencies = [ 478dependencies = [
489 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 479 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
490] 480]
491 481
492[[package]] 482[[package]]
@@ -508,7 +498,7 @@ name = "iovec"
508version = "0.1.4" 498version = "0.1.4"
509source = "registry+https://github.com/rust-lang/crates.io-index" 499source = "registry+https://github.com/rust-lang/crates.io-index"
510dependencies = [ 500dependencies = [
511 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 501 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
512] 502]
513 503
514[[package]] 504[[package]]
@@ -530,7 +520,7 @@ version = "0.3.3"
530source = "registry+https://github.com/rust-lang/crates.io-index" 520source = "registry+https://github.com/rust-lang/crates.io-index"
531dependencies = [ 521dependencies = [
532 "jemalloc-sys 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 522 "jemalloc-sys 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
533 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 523 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
534 "paste 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 524 "paste 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
535] 525]
536 526
@@ -541,7 +531,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
541dependencies = [ 531dependencies = [
542 "cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)", 532 "cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)",
543 "fs_extra 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 533 "fs_extra 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
544 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 534 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
545] 535]
546 536
547[[package]] 537[[package]]
@@ -550,7 +540,7 @@ version = "0.3.2"
550source = "registry+https://github.com/rust-lang/crates.io-index" 540source = "registry+https://github.com/rust-lang/crates.io-index"
551dependencies = [ 541dependencies = [
552 "jemalloc-sys 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 542 "jemalloc-sys 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
553 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 543 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
554] 544]
555 545
556[[package]] 546[[package]]
@@ -589,7 +579,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
589 579
590[[package]] 580[[package]]
591name = "libc" 581name = "libc"
592version = "0.2.65" 582version = "0.2.66"
593source = "registry+https://github.com/rust-lang/crates.io-index" 583source = "registry+https://github.com/rust-lang/crates.io-index"
594 584
595[[package]] 585[[package]]
@@ -664,7 +654,7 @@ dependencies = [
664 "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 654 "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
665 "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 655 "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
666 "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 656 "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
667 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 657 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
668 "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 658 "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
669 "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 659 "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
670 "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", 660 "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -700,7 +690,7 @@ version = "0.2.33"
700source = "registry+https://github.com/rust-lang/crates.io-index" 690source = "registry+https://github.com/rust-lang/crates.io-index"
701dependencies = [ 691dependencies = [
702 "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 692 "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
703 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 693 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
704 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 694 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
705] 695]
706 696
@@ -715,7 +705,7 @@ dependencies = [
715 "fsevent-sys 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 705 "fsevent-sys 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
716 "inotify 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", 706 "inotify 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
717 "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 707 "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
718 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 708 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
719 "mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)", 709 "mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)",
720 "mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)", 710 "mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
721 "walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)", 711 "walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -723,15 +713,6 @@ dependencies = [
723] 713]
724 714
725[[package]] 715[[package]]
726name = "num-integer"
727version = "0.1.41"
728source = "registry+https://github.com/rust-lang/crates.io-index"
729dependencies = [
730 "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
731 "num-traits 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
732]
733
734[[package]]
735name = "num-traits" 716name = "num-traits"
736version = "0.2.10" 717version = "0.2.10"
737source = "registry+https://github.com/rust-lang/crates.io-index" 718source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -745,7 +726,7 @@ version = "1.11.1"
745source = "registry+https://github.com/rust-lang/crates.io-index" 726source = "registry+https://github.com/rust-lang/crates.io-index"
746dependencies = [ 727dependencies = [
747 "hermit-abi 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 728 "hermit-abi 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
748 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 729 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
749] 730]
750 731
751[[package]] 732[[package]]
@@ -774,7 +755,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
774dependencies = [ 755dependencies = [
775 "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 756 "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
776 "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 757 "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
777 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 758 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
778 "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", 759 "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)",
779 "smallvec 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 760 "smallvec 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
780 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 761 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -797,7 +778,7 @@ dependencies = [
797 "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", 778 "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)",
798 "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 779 "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
799 "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 780 "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
800 "syn 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", 781 "syn 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)",
801] 782]
802 783
803[[package]] 784[[package]]
@@ -831,7 +812,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
831dependencies = [ 812dependencies = [
832 "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 813 "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
833 "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 814 "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
834 "syn 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", 815 "syn 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)",
835] 816]
836 817
837[[package]] 818[[package]]
@@ -928,7 +909,7 @@ dependencies = [
928name = "ra_cli" 909name = "ra_cli"
929version = "0.1.0" 910version = "0.1.0"
930dependencies = [ 911dependencies = [
931 "flexi_logger 0.14.5 (registry+https://github.com/rust-lang/crates.io-index)", 912 "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
932 "pico-args 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 913 "pico-args 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
933 "ra_batch 0.1.0", 914 "ra_batch 0.1.0",
934 "ra_db 0.1.0", 915 "ra_db 0.1.0",
@@ -1060,7 +1041,7 @@ name = "ra_lsp_server"
1060version = "0.1.0" 1041version = "0.1.0"
1061dependencies = [ 1042dependencies = [
1062 "crossbeam-channel 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1043 "crossbeam-channel 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
1063 "flexi_logger 0.14.5 (registry+https://github.com/rust-lang/crates.io-index)", 1044 "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
1064 "jod-thread 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1045 "jod-thread 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
1065 "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 1046 "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
1066 "lsp-server 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 1047 "lsp-server 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1117,7 +1098,7 @@ dependencies = [
1117name = "ra_project_model" 1098name = "ra_project_model"
1118version = "0.1.0" 1099version = "0.1.0"
1119dependencies = [ 1100dependencies = [
1120 "cargo_metadata 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", 1101 "cargo_metadata 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
1121 "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 1102 "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
1122 "ra_arena 0.1.0", 1103 "ra_arena 0.1.0",
1123 "ra_cfg 0.1.0", 1104 "ra_cfg 0.1.0",
@@ -1189,7 +1170,7 @@ version = "0.6.5"
1189source = "registry+https://github.com/rust-lang/crates.io-index" 1170source = "registry+https://github.com/rust-lang/crates.io-index"
1190dependencies = [ 1171dependencies = [
1191 "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", 1172 "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
1192 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 1173 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
1193 "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1174 "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
1194 "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1175 "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
1195 "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1176 "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1207,7 +1188,7 @@ version = "0.7.2"
1207source = "registry+https://github.com/rust-lang/crates.io-index" 1188source = "registry+https://github.com/rust-lang/crates.io-index"
1208dependencies = [ 1189dependencies = [
1209 "getrandom 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", 1190 "getrandom 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
1210 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 1191 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
1211 "rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 1192 "rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
1212 "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 1193 "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
1213 "rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 1194 "rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1282,7 +1263,7 @@ name = "rand_jitter"
1282version = "0.1.4" 1263version = "0.1.4"
1283source = "registry+https://github.com/rust-lang/crates.io-index" 1264source = "registry+https://github.com/rust-lang/crates.io-index"
1284dependencies = [ 1265dependencies = [
1285 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 1266 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
1286 "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1267 "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
1287 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 1268 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
1288] 1269]
@@ -1294,7 +1275,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1294dependencies = [ 1275dependencies = [
1295 "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 1276 "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
1296 "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1277 "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
1297 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 1278 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
1298 "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1279 "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
1299 "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1280 "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
1300 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 1281 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1467,7 +1448,7 @@ dependencies = [
1467 "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 1448 "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
1468 "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 1449 "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
1469 "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 1450 "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
1470 "syn 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", 1451 "syn 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)",
1471] 1452]
1472 1453
1473[[package]] 1454[[package]]
@@ -1512,7 +1493,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1512dependencies = [ 1493dependencies = [
1513 "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 1494 "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
1514 "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 1495 "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
1515 "syn 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", 1496 "syn 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)",
1516] 1497]
1517 1498
1518[[package]] 1499[[package]]
@@ -1532,7 +1513,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1532dependencies = [ 1513dependencies = [
1533 "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 1514 "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
1534 "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 1515 "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
1535 "syn 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", 1516 "syn 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)",
1536] 1517]
1537 1518
1538[[package]] 1519[[package]]
@@ -1571,7 +1552,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1571dependencies = [ 1552dependencies = [
1572 "cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)", 1553 "cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)",
1573 "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 1554 "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
1574 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 1555 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
1575 "psm 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1556 "psm 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
1576 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 1557 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
1577] 1558]
@@ -1583,7 +1564,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1583 1564
1584[[package]] 1565[[package]]
1585name = "syn" 1566name = "syn"
1586version = "1.0.8" 1567version = "1.0.11"
1587source = "registry+https://github.com/rust-lang/crates.io-index" 1568source = "registry+https://github.com/rust-lang/crates.io-index"
1588dependencies = [ 1569dependencies = [
1589 "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 1570 "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1597,7 +1578,7 @@ version = "3.1.0"
1597source = "registry+https://github.com/rust-lang/crates.io-index" 1578source = "registry+https://github.com/rust-lang/crates.io-index"
1598dependencies = [ 1579dependencies = [
1599 "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 1580 "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
1600 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 1581 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
1601 "rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 1582 "rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
1602 "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", 1583 "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)",
1603 "remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", 1584 "remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1609,7 +1590,7 @@ name = "termios"
1609version = "0.3.1" 1590version = "0.3.1"
1610source = "registry+https://github.com/rust-lang/crates.io-index" 1591source = "registry+https://github.com/rust-lang/crates.io-index"
1611dependencies = [ 1592dependencies = [
1612 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 1593 "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
1613] 1594]
1614 1595
1615[[package]] 1596[[package]]
@@ -1648,16 +1629,6 @@ dependencies = [
1648] 1629]
1649 1630
1650[[package]] 1631[[package]]
1651name = "time"
1652version = "0.1.42"
1653source = "registry+https://github.com/rust-lang/crates.io-index"
1654dependencies = [
1655 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)",
1656 "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)",
1657 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
1658]
1659
1660[[package]]
1661name = "unicase" 1632name = "unicase"
1662version = "2.6.0" 1633version = "2.6.0"
1663source = "registry+https://github.com/rust-lang/crates.io-index" 1634source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1781,7 +1752,7 @@ dependencies = [
1781name = "xtask" 1752name = "xtask"
1782version = "0.1.0" 1753version = "0.1.0"
1783dependencies = [ 1754dependencies = [
1784 "anyhow 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", 1755 "anyhow 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)",
1785 "pico-args 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 1756 "pico-args 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
1786 "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 1757 "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
1787 "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 1758 "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1798,14 +1769,9 @@ dependencies = [
1798 "linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", 1769 "linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
1799] 1770]
1800 1771
1801[[package]]
1802name = "yansi"
1803version = "0.5.0"
1804source = "registry+https://github.com/rust-lang/crates.io-index"
1805
1806[metadata] 1772[metadata]
1807"checksum aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "58fb5e95d83b38284460a5fda7d6470aa0b8844d283a0b614b8535e880800d2d" 1773"checksum aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "58fb5e95d83b38284460a5fda7d6470aa0b8844d283a0b614b8535e880800d2d"
1808"checksum anyhow 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)" = "b412394828b7ca486b362f300b762d8e43dafd6f0d727b63f1cd2ade207c6cef" 1774"checksum anyhow 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)" = "9267dff192e68f3399525901e709a48c1d3982c9c072fa32f2127a0cb0babf14"
1809"checksum arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8" 1775"checksum arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8"
1810"checksum atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "1803c647a3ec87095e7ae7acfca019e98de5ec9a7d01343f611cf3152ed71a90" 1776"checksum atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "1803c647a3ec87095e7ae7acfca019e98de5ec9a7d01343f611cf3152ed71a90"
1811"checksum autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2" 1777"checksum autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2"
@@ -1818,7 +1784,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1818"checksum bstr 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8d6c2c5b58ab920a4f5aeaaca34b4488074e8cc7596af94e6f8c6ff247c60245" 1784"checksum bstr 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8d6c2c5b58ab920a4f5aeaaca34b4488074e8cc7596af94e6f8c6ff247c60245"
1819"checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5" 1785"checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5"
1820"checksum c2-chacha 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "214238caa1bf3a496ec3392968969cab8549f96ff30652c9e56885329315f6bb" 1786"checksum c2-chacha 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "214238caa1bf3a496ec3392968969cab8549f96ff30652c9e56885329315f6bb"
1821"checksum cargo_metadata 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8d2d1617e838936c0d2323a65cc151e03ae19a7678dd24f72bccf27119b90a5d" 1787"checksum cargo_metadata 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "46e3374c604fb39d1a2f35ed5e4a4e30e60d01fab49446e08f1b3e9a90aef202"
1822"checksum cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)" = "aa87058dce70a3ff5621797f1506cb837edd02ac4c0ae642b4542dce802908b8" 1788"checksum cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)" = "aa87058dce70a3ff5621797f1506cb837edd02ac4c0ae642b4542dce802908b8"
1823"checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" 1789"checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
1824"checksum chalk-derive 0.1.0 (git+https://github.com/jackh726/chalk.git?rev=095cd38a4f16337913bba487f2055b9ca0179f30)" = "<none>" 1790"checksum chalk-derive 0.1.0 (git+https://github.com/jackh726/chalk.git?rev=095cd38a4f16337913bba487f2055b9ca0179f30)" = "<none>"
@@ -1827,7 +1793,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1827"checksum chalk-macros 0.1.1 (git+https://github.com/jackh726/chalk.git?rev=095cd38a4f16337913bba487f2055b9ca0179f30)" = "<none>" 1793"checksum chalk-macros 0.1.1 (git+https://github.com/jackh726/chalk.git?rev=095cd38a4f16337913bba487f2055b9ca0179f30)" = "<none>"
1828"checksum chalk-rust-ir 0.1.0 (git+https://github.com/jackh726/chalk.git?rev=095cd38a4f16337913bba487f2055b9ca0179f30)" = "<none>" 1794"checksum chalk-rust-ir 0.1.0 (git+https://github.com/jackh726/chalk.git?rev=095cd38a4f16337913bba487f2055b9ca0179f30)" = "<none>"
1829"checksum chalk-solve 0.1.0 (git+https://github.com/jackh726/chalk.git?rev=095cd38a4f16337913bba487f2055b9ca0179f30)" = "<none>" 1795"checksum chalk-solve 0.1.0 (git+https://github.com/jackh726/chalk.git?rev=095cd38a4f16337913bba487f2055b9ca0179f30)" = "<none>"
1830"checksum chrono 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "31850b4a4d6bae316f7a09e691c944c28299298837edc0a03f755618c23cbc01"
1831"checksum clicolors-control 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "90082ee5dcdd64dc4e9e0d37fbf3ee325419e39c0092191e0393df65518f741e" 1796"checksum clicolors-control 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "90082ee5dcdd64dc4e9e0d37fbf3ee325419e39c0092191e0393df65518f741e"
1832"checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" 1797"checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f"
1833"checksum console 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f5d540c2d34ac9dd0deb5f3b5f54c36c79efa78f6b3ad19106a554d07a7b5d9f" 1798"checksum console 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f5d540c2d34ac9dd0deb5f3b5f54c36c79efa78f6b3ad19106a554d07a7b5d9f"
@@ -1843,9 +1808,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1843"checksum either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3" 1808"checksum either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3"
1844"checksum ena 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8944dc8fa28ce4a38f778bd46bf7d923fe73eed5a439398507246c8e017e6f36" 1809"checksum ena 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8944dc8fa28ce4a38f778bd46bf7d923fe73eed5a439398507246c8e017e6f36"
1845"checksum encode_unicode 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" 1810"checksum encode_unicode 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f"
1811"checksum env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36"
1846"checksum filetime 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "1ff6d4dab0aa0c8e6346d46052e93b13a16cf847b54ed357087c35011048cc7d" 1812"checksum filetime 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "1ff6d4dab0aa0c8e6346d46052e93b13a16cf847b54ed357087c35011048cc7d"
1847"checksum fixedbitset 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "86d4de0081402f5e88cdac65c8dcdcc73118c1a7a465e2a05f0da05843a8ea33" 1813"checksum fixedbitset 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "86d4de0081402f5e88cdac65c8dcdcc73118c1a7a465e2a05f0da05843a8ea33"
1848"checksum flexi_logger 0.14.5 (registry+https://github.com/rust-lang/crates.io-index)" = "a13ea6b8a4debecf47bf3966d56db0e21366bc3a3649ba159e1a9e6fdd36a4f4"
1849"checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" 1814"checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3"
1850"checksum format-buf 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f7aea5a5909a74969507051a3b17adc84737e31a5f910559892aedce026f4d53" 1815"checksum format-buf 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f7aea5a5909a74969507051a3b17adc84737e31a5f910559892aedce026f4d53"
1851"checksum fs_extra 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5f2a4a2034423744d2cc7ca2068453168dcdb82c438419e639a26bd87839c674" 1816"checksum fs_extra 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5f2a4a2034423744d2cc7ca2068453168dcdb82c438419e639a26bd87839c674"
@@ -1856,10 +1821,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1856"checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" 1821"checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82"
1857"checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" 1822"checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7"
1858"checksum getrandom 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "e7db7ca94ed4cd01190ceee0d8a8052f08a247aa1b469a7f68c6a3b71afcf407" 1823"checksum getrandom 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "e7db7ca94ed4cd01190ceee0d8a8052f08a247aa1b469a7f68c6a3b71afcf407"
1859"checksum glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574"
1860"checksum globset 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "925aa2cac82d8834e2b2a4415b6f6879757fb5c0928fc445ae76461a12eed8f2" 1824"checksum globset 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "925aa2cac82d8834e2b2a4415b6f6879757fb5c0928fc445ae76461a12eed8f2"
1861"checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" 1825"checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205"
1862"checksum hermit-abi 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "307c3c9f937f38e3534b1d6447ecf090cafcc9744e4a6360e8b037b2cf5af120" 1826"checksum hermit-abi 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "307c3c9f937f38e3534b1d6447ecf090cafcc9744e4a6360e8b037b2cf5af120"
1827"checksum humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f"
1863"checksum idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9" 1828"checksum idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9"
1864"checksum indexmap 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712d7b3ea5827fcb9d4fda14bf4da5f136f0db2ae9c8f4bd4e2d1c6fde4e6db2" 1829"checksum indexmap 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712d7b3ea5827fcb9d4fda14bf4da5f136f0db2ae9c8f4bd4e2d1c6fde4e6db2"
1865"checksum inotify 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "40b54539f3910d6f84fbf9a643efd6e3aa6e4f001426c0329576128255994718" 1830"checksum inotify 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "40b54539f3910d6f84fbf9a643efd6e3aa6e4f001426c0329576128255994718"
@@ -1877,7 +1842,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1877"checksum lalrpop-intern 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cc4fd87be4a815fd373e02773983940f0d75fb26fde8c098e9e45f7af03154c0" 1842"checksum lalrpop-intern 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cc4fd87be4a815fd373e02773983940f0d75fb26fde8c098e9e45f7af03154c0"
1878"checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 1843"checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
1879"checksum lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f" 1844"checksum lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f"
1880"checksum libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)" = "1a31a0627fdf1f6a39ec0dd577e101440b7db22672c0901fe00a9a6fbb5c24e8" 1845"checksum libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)" = "d515b1f41455adea1313a4a2ac8a8a477634fbae63cc6100e3aebb207ce61558"
1881"checksum linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ae91b68aebc4ddb91978b11a1b02ddd8602a05ec19002801c5666000e05e0f83" 1846"checksum linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ae91b68aebc4ddb91978b11a1b02ddd8602a05ec19002801c5666000e05e0f83"
1882"checksum lock_api 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e57b3997725d2b60dbec1297f6c2e2957cc383db1cebd6be812163f969c7d586" 1847"checksum lock_api 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e57b3997725d2b60dbec1297f6c2e2957cc383db1cebd6be812163f969c7d586"
1883"checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" 1848"checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7"
@@ -1891,7 +1856,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1891"checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" 1856"checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919"
1892"checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" 1857"checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88"
1893"checksum notify 4.0.14 (registry+https://github.com/rust-lang/crates.io-index)" = "199628fc33b21bc767baa057490b00b382ecbae030803a7b36292422d15b778b" 1858"checksum notify 4.0.14 (registry+https://github.com/rust-lang/crates.io-index)" = "199628fc33b21bc767baa057490b00b382ecbae030803a7b36292422d15b778b"
1894"checksum num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)" = "b85e541ef8255f6cf42bbfe4ef361305c6c135d10919ecc26126c4e5ae94bc09"
1895"checksum num-traits 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "d4c81ffc11c212fa327657cb19dd85eb7419e163b5b076bede2bdb5c974c07e4" 1859"checksum num-traits 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "d4c81ffc11c212fa327657cb19dd85eb7419e163b5b076bede2bdb5c974c07e4"
1896"checksum num_cpus 1.11.1 (registry+https://github.com/rust-lang/crates.io-index)" = "76dac5ed2a876980778b8b85f75a71b6cbf0db0b1232ee12f826bccb00d09d72" 1860"checksum num_cpus 1.11.1 (registry+https://github.com/rust-lang/crates.io-index)" = "76dac5ed2a876980778b8b85f75a71b6cbf0db0b1232ee12f826bccb00d09d72"
1897"checksum once_cell 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "891f486f630e5c5a4916c7e16c4b24a53e78c860b646e9f8e005e4f16847bfed" 1861"checksum once_cell 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "891f486f630e5c5a4916c7e16c4b24a53e78c860b646e9f8e005e4f16847bfed"
@@ -1957,14 +1921,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1957"checksum smol_str 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "34836c9a295c62c2ce3514471117c5cb269891e8421b2aafdd910050576c4d8b" 1921"checksum smol_str 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "34836c9a295c62c2ce3514471117c5cb269891e8421b2aafdd910050576c4d8b"
1958"checksum stacker 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "d96fc4f13a0ac088e9a3cd9af1cc8c5cc1ab5deb2145cef661267dfc9c542f8a" 1922"checksum stacker 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "d96fc4f13a0ac088e9a3cd9af1cc8c5cc1ab5deb2145cef661267dfc9c542f8a"
1959"checksum superslice 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ab16ced94dbd8a46c82fd81e3ed9a8727dac2977ea869d217bcc4ea1f122e81f" 1923"checksum superslice 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ab16ced94dbd8a46c82fd81e3ed9a8727dac2977ea869d217bcc4ea1f122e81f"
1960"checksum syn 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "661641ea2aa15845cddeb97dad000d22070bb5c1fb456b96c1cba883ec691e92" 1924"checksum syn 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)" = "dff0acdb207ae2fe6d5976617f887eb1e35a2ba52c13c7234c790960cdad9238"
1961"checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" 1925"checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9"
1962"checksum termios 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "72b620c5ea021d75a735c943269bb07d30c9b77d6ac6b236bc8b5c496ef05625" 1926"checksum termios 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "72b620c5ea021d75a735c943269bb07d30c9b77d6ac6b236bc8b5c496ef05625"
1963"checksum text_unit 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e08bbcb7a3adbda0eb23431206b653bdad3d8dea311e72d36bf2215e27a42579" 1927"checksum text_unit 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e08bbcb7a3adbda0eb23431206b653bdad3d8dea311e72d36bf2215e27a42579"
1964"checksum thin-dst 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c52fd98a9e4913c466d83381a59245691875d2f3e04611fca57f964bd8aa96e1" 1928"checksum thin-dst 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c52fd98a9e4913c466d83381a59245691875d2f3e04611fca57f964bd8aa96e1"
1965"checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" 1929"checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b"
1966"checksum threadpool 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e2f0c90a5f3459330ac8bc0d2f879c693bb7a2f59689c1083fc4ef83834da865" 1930"checksum threadpool 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e2f0c90a5f3459330ac8bc0d2f879c693bb7a2f59689c1083fc4ef83834da865"
1967"checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f"
1968"checksum unicase 2.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" 1931"checksum unicase 2.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6"
1969"checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" 1932"checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5"
1970"checksum unicode-normalization 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b561e267b2326bb4cebfc0ef9e68355c7abe6c6f522aeac2f5bf95d56c59bdcf" 1933"checksum unicode-normalization 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b561e267b2326bb4cebfc0ef9e68355c7abe6c6f522aeac2f5bf95d56c59bdcf"
@@ -1983,4 +1946,3 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1983"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 1946"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
1984"checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" 1947"checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e"
1985"checksum yaml-rust 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "65923dd1784f44da1d2c3dbbc5e822045628c590ba72123e1c73d3c230c4434d" 1948"checksum yaml-rust 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "65923dd1784f44da1d2c3dbbc5e822045628c590ba72123e1c73d3c230c4434d"
1986"checksum yansi 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9fc79f4a1e39857fc00c3f662cbf2651c771f00e9c15fe2abc341806bd46bd71"
diff --git a/crates/ra_cli/Cargo.toml b/crates/ra_cli/Cargo.toml
index c7e0d0f0f..21a37c7bf 100644
--- a/crates/ra_cli/Cargo.toml
+++ b/crates/ra_cli/Cargo.toml
@@ -7,7 +7,7 @@ publish = false
7 7
8[dependencies] 8[dependencies]
9pico-args = "0.3.0" 9pico-args = "0.3.0"
10flexi_logger = "0.14.0" 10env_logger = { version = "0.7.1", default-features = false, features = ["humantime"] }
11 11
12ra_syntax = { path = "../ra_syntax" } 12ra_syntax = { path = "../ra_syntax" }
13ra_ide = { path = "../ra_ide" } 13ra_ide = { path = "../ra_ide" }
diff --git a/crates/ra_cli/src/main.rs b/crates/ra_cli/src/main.rs
index fe847e611..3808590ab 100644
--- a/crates/ra_cli/src/main.rs
+++ b/crates/ra_cli/src/main.rs
@@ -7,7 +7,6 @@ mod progress_report;
7 7
8use std::{error::Error, fmt::Write, io::Read}; 8use std::{error::Error, fmt::Write, io::Read};
9 9
10use flexi_logger::Logger;
11use pico_args::Arguments; 10use pico_args::Arguments;
12use ra_ide::{file_structure, Analysis}; 11use ra_ide::{file_structure, Analysis};
13use ra_prof::profile; 12use ra_prof::profile;
@@ -32,7 +31,7 @@ impl Verbosity {
32} 31}
33 32
34fn main() -> Result<()> { 33fn main() -> Result<()> {
35 Logger::with_env_or_str("error").start()?; 34 env_logger::try_init()?;
36 35
37 let subcommand = match std::env::args_os().nth(1) { 36 let subcommand = match std::env::args_os().nth(1) {
38 None => { 37 None => {
diff --git a/crates/ra_hir/src/source_binder.rs b/crates/ra_hir/src/source_binder.rs
index 1661d92a2..0df7a7cb4 100644
--- a/crates/ra_hir/src/source_binder.rs
+++ b/crates/ra_hir/src/source_binder.rs
@@ -286,7 +286,7 @@ impl SourceAnalyzer {
286 286
287 let items = self 287 let items = self
288 .resolver 288 .resolver
289 .resolve_module_path(db, &path) 289 .resolve_module_path_in_items(db, &path)
290 .take_types() 290 .take_types()
291 .map(|it| PathResolution::Def(it.into())); 291 .map(|it| PathResolution::Def(it.into()));
292 types.or(values).or(items).or_else(|| { 292 types.or(values).or(items).or_else(|| {
diff --git a/crates/ra_hir_def/src/body.rs b/crates/ra_hir_def/src/body.rs
index 69508dd8a..239f35229 100644
--- a/crates/ra_hir_def/src/body.rs
+++ b/crates/ra_hir_def/src/body.rs
@@ -15,7 +15,7 @@ use rustc_hash::FxHashMap;
15use crate::{ 15use crate::{
16 db::DefDatabase, 16 db::DefDatabase,
17 expr::{Expr, ExprId, Pat, PatId}, 17 expr::{Expr, ExprId, Pat, PatId},
18 nameres::CrateDefMap, 18 nameres::{BuiltinShadowMode, CrateDefMap},
19 path::Path, 19 path::Path,
20 src::HasSource, 20 src::HasSource,
21 DefWithBodyId, HasModule, Lookup, ModuleId, 21 DefWithBodyId, HasModule, Lookup, ModuleId,
@@ -83,7 +83,10 @@ impl Expander {
83 } 83 }
84 84
85 fn resolve_path_as_macro(&self, db: &impl DefDatabase, path: &Path) -> Option<MacroDefId> { 85 fn resolve_path_as_macro(&self, db: &impl DefDatabase, path: &Path) -> Option<MacroDefId> {
86 self.crate_def_map.resolve_path(db, self.module.local_id, path).0.take_macros() 86 self.crate_def_map
87 .resolve_path(db, self.module.local_id, path, BuiltinShadowMode::Other)
88 .0
89 .take_macros()
87 } 90 }
88} 91}
89 92
diff --git a/crates/ra_hir_def/src/nameres.rs b/crates/ra_hir_def/src/nameres.rs
index df42ea84a..3e1521870 100644
--- a/crates/ra_hir_def/src/nameres.rs
+++ b/crates/ra_hir_def/src/nameres.rs
@@ -149,6 +149,15 @@ static BUILTIN_SCOPE: Lazy<FxHashMap<Name, Resolution>> = Lazy::new(|| {
149 .collect() 149 .collect()
150}); 150});
151 151
152/// Shadow mode for builtin type which can be shadowed by module.
153#[derive(Debug, Copy, Clone, PartialEq, Eq)]
154pub enum BuiltinShadowMode {
155 // Prefer Module
156 Module,
157 // Prefer Other Types
158 Other,
159}
160
152/// Legacy macros can only be accessed through special methods like `get_legacy_macros`. 161/// Legacy macros can only be accessed through special methods like `get_legacy_macros`.
153/// Other methods will only resolve values, types and module scoped macros only. 162/// Other methods will only resolve values, types and module scoped macros only.
154impl ModuleScope { 163impl ModuleScope {
@@ -178,8 +187,20 @@ impl ModuleScope {
178 } 187 }
179 188
180 /// Get a name from current module scope, legacy macros are not included 189 /// Get a name from current module scope, legacy macros are not included
181 pub fn get(&self, name: &Name) -> Option<&Resolution> { 190 pub fn get(&self, name: &Name, shadow: BuiltinShadowMode) -> Option<&Resolution> {
182 self.items.get(name).or_else(|| BUILTIN_SCOPE.get(name)) 191 match shadow {
192 BuiltinShadowMode::Module => self.items.get(name).or_else(|| BUILTIN_SCOPE.get(name)),
193 BuiltinShadowMode::Other => {
194 let item = self.items.get(name);
195 if let Some(res) = item {
196 if let Some(ModuleDefId::ModuleId(_)) = res.def.take_types() {
197 return BUILTIN_SCOPE.get(name).or(item);
198 }
199 }
200
201 item.or_else(|| BUILTIN_SCOPE.get(name))
202 }
203 }
183 } 204 }
184 205
185 pub fn traits<'a>(&'a self) -> impl Iterator<Item = TraitId> + 'a { 206 pub fn traits<'a>(&'a self) -> impl Iterator<Item = TraitId> + 'a {
@@ -250,8 +271,10 @@ impl CrateDefMap {
250 db: &impl DefDatabase, 271 db: &impl DefDatabase,
251 original_module: LocalModuleId, 272 original_module: LocalModuleId,
252 path: &Path, 273 path: &Path,
274 shadow: BuiltinShadowMode,
253 ) -> (PerNs, Option<usize>) { 275 ) -> (PerNs, Option<usize>) {
254 let res = self.resolve_path_fp_with_macro(db, ResolveMode::Other, original_module, path); 276 let res =
277 self.resolve_path_fp_with_macro(db, ResolveMode::Other, original_module, path, shadow);
255 (res.resolved_def, res.segment_index) 278 (res.resolved_def, res.segment_index)
256 } 279 }
257} 280}
diff --git a/crates/ra_hir_def/src/nameres/collector.rs b/crates/ra_hir_def/src/nameres/collector.rs
index fd8245113..d4bfcae1d 100644
--- a/crates/ra_hir_def/src/nameres/collector.rs
+++ b/crates/ra_hir_def/src/nameres/collector.rs
@@ -19,7 +19,7 @@ use crate::{
19 db::DefDatabase, 19 db::DefDatabase,
20 nameres::{ 20 nameres::{
21 diagnostics::DefDiagnostic, mod_resolution::ModDir, path_resolution::ReachedFixedPoint, 21 diagnostics::DefDiagnostic, mod_resolution::ModDir, path_resolution::ReachedFixedPoint,
22 raw, CrateDefMap, ModuleData, Resolution, ResolveMode, 22 raw, BuiltinShadowMode, CrateDefMap, ModuleData, Resolution, ResolveMode,
23 }, 23 },
24 path::{Path, PathKind}, 24 path::{Path, PathKind},
25 per_ns::PerNs, 25 per_ns::PerNs,
@@ -299,6 +299,7 @@ where
299 ResolveMode::Import, 299 ResolveMode::Import,
300 module_id, 300 module_id,
301 &import.path, 301 &import.path,
302 BuiltinShadowMode::Module,
302 ); 303 );
303 304
304 (res.resolved_def, res.reached_fixedpoint) 305 (res.resolved_def, res.reached_fixedpoint)
@@ -477,6 +478,7 @@ where
477 ResolveMode::Other, 478 ResolveMode::Other,
478 *module_id, 479 *module_id,
479 path, 480 path,
481 BuiltinShadowMode::Module,
480 ); 482 );
481 483
482 if let Some(def) = resolved_res.resolved_def.take_macros() { 484 if let Some(def) = resolved_res.resolved_def.take_macros() {
diff --git a/crates/ra_hir_def/src/nameres/path_resolution.rs b/crates/ra_hir_def/src/nameres/path_resolution.rs
index b72c55bd1..42a75226b 100644
--- a/crates/ra_hir_def/src/nameres/path_resolution.rs
+++ b/crates/ra_hir_def/src/nameres/path_resolution.rs
@@ -16,7 +16,7 @@ use test_utils::tested_by;
16 16
17use crate::{ 17use crate::{
18 db::DefDatabase, 18 db::DefDatabase,
19 nameres::CrateDefMap, 19 nameres::{BuiltinShadowMode, CrateDefMap},
20 path::{Path, PathKind}, 20 path::{Path, PathKind},
21 per_ns::PerNs, 21 per_ns::PerNs,
22 AdtId, EnumVariantId, LocalModuleId, ModuleDefId, ModuleId, 22 AdtId, EnumVariantId, LocalModuleId, ModuleDefId, ModuleId,
@@ -68,7 +68,17 @@ impl CrateDefMap {
68 mode: ResolveMode, 68 mode: ResolveMode,
69 original_module: LocalModuleId, 69 original_module: LocalModuleId,
70 path: &Path, 70 path: &Path,
71 shadow: BuiltinShadowMode,
71 ) -> ResolvePathResult { 72 ) -> ResolvePathResult {
73 // if it is not the last segment, we prefer the module to the builtin
74 let prefer_module = |index| {
75 if index == path.segments.len() - 1 {
76 shadow
77 } else {
78 BuiltinShadowMode::Module
79 }
80 };
81
72 let mut segments = path.segments.iter().enumerate(); 82 let mut segments = path.segments.iter().enumerate();
73 let mut curr_per_ns: PerNs = match path.kind { 83 let mut curr_per_ns: PerNs = match path.kind {
74 PathKind::DollarCrate(krate) => { 84 PathKind::DollarCrate(krate) => {
@@ -96,20 +106,20 @@ impl CrateDefMap {
96 if self.edition == Edition::Edition2015 106 if self.edition == Edition::Edition2015
97 && (path.kind == PathKind::Abs || mode == ResolveMode::Import) => 107 && (path.kind == PathKind::Abs || mode == ResolveMode::Import) =>
98 { 108 {
99 let segment = match segments.next() { 109 let (idx, segment) = match segments.next() {
100 Some((_, segment)) => segment, 110 Some((idx, segment)) => (idx, segment),
101 None => return ResolvePathResult::empty(ReachedFixedPoint::Yes), 111 None => return ResolvePathResult::empty(ReachedFixedPoint::Yes),
102 }; 112 };
103 log::debug!("resolving {:?} in crate root (+ extern prelude)", segment); 113 log::debug!("resolving {:?} in crate root (+ extern prelude)", segment);
104 self.resolve_name_in_crate_root_or_extern_prelude(&segment.name) 114 self.resolve_name_in_crate_root_or_extern_prelude(&segment.name, prefer_module(idx))
105 } 115 }
106 PathKind::Plain => { 116 PathKind::Plain => {
107 let segment = match segments.next() { 117 let (idx, segment) = match segments.next() {
108 Some((_, segment)) => segment, 118 Some((idx, segment)) => (idx, segment),
109 None => return ResolvePathResult::empty(ReachedFixedPoint::Yes), 119 None => return ResolvePathResult::empty(ReachedFixedPoint::Yes),
110 }; 120 };
111 log::debug!("resolving {:?} in module", segment); 121 log::debug!("resolving {:?} in module", segment);
112 self.resolve_name_in_module(db, original_module, &segment.name) 122 self.resolve_name_in_module(db, original_module, &segment.name, prefer_module(idx))
113 } 123 }
114 PathKind::Super => { 124 PathKind::Super => {
115 if let Some(p) = self.modules[original_module].parent { 125 if let Some(p) = self.modules[original_module].parent {
@@ -160,7 +170,7 @@ impl CrateDefMap {
160 Path { segments: path.segments[i..].to_vec(), kind: PathKind::Self_ }; 170 Path { segments: path.segments[i..].to_vec(), kind: PathKind::Self_ };
161 log::debug!("resolving {:?} in other crate", path); 171 log::debug!("resolving {:?} in other crate", path);
162 let defp_map = db.crate_def_map(module.krate); 172 let defp_map = db.crate_def_map(module.krate);
163 let (def, s) = defp_map.resolve_path(db, module.local_id, &path); 173 let (def, s) = defp_map.resolve_path(db, module.local_id, &path, shadow);
164 return ResolvePathResult::with( 174 return ResolvePathResult::with(
165 def, 175 def,
166 ReachedFixedPoint::Yes, 176 ReachedFixedPoint::Yes,
@@ -169,7 +179,7 @@ impl CrateDefMap {
169 } 179 }
170 180
171 // Since it is a qualified path here, it should not contains legacy macros 181 // Since it is a qualified path here, it should not contains legacy macros
172 match self[module.local_id].scope.get(&segment.name) { 182 match self[module.local_id].scope.get(&segment.name, prefer_module(i)) {
173 Some(res) => res.def, 183 Some(res) => res.def,
174 _ => { 184 _ => {
175 log::debug!("path segment {:?} not found", segment.name); 185 log::debug!("path segment {:?} not found", segment.name);
@@ -212,6 +222,7 @@ impl CrateDefMap {
212 } 222 }
213 }; 223 };
214 } 224 }
225
215 ResolvePathResult::with(curr_per_ns, ReachedFixedPoint::Yes, None) 226 ResolvePathResult::with(curr_per_ns, ReachedFixedPoint::Yes, None)
216 } 227 }
217 228
@@ -220,6 +231,7 @@ impl CrateDefMap {
220 db: &impl DefDatabase, 231 db: &impl DefDatabase,
221 module: LocalModuleId, 232 module: LocalModuleId,
222 name: &Name, 233 name: &Name,
234 shadow: BuiltinShadowMode,
223 ) -> PerNs { 235 ) -> PerNs {
224 // Resolve in: 236 // Resolve in:
225 // - legacy scope of macro 237 // - legacy scope of macro
@@ -228,23 +240,33 @@ impl CrateDefMap {
228 // - std prelude 240 // - std prelude
229 let from_legacy_macro = 241 let from_legacy_macro =
230 self[module].scope.get_legacy_macro(name).map_or_else(PerNs::none, PerNs::macros); 242 self[module].scope.get_legacy_macro(name).map_or_else(PerNs::none, PerNs::macros);
231 let from_scope = self[module].scope.get(name).map_or_else(PerNs::none, |res| res.def); 243 let from_scope =
244 self[module].scope.get(name, shadow).map_or_else(PerNs::none, |res| res.def);
232 let from_extern_prelude = 245 let from_extern_prelude =
233 self.extern_prelude.get(name).map_or(PerNs::none(), |&it| PerNs::types(it)); 246 self.extern_prelude.get(name).map_or(PerNs::none(), |&it| PerNs::types(it));
234 let from_prelude = self.resolve_in_prelude(db, name); 247 let from_prelude = self.resolve_in_prelude(db, name, shadow);
235 248
236 from_legacy_macro.or(from_scope).or(from_extern_prelude).or(from_prelude) 249 from_legacy_macro.or(from_scope).or(from_extern_prelude).or(from_prelude)
237 } 250 }
238 251
239 fn resolve_name_in_crate_root_or_extern_prelude(&self, name: &Name) -> PerNs { 252 fn resolve_name_in_crate_root_or_extern_prelude(
253 &self,
254 name: &Name,
255 shadow: BuiltinShadowMode,
256 ) -> PerNs {
240 let from_crate_root = 257 let from_crate_root =
241 self[self.root].scope.get(name).map_or_else(PerNs::none, |res| res.def); 258 self[self.root].scope.get(name, shadow).map_or_else(PerNs::none, |res| res.def);
242 let from_extern_prelude = self.resolve_name_in_extern_prelude(name); 259 let from_extern_prelude = self.resolve_name_in_extern_prelude(name);
243 260
244 from_crate_root.or(from_extern_prelude) 261 from_crate_root.or(from_extern_prelude)
245 } 262 }
246 263
247 fn resolve_in_prelude(&self, db: &impl DefDatabase, name: &Name) -> PerNs { 264 fn resolve_in_prelude(
265 &self,
266 db: &impl DefDatabase,
267 name: &Name,
268 shadow: BuiltinShadowMode,
269 ) -> PerNs {
248 if let Some(prelude) = self.prelude { 270 if let Some(prelude) = self.prelude {
249 let keep; 271 let keep;
250 let def_map = if prelude.krate == self.krate { 272 let def_map = if prelude.krate == self.krate {
@@ -254,7 +276,10 @@ impl CrateDefMap {
254 keep = db.crate_def_map(prelude.krate); 276 keep = db.crate_def_map(prelude.krate);
255 &keep 277 &keep
256 }; 278 };
257 def_map[prelude.local_id].scope.get(name).map_or_else(PerNs::none, |res| res.def) 279 def_map[prelude.local_id]
280 .scope
281 .get(name, shadow)
282 .map_or_else(PerNs::none, |res| res.def)
258 } else { 283 } else {
259 PerNs::none() 284 PerNs::none()
260 } 285 }
diff --git a/crates/ra_hir_def/src/resolver.rs b/crates/ra_hir_def/src/resolver.rs
index 0847f6dcf..7d4df222e 100644
--- a/crates/ra_hir_def/src/resolver.rs
+++ b/crates/ra_hir_def/src/resolver.rs
@@ -14,7 +14,7 @@ use crate::{
14 db::DefDatabase, 14 db::DefDatabase,
15 expr::{ExprId, PatId}, 15 expr::{ExprId, PatId},
16 generics::GenericParams, 16 generics::GenericParams,
17 nameres::CrateDefMap, 17 nameres::{BuiltinShadowMode, CrateDefMap},
18 path::{Path, PathKind}, 18 path::{Path, PathKind},
19 per_ns::PerNs, 19 per_ns::PerNs,
20 AdtId, AstItemDef, ConstId, ContainerId, DefWithBodyId, EnumId, EnumVariantId, FunctionId, 20 AdtId, AstItemDef, ConstId, ContainerId, DefWithBodyId, EnumId, EnumVariantId, FunctionId,
@@ -91,7 +91,7 @@ pub enum ValueNs {
91impl Resolver { 91impl Resolver {
92 /// Resolve known trait from std, like `std::futures::Future` 92 /// Resolve known trait from std, like `std::futures::Future`
93 pub fn resolve_known_trait(&self, db: &impl DefDatabase, path: &Path) -> Option<TraitId> { 93 pub fn resolve_known_trait(&self, db: &impl DefDatabase, path: &Path) -> Option<TraitId> {
94 let res = self.resolve_module_path(db, path).take_types()?; 94 let res = self.resolve_module_path(db, path, BuiltinShadowMode::Other).take_types()?;
95 match res { 95 match res {
96 ModuleDefId::TraitId(it) => Some(it), 96 ModuleDefId::TraitId(it) => Some(it),
97 _ => None, 97 _ => None,
@@ -100,7 +100,7 @@ impl Resolver {
100 100
101 /// Resolve known struct from std, like `std::boxed::Box` 101 /// Resolve known struct from std, like `std::boxed::Box`
102 pub fn resolve_known_struct(&self, db: &impl DefDatabase, path: &Path) -> Option<StructId> { 102 pub fn resolve_known_struct(&self, db: &impl DefDatabase, path: &Path) -> Option<StructId> {
103 let res = self.resolve_module_path(db, path).take_types()?; 103 let res = self.resolve_module_path(db, path, BuiltinShadowMode::Other).take_types()?;
104 match res { 104 match res {
105 ModuleDefId::AdtId(AdtId::StructId(it)) => Some(it), 105 ModuleDefId::AdtId(AdtId::StructId(it)) => Some(it),
106 _ => None, 106 _ => None,
@@ -109,26 +109,34 @@ impl Resolver {
109 109
110 /// Resolve known enum from std, like `std::result::Result` 110 /// Resolve known enum from std, like `std::result::Result`
111 pub fn resolve_known_enum(&self, db: &impl DefDatabase, path: &Path) -> Option<EnumId> { 111 pub fn resolve_known_enum(&self, db: &impl DefDatabase, path: &Path) -> Option<EnumId> {
112 let res = self.resolve_module_path(db, path).take_types()?; 112 let res = self.resolve_module_path(db, path, BuiltinShadowMode::Other).take_types()?;
113 match res { 113 match res {
114 ModuleDefId::AdtId(AdtId::EnumId(it)) => Some(it), 114 ModuleDefId::AdtId(AdtId::EnumId(it)) => Some(it),
115 _ => None, 115 _ => None,
116 } 116 }
117 } 117 }
118 118
119 /// pub only for source-binder 119 fn resolve_module_path(
120 pub fn resolve_module_path(&self, db: &impl DefDatabase, path: &Path) -> PerNs { 120 &self,
121 db: &impl DefDatabase,
122 path: &Path,
123 shadow: BuiltinShadowMode,
124 ) -> PerNs {
121 let (item_map, module) = match self.module() { 125 let (item_map, module) = match self.module() {
122 Some(it) => it, 126 Some(it) => it,
123 None => return PerNs::none(), 127 None => return PerNs::none(),
124 }; 128 };
125 let (module_res, segment_index) = item_map.resolve_path(db, module, path); 129 let (module_res, segment_index) = item_map.resolve_path(db, module, path, shadow);
126 if segment_index.is_some() { 130 if segment_index.is_some() {
127 return PerNs::none(); 131 return PerNs::none();
128 } 132 }
129 module_res 133 module_res
130 } 134 }
131 135
136 pub fn resolve_module_path_in_items(&self, db: &impl DefDatabase, path: &Path) -> PerNs {
137 self.resolve_module_path(db, path, BuiltinShadowMode::Module)
138 }
139
132 pub fn resolve_path_in_type_ns( 140 pub fn resolve_path_in_type_ns(
133 &self, 141 &self,
134 db: &impl DefDatabase, 142 db: &impl DefDatabase,
@@ -163,7 +171,12 @@ impl Resolver {
163 } 171 }
164 } 172 }
165 Scope::ModuleScope(m) => { 173 Scope::ModuleScope(m) => {
166 let (module_def, idx) = m.crate_def_map.resolve_path(db, m.module_id, path); 174 let (module_def, idx) = m.crate_def_map.resolve_path(
175 db,
176 m.module_id,
177 path,
178 BuiltinShadowMode::Other,
179 );
167 let res = match module_def.take_types()? { 180 let res = match module_def.take_types()? {
168 ModuleDefId::AdtId(it) => TypeNs::AdtId(it), 181 ModuleDefId::AdtId(it) => TypeNs::AdtId(it),
169 ModuleDefId::EnumVariantId(it) => TypeNs::EnumVariantId(it), 182 ModuleDefId::EnumVariantId(it) => TypeNs::EnumVariantId(it),
@@ -256,7 +269,12 @@ impl Resolver {
256 Scope::ImplBlockScope(_) | Scope::AdtScope(_) => continue, 269 Scope::ImplBlockScope(_) | Scope::AdtScope(_) => continue,
257 270
258 Scope::ModuleScope(m) => { 271 Scope::ModuleScope(m) => {
259 let (module_def, idx) = m.crate_def_map.resolve_path(db, m.module_id, path); 272 let (module_def, idx) = m.crate_def_map.resolve_path(
273 db,
274 m.module_id,
275 path,
276 BuiltinShadowMode::Other,
277 );
260 return match idx { 278 return match idx {
261 None => { 279 None => {
262 let value = match module_def.take_values()? { 280 let value = match module_def.take_values()? {
@@ -310,7 +328,7 @@ impl Resolver {
310 328
311 pub fn resolve_path_as_macro(&self, db: &impl DefDatabase, path: &Path) -> Option<MacroDefId> { 329 pub fn resolve_path_as_macro(&self, db: &impl DefDatabase, path: &Path) -> Option<MacroDefId> {
312 let (item_map, module) = self.module()?; 330 let (item_map, module) = self.module()?;
313 item_map.resolve_path(db, module, path).0.take_macros() 331 item_map.resolve_path(db, module, path, BuiltinShadowMode::Other).0.take_macros()
314 } 332 }
315 333
316 pub fn process_all_names(&self, db: &impl DefDatabase, f: &mut dyn FnMut(Name, ScopeDef)) { 334 pub fn process_all_names(&self, db: &impl DefDatabase, f: &mut dyn FnMut(Name, ScopeDef)) {
diff --git a/crates/ra_hir_ty/src/tests.rs b/crates/ra_hir_ty/src/tests.rs
index c856d6afd..a3cc5cf95 100644
--- a/crates/ra_hir_ty/src/tests.rs
+++ b/crates/ra_hir_ty/src/tests.rs
@@ -3694,6 +3694,42 @@ fn main() {
3694} 3694}
3695 3695
3696#[test] 3696#[test]
3697fn not_shadowing_primitive_by_module() {
3698 let t = type_at(
3699 r#"
3700//- /str.rs
3701fn foo() {}
3702
3703//- /main.rs
3704mod str;
3705fn foo() -> &'static str { "" }
3706
3707fn main() {
3708 foo()<|>;
3709}"#,
3710 );
3711 assert_eq!(t, "&str");
3712}
3713
3714#[test]
3715fn not_shadowing_module_by_primitive() {
3716 let t = type_at(
3717 r#"
3718//- /str.rs
3719fn foo() -> u32 {0}
3720
3721//- /main.rs
3722mod str;
3723fn foo() -> &'static str { "" }
3724
3725fn main() {
3726 str::foo()<|>;
3727}"#,
3728 );
3729 assert_eq!(t, "u32");
3730}
3731
3732#[test]
3697fn deref_trait() { 3733fn deref_trait() {
3698 let t = type_at( 3734 let t = type_at(
3699 r#" 3735 r#"
diff --git a/crates/ra_lsp_server/Cargo.toml b/crates/ra_lsp_server/Cargo.toml
index 21aef842c..41672eaff 100644
--- a/crates/ra_lsp_server/Cargo.toml
+++ b/crates/ra_lsp_server/Cargo.toml
@@ -13,7 +13,6 @@ relative-path = "1.0.0"
13serde_json = "1.0.34" 13serde_json = "1.0.34"
14serde = { version = "1.0.83", features = ["derive"] } 14serde = { version = "1.0.83", features = ["derive"] }
15crossbeam-channel = "0.4" 15crossbeam-channel = "0.4"
16flexi_logger = "0.14.0"
17log = "0.4.3" 16log = "0.4.3"
18lsp-types = { version = "0.61.0", features = ["proposed"] } 17lsp-types = { version = "0.61.0", features = ["proposed"] }
19rustc-hash = "1.0" 18rustc-hash = "1.0"
@@ -27,6 +26,7 @@ lsp-server = "0.3.0"
27ra_project_model = { path = "../ra_project_model" } 26ra_project_model = { path = "../ra_project_model" }
28ra_prof = { path = "../ra_prof" } 27ra_prof = { path = "../ra_prof" }
29ra_vfs_glob = { path = "../ra_vfs_glob" } 28ra_vfs_glob = { path = "../ra_vfs_glob" }
29env_logger = { version = "0.7.1", default-features = false, features = ["humantime"] }
30 30
31[dev-dependencies] 31[dev-dependencies]
32tempfile = "3" 32tempfile = "3"
diff --git a/crates/ra_lsp_server/src/main.rs b/crates/ra_lsp_server/src/main.rs
index e13c8ca14..8076a7fa5 100644
--- a/crates/ra_lsp_server/src/main.rs
+++ b/crates/ra_lsp_server/src/main.rs
@@ -1,6 +1,5 @@
1//! `ra_lsp_server` binary 1//! `ra_lsp_server` binary
2 2
3use flexi_logger::{Duplicate, Logger};
4use lsp_server::Connection; 3use lsp_server::Connection;
5use ra_lsp_server::{show_message, Result, ServerConfig}; 4use ra_lsp_server::{show_message, Result, ServerConfig};
6use ra_prof; 5use ra_prof;
@@ -14,11 +13,7 @@ fn main() -> Result<()> {
14fn setup_logging() -> Result<()> { 13fn setup_logging() -> Result<()> {
15 std::env::set_var("RUST_BACKTRACE", "short"); 14 std::env::set_var("RUST_BACKTRACE", "short");
16 15
17 let logger = Logger::with_env_or_str("error").duplicate_to_stderr(Duplicate::All); 16 env_logger::try_init()?;
18 match std::env::var("RA_LOG_DIR") {
19 Ok(ref v) if v == "1" => logger.log_to_file().directory("log").start()?,
20 _ => logger.start()?,
21 };
22 17
23 ra_prof::set_filter(match std::env::var("RA_PROFILE") { 18 ra_prof::set_filter(match std::env::var("RA_PROFILE") {
24 Ok(spec) => ra_prof::Filter::from_spec(&spec), 19 Ok(spec) => ra_prof::Filter::from_spec(&spec),
diff --git a/crates/ra_lsp_server/tests/heavy_tests/main.rs b/crates/ra_lsp_server/tests/heavy_tests/main.rs
index 2ba82ab05..29224cbe8 100644
--- a/crates/ra_lsp_server/tests/heavy_tests/main.rs
+++ b/crates/ra_lsp_server/tests/heavy_tests/main.rs
@@ -15,7 +15,6 @@ use tempfile::TempDir;
15 15
16use crate::support::{project, Project}; 16use crate::support::{project, Project};
17 17
18const LOG: &'static str = "";
19const PROFILE: &'static str = ""; 18const PROFILE: &'static str = "";
20// const PROFILE: &'static str = "*@3>100"; 19// const PROFILE: &'static str = "*@3>100";
21 20
diff --git a/crates/ra_lsp_server/tests/heavy_tests/support.rs b/crates/ra_lsp_server/tests/heavy_tests/support.rs
index 86073b57d..d5ea52fa9 100644
--- a/crates/ra_lsp_server/tests/heavy_tests/support.rs
+++ b/crates/ra_lsp_server/tests/heavy_tests/support.rs
@@ -7,7 +7,6 @@ use std::{
7}; 7};
8 8
9use crossbeam_channel::{after, select, Receiver}; 9use crossbeam_channel::{after, select, Receiver};
10use flexi_logger::Logger;
11use lsp_server::{Connection, Message, Notification, Request}; 10use lsp_server::{Connection, Message, Notification, Request};
12use lsp_types::{ 11use lsp_types::{
13 notification::{DidOpenTextDocument, Exit}, 12 notification::{DidOpenTextDocument, Exit},
@@ -53,7 +52,7 @@ impl<'a> Project<'a> {
53 let tmp_dir = self.tmp_dir.unwrap_or_else(|| TempDir::new().unwrap()); 52 let tmp_dir = self.tmp_dir.unwrap_or_else(|| TempDir::new().unwrap());
54 static INIT: Once = Once::new(); 53 static INIT: Once = Once::new();
55 INIT.call_once(|| { 54 INIT.call_once(|| {
56 let _ = Logger::with_env_or_str(crate::LOG).start().unwrap(); 55 let _ = env_logger::builder().is_test(true).try_init().unwrap();
57 ra_prof::set_filter(if crate::PROFILE.is_empty() { 56 ra_prof::set_filter(if crate::PROFILE.is_empty() {
58 ra_prof::Filter::disabled() 57 ra_prof::Filter::disabled()
59 } else { 58 } else {
diff --git a/docs/dev/README.md b/docs/dev/README.md
index 0f64d7e5f..2f6215d6b 100644
--- a/docs/dev/README.md
+++ b/docs/dev/README.md
@@ -124,9 +124,8 @@ Logging is done by both rust-analyzer and VS Code, so it might be tricky to
124figure out where logs go. 124figure out where logs go.
125 125
126Inside rust-analyzer, we use the standard `log` crate for logging, and 126Inside rust-analyzer, we use the standard `log` crate for logging, and
127`flexi_logger` for logging frotend. By default, log goes to stderr (the same as 127`env_logger` for logging frontend. By default, log goes to stderr, but the
128with `env_logger`), but the stderr itself is processed by VS Code. To mirror 128stderr itself is processed by VS Code.
129logs to a `./log` directory, set `RA_LOG_DIR=1` environmental variable.
130 129
131To see stderr in the running VS Code instance, go to the "Output" tab of the 130To see stderr in the running VS Code instance, go to the "Output" tab of the
132panel and select `rust-analyzer`. This shows `eprintln!` as well. Note that 131panel and select `rust-analyzer`. This shows `eprintln!` as well. Note that
diff --git a/docs/user/README.md b/docs/user/README.md
index 913ecea18..adacead52 100644
--- a/docs/user/README.md
+++ b/docs/user/README.md
@@ -1,14 +1,19 @@
1The main interface to rust-analyzer is the 1The main interface to rust-analyzer is the
2[LSP](https://microsoft.github.io/language-server-protocol/) implementation. To 2[LSP](https://microsoft.github.io/language-server-protocol/) implementation. To
3install lsp server, use `cargo xtask install --server`, which is a shorthand for `cargo 3install lsp server, clone the repository and then run `cargo xtask install
4install --package ra_lsp_server`. The binary is named `ra_lsp_server`, you 4--server` (which is shorthand for `cargo install --path
5should be able to use it with any LSP-compatible editor. We use custom 5./crates/ra_lsp_server`). This will produce a binary named `ra_lsp_server` which
6you should be able to use it with any LSP-compatible editor. We use custom
6extensions to LSP, so special client-side support is required to take full 7extensions to LSP, so special client-side support is required to take full
7advantage of rust-analyzer. This repository contains support code for VS Code 8advantage of rust-analyzer. This repository contains support code for VS Code
8and Emacs. 9and Emacs.
9 10
10Rust Analyzer needs sources of rust standard library to work, so you might need 11```
11to execute 12$ git clone [email protected]:rust-analyzer/rust-analyzer && cd rust-analyzer
13$ cargo xtask install --server
14```
15Rust Analyzer needs sources of rust standard library to work, so
16you might also need to execute
12 17
13``` 18```
14$ rustup component add rust-src 19$ rustup component add rust-src