aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Cargo.lock236
-rw-r--r--crates/gen_lsp_server/src/msg.rs18
-rw-r--r--crates/ra_cli/Cargo.toml2
-rw-r--r--crates/ra_hir/Cargo.toml4
-rw-r--r--crates/ra_hir/src/ty/infer.rs73
-rw-r--r--crates/ra_ide_api/Cargo.toml2
-rw-r--r--crates/ra_ide_api/src/goto_definition.rs29
-rw-r--r--crates/ra_ide_api/src/hover.rs22
-rw-r--r--crates/ra_ide_api/src/navigation_target.rs16
-rw-r--r--crates/ra_ide_api/src/symbol_index.rs9
-rw-r--r--crates/ra_ide_api_light/Cargo.toml2
-rw-r--r--crates/ra_lsp_server/Cargo.toml2
-rw-r--r--crates/ra_lsp_server/src/init.rs39
-rw-r--r--crates/ra_lsp_server/src/lib.rs3
-rw-r--r--crates/ra_lsp_server/src/main.rs20
-rw-r--r--crates/ra_lsp_server/src/main_loop.rs57
-rw-r--r--crates/ra_lsp_server/src/req.rs10
-rw-r--r--crates/ra_lsp_server/tests/heavy_tests/main.rs10
-rw-r--r--crates/ra_lsp_server/tests/heavy_tests/support.rs21
-rw-r--r--crates/ra_parser/src/grammar/expressions/atom.rs14
-rw-r--r--crates/ra_parser/src/grammar/patterns.rs16
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0030_cond.rs6
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0030_cond.txt159
-rw-r--r--editors/code/package.json5
-rw-r--r--editors/code/src/config.ts7
-rw-r--r--editors/code/src/server.ts4
26 files changed, 573 insertions, 213 deletions
diff --git a/Cargo.lock b/Cargo.lock
index f09360795..4551ffc44 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -34,7 +34,7 @@ name = "atty"
34version = "0.2.11" 34version = "0.2.11"
35source = "registry+https://github.com/rust-lang/crates.io-index" 35source = "registry+https://github.com/rust-lang/crates.io-index"
36dependencies = [ 36dependencies = [
37 "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", 37 "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)",
38 "termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 38 "termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
39 "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 39 "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
40] 40]
@@ -51,8 +51,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
51dependencies = [ 51dependencies = [
52 "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 52 "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
53 "backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", 53 "backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)",
54 "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 54 "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
55 "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", 55 "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)",
56 "rustc-demangle 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", 56 "rustc-demangle 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
57 "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 57 "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
58] 58]
@@ -62,8 +62,8 @@ name = "backtrace-sys"
62version = "0.1.28" 62version = "0.1.28"
63source = "registry+https://github.com/rust-lang/crates.io-index" 63source = "registry+https://github.com/rust-lang/crates.io-index"
64dependencies = [ 64dependencies = [
65 "cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)", 65 "cc 1.0.30 (registry+https://github.com/rust-lang/crates.io-index)",
66 "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", 66 "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)",
67] 67]
68 68
69[[package]] 69[[package]]
@@ -123,19 +123,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
123dependencies = [ 123dependencies = [
124 "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", 124 "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
125 "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", 125 "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
126 "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", 126 "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
127 "serde_derive 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", 127 "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
128 "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", 128 "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
129] 129]
130 130
131[[package]] 131[[package]]
132name = "cc" 132name = "cc"
133version = "1.0.29" 133version = "1.0.30"
134source = "registry+https://github.com/rust-lang/crates.io-index" 134source = "registry+https://github.com/rust-lang/crates.io-index"
135 135
136[[package]] 136[[package]]
137name = "cfg-if" 137name = "cfg-if"
138version = "0.1.6" 138version = "0.1.7"
139source = "registry+https://github.com/rust-lang/crates.io-index" 139source = "registry+https://github.com/rust-lang/crates.io-index"
140 140
141[[package]] 141[[package]]
@@ -145,7 +145,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
145dependencies = [ 145dependencies = [
146 "num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", 146 "num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)",
147 "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", 147 "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
148 "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", 148 "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
149 "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", 149 "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
150] 150]
151 151
@@ -175,7 +175,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
175dependencies = [ 175dependencies = [
176 "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", 176 "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
177 "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 177 "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
178 "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", 178 "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)",
179 "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 179 "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
180] 180]
181 181
@@ -201,9 +201,9 @@ dependencies = [
201 "clicolors-control 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 201 "clicolors-control 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
202 "encode_unicode 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", 202 "encode_unicode 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
203 "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 203 "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
204 "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", 204 "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)",
205 "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", 205 "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
206 "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 206 "regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
207 "termios 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 207 "termios 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
208 "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 208 "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
209 "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 209 "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -233,7 +233,7 @@ version = "0.3.1"
233source = "registry+https://github.com/rust-lang/crates.io-index" 233source = "registry+https://github.com/rust-lang/crates.io-index"
234dependencies = [ 234dependencies = [
235 "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", 235 "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)",
236 "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 236 "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
237 "crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 237 "crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
238 "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 238 "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
239 "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 239 "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -246,7 +246,7 @@ name = "crossbeam-utils"
246version = "0.2.2" 246version = "0.2.2"
247source = "registry+https://github.com/rust-lang/crates.io-index" 247source = "registry+https://github.com/rust-lang/crates.io-index"
248dependencies = [ 248dependencies = [
249 "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 249 "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
250] 250]
251 251
252[[package]] 252[[package]]
@@ -254,7 +254,7 @@ name = "crossbeam-utils"
254version = "0.6.5" 254version = "0.6.5"
255source = "registry+https://github.com/rust-lang/crates.io-index" 255source = "registry+https://github.com/rust-lang/crates.io-index"
256dependencies = [ 256dependencies = [
257 "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 257 "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
258 "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 258 "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
259] 259]
260 260
@@ -265,7 +265,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
265dependencies = [ 265dependencies = [
266 "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", 266 "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)",
267 "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", 267 "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)",
268 "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", 268 "syn 0.15.27 (registry+https://github.com/rust-lang/crates.io-index)",
269] 269]
270 270
271[[package]] 271[[package]]
@@ -338,7 +338,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
338dependencies = [ 338dependencies = [
339 "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", 339 "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)",
340 "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", 340 "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)",
341 "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", 341 "syn 0.15.27 (registry+https://github.com/rust-lang/crates.io-index)",
342 "synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 342 "synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
343] 343]
344 344
@@ -352,20 +352,20 @@ name = "filetime"
352version = "0.2.4" 352version = "0.2.4"
353source = "registry+https://github.com/rust-lang/crates.io-index" 353source = "registry+https://github.com/rust-lang/crates.io-index"
354dependencies = [ 354dependencies = [
355 "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 355 "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
356 "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", 356 "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)",
357 "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", 357 "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)",
358] 358]
359 359
360[[package]] 360[[package]]
361name = "flexi_logger" 361name = "flexi_logger"
362version = "0.10.7" 362version = "0.11.0"
363source = "registry+https://github.com/rust-lang/crates.io-index" 363source = "registry+https://github.com/rust-lang/crates.io-index"
364dependencies = [ 364dependencies = [
365 "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 365 "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
366 "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", 366 "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
367 "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 367 "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
368 "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 368 "regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
369] 369]
370 370
371[[package]] 371[[package]]
@@ -385,7 +385,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
385dependencies = [ 385dependencies = [
386 "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 386 "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
387 "fsevent-sys 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 387 "fsevent-sys 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
388 "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", 388 "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)",
389] 389]
390 390
391[[package]] 391[[package]]
@@ -393,7 +393,7 @@ name = "fsevent-sys"
393version = "0.1.6" 393version = "0.1.6"
394source = "registry+https://github.com/rust-lang/crates.io-index" 394source = "registry+https://github.com/rust-lang/crates.io-index"
395dependencies = [ 395dependencies = [
396 "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", 396 "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)",
397] 397]
398 398
399[[package]] 399[[package]]
@@ -432,8 +432,8 @@ dependencies = [
432 "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 432 "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
433 "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 433 "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
434 "lsp-types 0.56.0 (registry+https://github.com/rust-lang/crates.io-index)", 434 "lsp-types 0.56.0 (registry+https://github.com/rust-lang/crates.io-index)",
435 "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", 435 "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
436 "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", 436 "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
437] 437]
438 438
439[[package]] 439[[package]]
@@ -486,7 +486,7 @@ dependencies = [
486 "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 486 "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
487 "number_prefix 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 487 "number_prefix 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
488 "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", 488 "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
489 "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 489 "regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
490] 490]
491 491
492[[package]] 492[[package]]
@@ -496,7 +496,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
496dependencies = [ 496dependencies = [
497 "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", 497 "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
498 "inotify-sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 498 "inotify-sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
499 "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", 499 "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)",
500] 500]
501 501
502[[package]] 502[[package]]
@@ -504,12 +504,12 @@ name = "inotify-sys"
504version = "0.1.3" 504version = "0.1.3"
505source = "registry+https://github.com/rust-lang/crates.io-index" 505source = "registry+https://github.com/rust-lang/crates.io-index"
506dependencies = [ 506dependencies = [
507 "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", 507 "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)",
508] 508]
509 509
510[[package]] 510[[package]]
511name = "insta" 511name = "insta"
512version = "0.6.3" 512version = "0.7.0"
513source = "registry+https://github.com/rust-lang/crates.io-index" 513source = "registry+https://github.com/rust-lang/crates.io-index"
514dependencies = [ 514dependencies = [
515 "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 515 "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -520,9 +520,9 @@ dependencies = [
520 "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 520 "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
521 "pest 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 521 "pest 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
522 "pest_derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 522 "pest_derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
523 "ron 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 523 "ron 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
524 "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", 524 "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
525 "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", 525 "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
526 "serde_yaml 0.8.8 (registry+https://github.com/rust-lang/crates.io-index)", 526 "serde_yaml 0.8.8 (registry+https://github.com/rust-lang/crates.io-index)",
527 "uuid 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 527 "uuid 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
528] 528]
@@ -532,7 +532,7 @@ name = "iovec"
532version = "0.1.2" 532version = "0.1.2"
533source = "registry+https://github.com/rust-lang/crates.io-index" 533source = "registry+https://github.com/rust-lang/crates.io-index"
534dependencies = [ 534dependencies = [
535 "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", 535 "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)",
536 "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 536 "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
537] 537]
538 538
@@ -555,7 +555,7 @@ version = "0.2.0"
555source = "registry+https://github.com/rust-lang/crates.io-index" 555source = "registry+https://github.com/rust-lang/crates.io-index"
556dependencies = [ 556dependencies = [
557 "jemalloc-sys 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 557 "jemalloc-sys 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
558 "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", 558 "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)",
559] 559]
560 560
561[[package]] 561[[package]]
@@ -563,9 +563,9 @@ name = "jemalloc-sys"
563version = "0.1.8" 563version = "0.1.8"
564source = "registry+https://github.com/rust-lang/crates.io-index" 564source = "registry+https://github.com/rust-lang/crates.io-index"
565dependencies = [ 565dependencies = [
566 "cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)", 566 "cc 1.0.30 (registry+https://github.com/rust-lang/crates.io-index)",
567 "fs_extra 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 567 "fs_extra 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
568 "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", 568 "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)",
569] 569]
570 570
571[[package]] 571[[package]]
@@ -574,7 +574,7 @@ version = "0.1.9"
574source = "registry+https://github.com/rust-lang/crates.io-index" 574source = "registry+https://github.com/rust-lang/crates.io-index"
575dependencies = [ 575dependencies = [
576 "jemalloc-sys 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 576 "jemalloc-sys 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
577 "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", 577 "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)",
578] 578]
579 579
580[[package]] 580[[package]]
@@ -606,7 +606,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
606 606
607[[package]] 607[[package]]
608name = "libc" 608name = "libc"
609version = "0.2.49" 609version = "0.2.50"
610source = "registry+https://github.com/rust-lang/crates.io-index" 610source = "registry+https://github.com/rust-lang/crates.io-index"
611 611
612[[package]] 612[[package]]
@@ -628,7 +628,7 @@ name = "log"
628version = "0.4.6" 628version = "0.4.6"
629source = "registry+https://github.com/rust-lang/crates.io-index" 629source = "registry+https://github.com/rust-lang/crates.io-index"
630dependencies = [ 630dependencies = [
631 "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 631 "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
632] 632]
633 633
634[[package]] 634[[package]]
@@ -639,9 +639,9 @@ dependencies = [
639 "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", 639 "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
640 "num-derive 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", 640 "num-derive 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
641 "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", 641 "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
642 "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", 642 "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
643 "serde_derive 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", 643 "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
644 "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", 644 "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
645 "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 645 "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
646 "url_serde 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 646 "url_serde 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
647] 647]
@@ -666,7 +666,7 @@ name = "memmap"
666version = "0.6.2" 666version = "0.6.2"
667source = "registry+https://github.com/rust-lang/crates.io-index" 667source = "registry+https://github.com/rust-lang/crates.io-index"
668dependencies = [ 668dependencies = [
669 "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", 669 "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)",
670 "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 670 "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
671] 671]
672 672
@@ -685,7 +685,7 @@ dependencies = [
685 "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 685 "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
686 "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 686 "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
687 "lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 687 "lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
688 "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", 688 "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)",
689 "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 689 "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
690 "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 690 "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
691 "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", 691 "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -720,8 +720,8 @@ name = "net2"
720version = "0.2.33" 720version = "0.2.33"
721source = "registry+https://github.com/rust-lang/crates.io-index" 721source = "registry+https://github.com/rust-lang/crates.io-index"
722dependencies = [ 722dependencies = [
723 "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 723 "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
724 "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", 724 "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)",
725 "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 725 "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
726] 726]
727 727
@@ -732,7 +732,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
732 732
733[[package]] 733[[package]]
734name = "notify" 734name = "notify"
735version = "4.0.9" 735version = "4.0.10"
736source = "registry+https://github.com/rust-lang/crates.io-index" 736source = "registry+https://github.com/rust-lang/crates.io-index"
737dependencies = [ 737dependencies = [
738 "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", 738 "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -741,7 +741,7 @@ dependencies = [
741 "fsevent-sys 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 741 "fsevent-sys 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
742 "inotify 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", 742 "inotify 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
743 "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 743 "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
744 "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", 744 "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)",
745 "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", 745 "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)",
746 "mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)", 746 "mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
747 "walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)", 747 "walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -755,7 +755,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
755dependencies = [ 755dependencies = [
756 "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", 756 "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)",
757 "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", 757 "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)",
758 "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", 758 "syn 0.15.27 (registry+https://github.com/rust-lang/crates.io-index)",
759] 759]
760 760
761[[package]] 761[[package]]
@@ -776,7 +776,7 @@ name = "num_cpus"
776version = "1.10.0" 776version = "1.10.0"
777source = "registry+https://github.com/rust-lang/crates.io-index" 777source = "registry+https://github.com/rust-lang/crates.io-index"
778dependencies = [ 778dependencies = [
779 "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", 779 "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)",
780] 780]
781 781
782[[package]] 782[[package]]
@@ -809,7 +809,7 @@ name = "parking_lot_core"
809version = "0.4.0" 809version = "0.4.0"
810source = "registry+https://github.com/rust-lang/crates.io-index" 810source = "registry+https://github.com/rust-lang/crates.io-index"
811dependencies = [ 811dependencies = [
812 "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", 812 "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)",
813 "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", 813 "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
814 "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 814 "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
815 "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", 815 "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -847,7 +847,7 @@ dependencies = [
847 "pest_meta 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 847 "pest_meta 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
848 "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", 848 "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)",
849 "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", 849 "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)",
850 "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", 850 "syn 0.15.27 (registry+https://github.com/rust-lang/crates.io-index)",
851] 851]
852 852
853[[package]] 853[[package]]
@@ -928,7 +928,7 @@ dependencies = [
928 "ra_hir 0.1.0", 928 "ra_hir 0.1.0",
929 "ra_project_model 0.1.0", 929 "ra_project_model 0.1.0",
930 "ra_syntax 0.1.0", 930 "ra_syntax 0.1.0",
931 "ra_vfs 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 931 "ra_vfs 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
932 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 932 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
933 "test_utils 0.1.0", 933 "test_utils 0.1.0",
934] 934]
@@ -939,7 +939,7 @@ version = "0.1.0"
939dependencies = [ 939dependencies = [
940 "clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)", 940 "clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)",
941 "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 941 "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
942 "flexi_logger 0.10.7 (registry+https://github.com/rust-lang/crates.io-index)", 942 "flexi_logger 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
943 "indicatif 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", 943 "indicatif 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
944 "join_to_string 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 944 "join_to_string 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
945 "ra_batch 0.1.0", 945 "ra_batch 0.1.0",
@@ -977,8 +977,8 @@ version = "0.1.0"
977dependencies = [ 977dependencies = [
978 "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", 978 "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)",
979 "ena 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", 979 "ena 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
980 "flexi_logger 0.10.7 (registry+https://github.com/rust-lang/crates.io-index)", 980 "flexi_logger 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
981 "insta 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", 981 "insta 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
982 "join_to_string 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 982 "join_to_string 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
983 "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 983 "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
984 "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", 984 "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -997,7 +997,7 @@ name = "ra_ide_api"
997version = "0.1.0" 997version = "0.1.0"
998dependencies = [ 998dependencies = [
999 "fst 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 999 "fst 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
1000 "insta 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", 1000 "insta 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
1001 "itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 1001 "itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
1002 "jemalloc-ctl 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 1002 "jemalloc-ctl 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
1003 "jemallocator 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 1003 "jemallocator 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1014,14 +1014,14 @@ dependencies = [
1014 "relative-path 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1014 "relative-path 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
1015 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 1015 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
1016 "test_utils 0.1.0", 1016 "test_utils 0.1.0",
1017 "unicase 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 1017 "unicase 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
1018] 1018]
1019 1019
1020[[package]] 1020[[package]]
1021name = "ra_ide_api_light" 1021name = "ra_ide_api_light"
1022version = "0.1.0" 1022version = "0.1.0"
1023dependencies = [ 1023dependencies = [
1024 "insta 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", 1024 "insta 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
1025 "itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 1025 "itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
1026 "join_to_string 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 1026 "join_to_string 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
1027 "proptest 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", 1027 "proptest 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1040,7 +1040,7 @@ dependencies = [
1040 "crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 1040 "crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
1041 "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 1041 "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
1042 "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 1042 "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
1043 "flexi_logger 0.10.7 (registry+https://github.com/rust-lang/crates.io-index)", 1043 "flexi_logger 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
1044 "gen_lsp_server 0.1.0", 1044 "gen_lsp_server 0.1.0",
1045 "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 1045 "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
1046 "lsp-types 0.56.0 (registry+https://github.com/rust-lang/crates.io-index)", 1046 "lsp-types 0.56.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1050,11 +1050,11 @@ dependencies = [
1050 "ra_project_model 0.1.0", 1050 "ra_project_model 0.1.0",
1051 "ra_syntax 0.1.0", 1051 "ra_syntax 0.1.0",
1052 "ra_text_edit 0.1.0", 1052 "ra_text_edit 0.1.0",
1053 "ra_vfs 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1053 "ra_vfs 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
1054 "relative-path 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1054 "relative-path 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
1055 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 1055 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
1056 "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", 1056 "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
1057 "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", 1057 "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
1058 "tempfile 3.0.7 (registry+https://github.com/rust-lang/crates.io-index)", 1058 "tempfile 3.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
1059 "test_utils 0.1.0", 1059 "test_utils 0.1.0",
1060 "thread_worker 0.1.0", 1060 "thread_worker 0.1.0",
@@ -1129,12 +1129,12 @@ dependencies = [
1129 1129
1130[[package]] 1130[[package]]
1131name = "ra_vfs" 1131name = "ra_vfs"
1132version = "0.1.0" 1132version = "0.1.1"
1133source = "registry+https://github.com/rust-lang/crates.io-index" 1133source = "registry+https://github.com/rust-lang/crates.io-index"
1134dependencies = [ 1134dependencies = [
1135 "crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 1135 "crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
1136 "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 1136 "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
1137 "notify 4.0.9 (registry+https://github.com/rust-lang/crates.io-index)", 1137 "notify 4.0.10 (registry+https://github.com/rust-lang/crates.io-index)",
1138 "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", 1138 "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
1139 "relative-path 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1139 "relative-path 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
1140 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 1140 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1147,13 +1147,13 @@ version = "0.6.5"
1147source = "registry+https://github.com/rust-lang/crates.io-index" 1147source = "registry+https://github.com/rust-lang/crates.io-index"
1148dependencies = [ 1148dependencies = [
1149 "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 1149 "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
1150 "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", 1150 "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)",
1151 "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1151 "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
1152 "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1152 "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
1153 "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1153 "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
1154 "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1154 "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
1155 "rand_jitter 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 1155 "rand_jitter 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
1156 "rand_os 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 1156 "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
1157 "rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 1157 "rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
1158 "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1158 "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
1159 "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 1159 "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1202,19 +1202,19 @@ name = "rand_jitter"
1202version = "0.1.3" 1202version = "0.1.3"
1203source = "registry+https://github.com/rust-lang/crates.io-index" 1203source = "registry+https://github.com/rust-lang/crates.io-index"
1204dependencies = [ 1204dependencies = [
1205 "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", 1205 "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)",
1206 "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1206 "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
1207 "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 1207 "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
1208] 1208]
1209 1209
1210[[package]] 1210[[package]]
1211name = "rand_os" 1211name = "rand_os"
1212version = "0.1.2" 1212version = "0.1.3"
1213source = "registry+https://github.com/rust-lang/crates.io-index" 1213source = "registry+https://github.com/rust-lang/crates.io-index"
1214dependencies = [ 1214dependencies = [
1215 "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 1215 "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
1216 "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1216 "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
1217 "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", 1217 "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)",
1218 "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1218 "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
1219 "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1219 "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
1220 "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 1220 "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1254,7 +1254,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1254dependencies = [ 1254dependencies = [
1255 "crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 1255 "crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
1256 "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 1256 "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
1257 "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", 1257 "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)",
1258 "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", 1258 "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
1259] 1259]
1260 1260
@@ -1281,7 +1281,7 @@ dependencies = [
1281 1281
1282[[package]] 1282[[package]]
1283name = "regex" 1283name = "regex"
1284version = "1.1.0" 1284version = "1.1.2"
1285source = "registry+https://github.com/rust-lang/crates.io-index" 1285source = "registry+https://github.com/rust-lang/crates.io-index"
1286dependencies = [ 1286dependencies = [
1287 "aho-corasick 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", 1287 "aho-corasick 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1314,12 +1314,12 @@ dependencies = [
1314 1314
1315[[package]] 1315[[package]]
1316name = "ron" 1316name = "ron"
1317version = "0.4.1" 1317version = "0.4.2"
1318source = "registry+https://github.com/rust-lang/crates.io-index" 1318source = "registry+https://github.com/rust-lang/crates.io-index"
1319dependencies = [ 1319dependencies = [
1320 "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 1320 "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
1321 "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", 1321 "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
1322 "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", 1322 "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
1323] 1323]
1324 1324
1325[[package]] 1325[[package]]
@@ -1393,7 +1393,7 @@ dependencies = [
1393 "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 1393 "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
1394 "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", 1394 "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)",
1395 "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", 1395 "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)",
1396 "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", 1396 "syn 0.15.27 (registry+https://github.com/rust-lang/crates.io-index)",
1397] 1397]
1398 1398
1399[[package]] 1399[[package]]
@@ -1415,7 +1415,7 @@ version = "0.9.0"
1415source = "registry+https://github.com/rust-lang/crates.io-index" 1415source = "registry+https://github.com/rust-lang/crates.io-index"
1416dependencies = [ 1416dependencies = [
1417 "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 1417 "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
1418 "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", 1418 "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
1419] 1419]
1420 1420
1421[[package]] 1421[[package]]
@@ -1425,30 +1425,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1425 1425
1426[[package]] 1426[[package]]
1427name = "serde" 1427name = "serde"
1428version = "1.0.88" 1428version = "1.0.89"
1429source = "registry+https://github.com/rust-lang/crates.io-index" 1429source = "registry+https://github.com/rust-lang/crates.io-index"
1430dependencies = [ 1430dependencies = [
1431 "serde_derive 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", 1431 "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
1432] 1432]
1433 1433
1434[[package]] 1434[[package]]
1435name = "serde_derive" 1435name = "serde_derive"
1436version = "1.0.88" 1436version = "1.0.89"
1437source = "registry+https://github.com/rust-lang/crates.io-index" 1437source = "registry+https://github.com/rust-lang/crates.io-index"
1438dependencies = [ 1438dependencies = [
1439 "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", 1439 "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)",
1440 "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", 1440 "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)",
1441 "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", 1441 "syn 0.15.27 (registry+https://github.com/rust-lang/crates.io-index)",
1442] 1442]
1443 1443
1444[[package]] 1444[[package]]
1445name = "serde_json" 1445name = "serde_json"
1446version = "1.0.38" 1446version = "1.0.39"
1447source = "registry+https://github.com/rust-lang/crates.io-index" 1447source = "registry+https://github.com/rust-lang/crates.io-index"
1448dependencies = [ 1448dependencies = [
1449 "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", 1449 "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)",
1450 "ryu 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", 1450 "ryu 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
1451 "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", 1451 "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
1452] 1452]
1453 1453
1454[[package]] 1454[[package]]
@@ -1458,7 +1458,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1458dependencies = [ 1458dependencies = [
1459 "dtoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", 1459 "dtoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)",
1460 "linked-hash-map 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 1460 "linked-hash-map 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
1461 "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", 1461 "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
1462 "yaml-rust 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1462 "yaml-rust 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
1463] 1463]
1464 1464
@@ -1496,7 +1496,7 @@ name = "smol_str"
1496version = "0.1.9" 1496version = "0.1.9"
1497source = "registry+https://github.com/rust-lang/crates.io-index" 1497source = "registry+https://github.com/rust-lang/crates.io-index"
1498dependencies = [ 1498dependencies = [
1499 "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", 1499 "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
1500] 1500]
1501 1501
1502[[package]] 1502[[package]]
@@ -1521,7 +1521,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1521 1521
1522[[package]] 1522[[package]]
1523name = "syn" 1523name = "syn"
1524version = "0.15.26" 1524version = "0.15.27"
1525source = "registry+https://github.com/rust-lang/crates.io-index" 1525source = "registry+https://github.com/rust-lang/crates.io-index"
1526dependencies = [ 1526dependencies = [
1527 "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", 1527 "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1536,7 +1536,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1536dependencies = [ 1536dependencies = [
1537 "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", 1537 "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)",
1538 "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", 1538 "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)",
1539 "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", 1539 "syn 0.15.27 (registry+https://github.com/rust-lang/crates.io-index)",
1540 "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1540 "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
1541] 1541]
1542 1542
@@ -1545,8 +1545,8 @@ name = "tempfile"
1545version = "3.0.7" 1545version = "3.0.7"
1546source = "registry+https://github.com/rust-lang/crates.io-index" 1546source = "registry+https://github.com/rust-lang/crates.io-index"
1547dependencies = [ 1547dependencies = [
1548 "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1548 "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
1549 "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", 1549 "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)",
1550 "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", 1550 "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
1551 "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", 1551 "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)",
1552 "remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 1552 "remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1565,9 +1565,9 @@ dependencies = [
1565 "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 1565 "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
1566 "pest 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1566 "pest 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
1567 "pest_derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1567 "pest_derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
1568 "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1568 "regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
1569 "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", 1569 "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
1570 "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", 1570 "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
1571 "slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 1571 "slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
1572 "unic-segment 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 1572 "unic-segment 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
1573 "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 1573 "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1580,7 +1580,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1580dependencies = [ 1580dependencies = [
1581 "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 1581 "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
1582 "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 1582 "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
1583 "ron 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 1583 "ron 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
1584 "tera 0.11.20 (registry+https://github.com/rust-lang/crates.io-index)", 1584 "tera 0.11.20 (registry+https://github.com/rust-lang/crates.io-index)",
1585] 1585]
1586 1586
@@ -1589,7 +1589,7 @@ name = "termion"
1589version = "1.5.1" 1589version = "1.5.1"
1590source = "registry+https://github.com/rust-lang/crates.io-index" 1590source = "registry+https://github.com/rust-lang/crates.io-index"
1591dependencies = [ 1591dependencies = [
1592 "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", 1592 "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)",
1593 "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", 1593 "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)",
1594 "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1594 "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
1595] 1595]
@@ -1599,7 +1599,7 @@ name = "termios"
1599version = "0.3.1" 1599version = "0.3.1"
1600source = "registry+https://github.com/rust-lang/crates.io-index" 1600source = "registry+https://github.com/rust-lang/crates.io-index"
1601dependencies = [ 1601dependencies = [
1602 "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", 1602 "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)",
1603] 1603]
1604 1604
1605[[package]] 1605[[package]]
@@ -1608,7 +1608,7 @@ version = "0.1.0"
1608dependencies = [ 1608dependencies = [
1609 "difference 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 1609 "difference 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
1610 "itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 1610 "itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
1611 "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", 1611 "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
1612 "text_unit 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1612 "text_unit 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
1613] 1613]
1614 1614
@@ -1617,7 +1617,7 @@ name = "text_unit"
1617version = "0.1.6" 1617version = "0.1.6"
1618source = "registry+https://github.com/rust-lang/crates.io-index" 1618source = "registry+https://github.com/rust-lang/crates.io-index"
1619dependencies = [ 1619dependencies = [
1620 "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", 1620 "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
1621] 1621]
1622 1622
1623[[package]] 1623[[package]]
@@ -1657,7 +1657,7 @@ name = "time"
1657version = "0.1.42" 1657version = "0.1.42"
1658source = "registry+https://github.com/rust-lang/crates.io-index" 1658source = "registry+https://github.com/rust-lang/crates.io-index"
1659dependencies = [ 1659dependencies = [
1660 "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", 1660 "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)",
1661 "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", 1661 "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)",
1662 "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 1662 "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
1663] 1663]
@@ -1734,7 +1734,7 @@ dependencies = [
1734 1734
1735[[package]] 1735[[package]]
1736name = "unicase" 1736name = "unicase"
1737version = "2.2.0" 1737version = "2.3.0"
1738source = "registry+https://github.com/rust-lang/crates.io-index" 1738source = "registry+https://github.com/rust-lang/crates.io-index"
1739dependencies = [ 1739dependencies = [
1740 "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 1740 "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1786,7 +1786,7 @@ name = "url_serde"
1786version = "0.2.0" 1786version = "0.2.0"
1787source = "registry+https://github.com/rust-lang/crates.io-index" 1787source = "registry+https://github.com/rust-lang/crates.io-index"
1788dependencies = [ 1788dependencies = [
1789 "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", 1789 "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
1790 "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 1790 "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
1791] 1791]
1792 1792
@@ -1801,7 +1801,7 @@ version = "0.7.2"
1801source = "registry+https://github.com/rust-lang/crates.io-index" 1801source = "registry+https://github.com/rust-lang/crates.io-index"
1802dependencies = [ 1802dependencies = [
1803 "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", 1803 "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
1804 "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", 1804 "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
1805] 1805]
1806 1806
1807[[package]] 1807[[package]]
@@ -1819,7 +1819,7 @@ name = "wait-timeout"
1819version = "0.1.5" 1819version = "0.1.5"
1820source = "registry+https://github.com/rust-lang/crates.io-index" 1820source = "registry+https://github.com/rust-lang/crates.io-index"
1821dependencies = [ 1821dependencies = [
1822 "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", 1822 "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)",
1823] 1823]
1824 1824
1825[[package]] 1825[[package]]
@@ -1904,8 +1904,8 @@ dependencies = [
1904"checksum byte-tools 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "560c32574a12a89ecd91f5e742165893f86e3ab98d21f8ea548658eb9eef5f40" 1904"checksum byte-tools 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "560c32574a12a89ecd91f5e742165893f86e3ab98d21f8ea548658eb9eef5f40"
1905"checksum byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a019b10a2a7cdeb292db131fc8113e57ea2a908f6e7894b0c3c671893b65dbeb" 1905"checksum byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a019b10a2a7cdeb292db131fc8113e57ea2a908f6e7894b0c3c671893b65dbeb"
1906"checksum cargo_metadata 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "585784cac9b05c93a53b17a0b24a5cdd1dfdda5256f030e089b549d2390cc720" 1906"checksum cargo_metadata 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "585784cac9b05c93a53b17a0b24a5cdd1dfdda5256f030e089b549d2390cc720"
1907"checksum cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)" = "4390a3b5f4f6bce9c1d0c00128379df433e53777fdd30e92f16a529332baec4e" 1907"checksum cc 1.0.30 (registry+https://github.com/rust-lang/crates.io-index)" = "d01c69d08ff207f231f07196e30f84c70f1c815b04f980f8b7b01ff01f05eb92"
1908"checksum cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "082bb9b28e00d3c9d39cc03e64ce4cea0f1bb9b3fde493f0cbc008472d22bdf4" 1908"checksum cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "11d43355396e872eefb45ce6342e4374ed7bc2b3a502d1b28e36d6e23c05d1f4"
1909"checksum chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "45912881121cb26fad7c38c17ba7daa18764771836b34fab7d3fbd93ed633878" 1909"checksum chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "45912881121cb26fad7c38c17ba7daa18764771836b34fab7d3fbd93ed633878"
1910"checksum ci_info 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e5e881307a989a3a5e20d52a32cc05950e3c2178cccfcc9428271a6cde09f902" 1910"checksum ci_info 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e5e881307a989a3a5e20d52a32cc05950e3c2178cccfcc9428271a6cde09f902"
1911"checksum clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b957d88f4b6a63b9d70d5f454ac8011819c6efa7727858f458ab71c756ce2d3e" 1911"checksum clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b957d88f4b6a63b9d70d5f454ac8011819c6efa7727858f458ab71c756ce2d3e"
@@ -1932,7 +1932,7 @@ dependencies = [
1932"checksum failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ea1063915fd7ef4309e222a5a07cf9c319fb9c7836b1f89b85458672dbb127e1" 1932"checksum failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ea1063915fd7ef4309e222a5a07cf9c319fb9c7836b1f89b85458672dbb127e1"
1933"checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" 1933"checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed"
1934"checksum filetime 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a2df5c1a8c4be27e7707789dc42ae65976e60b394afd293d1419ab915833e646" 1934"checksum filetime 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a2df5c1a8c4be27e7707789dc42ae65976e60b394afd293d1419ab915833e646"
1935"checksum flexi_logger 0.10.7 (registry+https://github.com/rust-lang/crates.io-index)" = "617bc8ff0e391c36e197f32c0c449ca1651e5b1b24f41107c6a469948b5038b5" 1935"checksum flexi_logger 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b4554f652e4673c25dba4deebbc52d5ceefcb19958eec8a34417af320b8a0746"
1936"checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" 1936"checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3"
1937"checksum fs_extra 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5f2a4a2034423744d2cc7ca2068453168dcdb82c438419e639a26bd87839c674" 1937"checksum fs_extra 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5f2a4a2034423744d2cc7ca2068453168dcdb82c438419e639a26bd87839c674"
1938"checksum fsevent 0.2.17 (registry+https://github.com/rust-lang/crates.io-index)" = "c4bbbf71584aeed076100b5665ac14e3d85eeb31fdbb45fbd41ef9a682b5ec05" 1938"checksum fsevent 0.2.17 (registry+https://github.com/rust-lang/crates.io-index)" = "c4bbbf71584aeed076100b5665ac14e3d85eeb31fdbb45fbd41ef9a682b5ec05"
@@ -1950,7 +1950,7 @@ dependencies = [
1950"checksum indicatif 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2c60da1c9abea75996b70a931bba6c750730399005b61ccd853cee50ef3d0d0c" 1950"checksum indicatif 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2c60da1c9abea75996b70a931bba6c750730399005b61ccd853cee50ef3d0d0c"
1951"checksum inotify 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "40b54539f3910d6f84fbf9a643efd6e3aa6e4f001426c0329576128255994718" 1951"checksum inotify 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "40b54539f3910d6f84fbf9a643efd6e3aa6e4f001426c0329576128255994718"
1952"checksum inotify-sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e74a1aa87c59aeff6ef2cc2fa62d41bc43f54952f55652656b18a02fd5e356c0" 1952"checksum inotify-sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e74a1aa87c59aeff6ef2cc2fa62d41bc43f54952f55652656b18a02fd5e356c0"
1953"checksum insta 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bcc3ee8d49a583b9c4ecb1b50777b65eec0a568e49dddfac37109ef320175533" 1953"checksum insta 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0c6c10b8c7e7607bab7cac8f360c111fa3a7afa331dafa2703754b540f5e08f4"
1954"checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" 1954"checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08"
1955"checksum itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5b8467d9c1cebe26feb08c640139247fac215782d35371ade9a2136ed6085358" 1955"checksum itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5b8467d9c1cebe26feb08c640139247fac215782d35371ade9a2136ed6085358"
1956"checksum itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1306f3464951f30e30d12373d31c79fbd52d236e5e896fd92f96ec7babbbe60b" 1956"checksum itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1306f3464951f30e30d12373d31c79fbd52d236e5e896fd92f96ec7babbbe60b"
@@ -1961,7 +1961,7 @@ dependencies = [
1961"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" 1961"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"
1962"checksum lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bc5729f27f159ddd61f4df6228e827e86643d4d3e7c32183cb30a1c08f604a14" 1962"checksum lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bc5729f27f159ddd61f4df6228e827e86643d4d3e7c32183cb30a1c08f604a14"
1963"checksum lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f" 1963"checksum lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f"
1964"checksum libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)" = "413f3dfc802c5dc91dc570b05125b6cda9855edfaa9825c9849807876376e70e" 1964"checksum libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)" = "aab692d7759f5cd8c859e169db98ae5b52c924add2af5fbbca11d12fefb567c1"
1965"checksum linked-hash-map 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "70fb39025bc7cdd76305867c4eccf2f2dcf6e9a57f5b21a93e1c2d86cd03ec9e" 1965"checksum linked-hash-map 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "70fb39025bc7cdd76305867c4eccf2f2dcf6e9a57f5b21a93e1c2d86cd03ec9e"
1966"checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" 1966"checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c"
1967"checksum log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c84ec4b527950aa83a329754b01dbe3f58361d1c5efacd1f6d68c494d08a17c6" 1967"checksum log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c84ec4b527950aa83a329754b01dbe3f58361d1c5efacd1f6d68c494d08a17c6"
@@ -1976,7 +1976,7 @@ dependencies = [
1976"checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" 1976"checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919"
1977"checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" 1977"checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88"
1978"checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" 1978"checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945"
1979"checksum notify 4.0.9 (registry+https://github.com/rust-lang/crates.io-index)" = "9cc7ed2bd4b7edad3ee93b659c38e53dabb619f7274e127a0fab054ad2bb998d" 1979"checksum notify 4.0.10 (registry+https://github.com/rust-lang/crates.io-index)" = "abb1581693e44d8a0ec347ef12289625063f52a1dddc3f3c9befd5fc59e88943"
1980"checksum num-derive 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d9fe8fcafd1b86a37ce8a1cfa15ae504817e0c8c2e7ad42767371461ac1d316d" 1980"checksum num-derive 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d9fe8fcafd1b86a37ce8a1cfa15ae504817e0c8c2e7ad42767371461ac1d316d"
1981"checksum num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "e83d528d2677f0518c570baf2b7abdcf0cd2d248860b68507bdcb3e91d4c0cea" 1981"checksum num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "e83d528d2677f0518c570baf2b7abdcf0cd2d248860b68507bdcb3e91d4c0cea"
1982"checksum num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0b3a5d7cc97d6d30d8b9bc8fa19bf45349ffe46241e8816f50f62f6d6aaabee1" 1982"checksum num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0b3a5d7cc97d6d30d8b9bc8fa19bf45349ffe46241e8816f50f62f6d6aaabee1"
@@ -1994,7 +1994,7 @@ dependencies = [
1994"checksum proptest 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8ea66c78d75f2c6e9f304269eaef90899798daecc69f1a625d5a3dd793ff3522" 1994"checksum proptest 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8ea66c78d75f2c6e9f304269eaef90899798daecc69f1a625d5a3dd793ff3522"
1995"checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" 1995"checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0"
1996"checksum quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)" = "cdd8e04bd9c52e0342b406469d494fcb033be4bdbe5c606016defbb1681411e1" 1996"checksum quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)" = "cdd8e04bd9c52e0342b406469d494fcb033be4bdbe5c606016defbb1681411e1"
1997"checksum ra_vfs 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d191ef0680eea419a302e0d09a00c00dfed1ec320406813bc100f93d1abe28dc" 1997"checksum ra_vfs 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5978b0ced52f013ce44bfca6ac903141359e7cc3baea462a4a670de9e5087101"
1998"checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" 1998"checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca"
1999"checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" 1999"checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef"
2000"checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" 2000"checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b"
@@ -2002,7 +2002,7 @@ dependencies = [
2002"checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" 2002"checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4"
2003"checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" 2003"checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08"
2004"checksum rand_jitter 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b9ea758282efe12823e0d952ddb269d2e1897227e464919a554f2a03ef1b832" 2004"checksum rand_jitter 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b9ea758282efe12823e0d952ddb269d2e1897227e464919a554f2a03ef1b832"
2005"checksum rand_os 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b7c690732391ae0abafced5015ffb53656abfaec61b342290e5eb56b286a679d" 2005"checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071"
2006"checksum rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" 2006"checksum rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44"
2007"checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" 2007"checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c"
2008"checksum rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "373814f27745b2686b350dd261bfd24576a6fb0e2c5919b3a2b6005f820b0473" 2008"checksum rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "373814f27745b2686b350dd261bfd24576a6fb0e2c5919b3a2b6005f820b0473"
@@ -2010,11 +2010,11 @@ dependencies = [
2010"checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" 2010"checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2"
2011"checksum redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)" = "423e376fffca3dfa06c9e9790a9ccd282fafb3cc6e6397d01dbf64f9bacc6b85" 2011"checksum redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)" = "423e376fffca3dfa06c9e9790a9ccd282fafb3cc6e6397d01dbf64f9bacc6b85"
2012"checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" 2012"checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76"
2013"checksum regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "37e7cbbd370869ce2e8dff25c7018702d10b21a20ef7135316f8daecd6c25b7f" 2013"checksum regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "53ee8cfdddb2e0291adfb9f13d31d3bbe0a03c9a402c01b1e24188d86c35b24f"
2014"checksum regex-syntax 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "8c2f35eedad5295fdf00a63d7d4b238135723f92b434ec06774dad15c7ab0861" 2014"checksum regex-syntax 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "8c2f35eedad5295fdf00a63d7d4b238135723f92b434ec06774dad15c7ab0861"
2015"checksum relative-path 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0e7790c7f1cc73d831d28dc5a7deb316a006e7848e6a7f467cdb10a0a9e0fb1c" 2015"checksum relative-path 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0e7790c7f1cc73d831d28dc5a7deb316a006e7848e6a7f467cdb10a0a9e0fb1c"
2016"checksum remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3488ba1b9a2084d38645c4c08276a1752dcbf2c7130d74f1569681ad5d2799c5" 2016"checksum remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3488ba1b9a2084d38645c4c08276a1752dcbf2c7130d74f1569681ad5d2799c5"
2017"checksum ron 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d9cb28ade964585205aaca1f3d41a6297f72e1ad097b49c4bbde033ef86b38d7" 2017"checksum ron 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "17f52a24414403f81528b67488cf8edc4eda977d3af1646bb6b106a600ead78f"
2018"checksum rowan 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "74d41f779e2c893339e34bebf035652c58214823cd412550111886c06632f89d" 2018"checksum rowan 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "74d41f779e2c893339e34bebf035652c58214823cd412550111886c06632f89d"
2019"checksum rustc-demangle 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "adacaae16d02b6ec37fdc7acfcddf365978de76d1983d3ee22afc260e1ca9619" 2019"checksum rustc-demangle 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "adacaae16d02b6ec37fdc7acfcddf365978de76d1983d3ee22afc260e1ca9619"
2020"checksum rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7540fc8b0c49f096ee9c961cda096467dce8084bec6bdca2fc83895fd9b28cb8" 2020"checksum rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7540fc8b0c49f096ee9c961cda096467dce8084bec6bdca2fc83895fd9b28cb8"
@@ -2027,9 +2027,9 @@ dependencies = [
2027"checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" 2027"checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27"
2028"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" 2028"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
2029"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" 2029"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
2030"checksum serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)" = "9f301d728f2b94c9a7691c90f07b0b4e8a4517181d9461be94c04bddeb4bd850" 2030"checksum serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)" = "92514fb95f900c9b5126e32d020f5c6d40564c27a5ea6d1d7d9f157a96623560"
2031"checksum serde_derive 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)" = "beed18e6f5175aef3ba670e57c60ef3b1b74d250d962a26604bff4c80e970dd4" 2031"checksum serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)" = "bb6eabf4b5914e88e24eea240bb7c9f9a2cbc1bbbe8d961d381975ec3c6b806c"
2032"checksum serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)" = "27dce848e7467aa0e2fcaf0a413641499c0b745452aaca1194d24dedde9e13c9" 2032"checksum serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)" = "5a23aa71d4a4d43fdbfaac00eff68ba8a06a51759a89ac3304323e800c4dd40d"
2033"checksum serde_yaml 0.8.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0887a8e097a69559b56aa2526bf7aff7c3048cf627dff781f0b56a6001534593" 2033"checksum serde_yaml 0.8.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0887a8e097a69559b56aa2526bf7aff7c3048cf627dff781f0b56a6001534593"
2034"checksum sha-1 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "51b9d1f3b5de8a167ab06834a7c883bd197f2191e1dda1a22d9ccfeedbf9aded" 2034"checksum sha-1 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "51b9d1f3b5de8a167ab06834a7c883bd197f2191e1dda1a22d9ccfeedbf9aded"
2035"checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" 2035"checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8"
@@ -2040,7 +2040,7 @@ dependencies = [
2040"checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" 2040"checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8"
2041"checksum strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550" 2041"checksum strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550"
2042"checksum superslice 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ab16ced94dbd8a46c82fd81e3ed9a8727dac2977ea869d217bcc4ea1f122e81f" 2042"checksum superslice 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ab16ced94dbd8a46c82fd81e3ed9a8727dac2977ea869d217bcc4ea1f122e81f"
2043"checksum syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)" = "f92e629aa1d9c827b2bb8297046c1ccffc57c99b947a680d3ccff1f136a3bee9" 2043"checksum syn 0.15.27 (registry+https://github.com/rust-lang/crates.io-index)" = "525bd55255f03c816e5d7f615587bd13030c7103354fadb104993dcee6a788ec"
2044"checksum synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "73687139bf99285483c96ac0add482c3776528beac1d97d444f6e91f203a2015" 2044"checksum synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "73687139bf99285483c96ac0add482c3776528beac1d97d444f6e91f203a2015"
2045"checksum tempfile 3.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "b86c784c88d98c801132806dadd3819ed29d8600836c4088e855cdf3e178ed8a" 2045"checksum tempfile 3.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "b86c784c88d98c801132806dadd3819ed29d8600836c4088e855cdf3e178ed8a"
2046"checksum tera 0.11.20 (registry+https://github.com/rust-lang/crates.io-index)" = "4b505279e19d8f7d24b1a9dc58327c9c36174b1a2c7ebdeac70792d017cb64f3" 2046"checksum tera 0.11.20 (registry+https://github.com/rust-lang/crates.io-index)" = "4b505279e19d8f7d24b1a9dc58327c9c36174b1a2c7ebdeac70792d017cb64f3"
@@ -2061,7 +2061,7 @@ dependencies = [
2061"checksum unic-segment 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c9ca47cbb09fb5fcd066b5867d11dc528302fa465277882797d6a836e1ee6f9e" 2061"checksum unic-segment 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c9ca47cbb09fb5fcd066b5867d11dc528302fa465277882797d6a836e1ee6f9e"
2062"checksum unic-ucd-segment 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "48f1a08ce0409a9e391b88d1930118eec48af12742fc538bcec55f775865776e" 2062"checksum unic-ucd-segment 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "48f1a08ce0409a9e391b88d1930118eec48af12742fc538bcec55f775865776e"
2063"checksum unic-ucd-version 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1f5e6c6c53c2d0ece4a5964bc55fcff8602153063cb4fab20958ff32998ff6" 2063"checksum unic-ucd-version 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1f5e6c6c53c2d0ece4a5964bc55fcff8602153063cb4fab20958ff32998ff6"
2064"checksum unicase 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9d3218ea14b4edcaccfa0df0a64a3792a2c32cc706f1b336e48867f9d3147f90" 2064"checksum unicase 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "41d17211f887da8e4a70a45b9536f26fc5de166b81e2d5d80de4a17fd22553bd"
2065"checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" 2065"checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5"
2066"checksum unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "141339a08b982d942be2ca06ff8b076563cbe223d1befd5450716790d44e2426" 2066"checksum unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "141339a08b982d942be2ca06ff8b076563cbe223d1befd5450716790d44e2426"
2067"checksum unicode-segmentation 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "aa6024fc12ddfd1c6dbc14a80fa2324d4568849869b779f6bd37e5e4c03344d1" 2067"checksum unicode-segmentation 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "aa6024fc12ddfd1c6dbc14a80fa2324d4568849869b779f6bd37e5e4c03344d1"
diff --git a/crates/gen_lsp_server/src/msg.rs b/crates/gen_lsp_server/src/msg.rs
index 02c7a1858..1d39ba4bc 100644
--- a/crates/gen_lsp_server/src/msg.rs
+++ b/crates/gen_lsp_server/src/msg.rs
@@ -15,6 +15,24 @@ pub enum RawMessage {
15 Response(RawResponse), 15 Response(RawResponse),
16} 16}
17 17
18impl From<RawRequest> for RawMessage {
19 fn from(raw: RawRequest) -> RawMessage {
20 RawMessage::Request(raw)
21 }
22}
23
24impl From<RawNotification> for RawMessage {
25 fn from(raw: RawNotification) -> RawMessage {
26 RawMessage::Notification(raw)
27 }
28}
29
30impl From<RawResponse> for RawMessage {
31 fn from(raw: RawResponse) -> RawMessage {
32 RawMessage::Response(raw)
33 }
34}
35
18#[derive(Debug, Serialize, Deserialize, Clone)] 36#[derive(Debug, Serialize, Deserialize, Clone)]
19pub struct RawRequest { 37pub struct RawRequest {
20 pub id: u64, 38 pub id: u64,
diff --git a/crates/ra_cli/Cargo.toml b/crates/ra_cli/Cargo.toml
index 042e42067..ff30bf0b3 100644
--- a/crates/ra_cli/Cargo.toml
+++ b/crates/ra_cli/Cargo.toml
@@ -9,7 +9,7 @@ publish = false
9clap = "2.32.0" 9clap = "2.32.0"
10failure = "0.1.4" 10failure = "0.1.4"
11join_to_string = "0.1.1" 11join_to_string = "0.1.1"
12flexi_logger = "0.10.0" 12flexi_logger = "0.11.0"
13indicatif = "0.11.0" 13indicatif = "0.11.0"
14 14
15ra_syntax = { path = "../ra_syntax" } 15ra_syntax = { path = "../ra_syntax" }
diff --git a/crates/ra_hir/Cargo.toml b/crates/ra_hir/Cargo.toml
index f2242fe1f..501308acc 100644
--- a/crates/ra_hir/Cargo.toml
+++ b/crates/ra_hir/Cargo.toml
@@ -21,5 +21,5 @@ tt = { path = "../ra_tt", package = "ra_tt" }
21test_utils = { path = "../test_utils" } 21test_utils = { path = "../test_utils" }
22 22
23[dev-dependencies] 23[dev-dependencies]
24flexi_logger = "0.10.0" 24flexi_logger = "0.11.0"
25insta = "0.6.1" 25insta = "0.7.0"
diff --git a/crates/ra_hir/src/ty/infer.rs b/crates/ra_hir/src/ty/infer.rs
index 5e4d49ffb..268d2c110 100644
--- a/crates/ra_hir/src/ty/infer.rs
+++ b/crates/ra_hir/src/ty/infer.rs
@@ -29,6 +29,7 @@ use crate::{
29 Function, StructField, Path, Name, 29 Function, StructField, Path, Name,
30 FnSignature, AdtDef, 30 FnSignature, AdtDef,
31 HirDatabase, 31 HirDatabase,
32 ImplItem,
32 type_ref::{TypeRef, Mutability}, 33 type_ref::{TypeRef, Mutability},
33 expr::{Body, Expr, BindingAnnotation, Literal, ExprId, Pat, PatId, UnaryOp, BinaryOp, Statement, FieldPat, self}, 34 expr::{Body, Expr, BindingAnnotation, Literal, ExprId, Pat, PatId, UnaryOp, BinaryOp, Statement, FieldPat, self},
34 generics::GenericParams, 35 generics::GenericParams,
@@ -54,6 +55,14 @@ pub fn infer(db: &impl HirDatabase, func: Function) -> Arc<InferenceResult> {
54 Arc::new(ctx.resolve_all()) 55 Arc::new(ctx.resolve_all())
55} 56}
56 57
58#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
59enum ExprOrPatId {
60 ExprId(ExprId),
61 PatId(PatId),
62}
63
64impl_froms!(ExprOrPatId: ExprId, PatId);
65
57/// The result of type inference: A mapping from expressions and patterns to types. 66/// The result of type inference: A mapping from expressions and patterns to types.
58#[derive(Clone, PartialEq, Eq, Debug)] 67#[derive(Clone, PartialEq, Eq, Debug)]
59pub struct InferenceResult { 68pub struct InferenceResult {
@@ -61,6 +70,8 @@ pub struct InferenceResult {
61 method_resolutions: FxHashMap<ExprId, Function>, 70 method_resolutions: FxHashMap<ExprId, Function>,
62 /// For each field access expr, records the field it resolves to. 71 /// For each field access expr, records the field it resolves to.
63 field_resolutions: FxHashMap<ExprId, StructField>, 72 field_resolutions: FxHashMap<ExprId, StructField>,
73 /// For each associated item record what it resolves to
74 assoc_resolutions: FxHashMap<ExprOrPatId, ImplItem>,
64 pub(super) type_of_expr: ArenaMap<ExprId, Ty>, 75 pub(super) type_of_expr: ArenaMap<ExprId, Ty>,
65 pub(super) type_of_pat: ArenaMap<PatId, Ty>, 76 pub(super) type_of_pat: ArenaMap<PatId, Ty>,
66} 77}
@@ -72,6 +83,12 @@ impl InferenceResult {
72 pub fn field_resolution(&self, expr: ExprId) -> Option<StructField> { 83 pub fn field_resolution(&self, expr: ExprId) -> Option<StructField> {
73 self.field_resolutions.get(&expr).map(|it| *it) 84 self.field_resolutions.get(&expr).map(|it| *it)
74 } 85 }
86 pub fn assoc_resolutions_for_expr(&self, id: ExprId) -> Option<ImplItem> {
87 self.assoc_resolutions.get(&id.into()).map(|it| *it)
88 }
89 pub fn assoc_resolutions_for_pat(&self, id: PatId) -> Option<ImplItem> {
90 self.assoc_resolutions.get(&id.into()).map(|it| *it)
91 }
75} 92}
76 93
77impl Index<ExprId> for InferenceResult { 94impl Index<ExprId> for InferenceResult {
@@ -99,6 +116,7 @@ struct InferenceContext<'a, D: HirDatabase> {
99 var_unification_table: InPlaceUnificationTable<TypeVarId>, 116 var_unification_table: InPlaceUnificationTable<TypeVarId>,
100 method_resolutions: FxHashMap<ExprId, Function>, 117 method_resolutions: FxHashMap<ExprId, Function>,
101 field_resolutions: FxHashMap<ExprId, StructField>, 118 field_resolutions: FxHashMap<ExprId, StructField>,
119 assoc_resolutions: FxHashMap<ExprOrPatId, ImplItem>,
102 type_of_expr: ArenaMap<ExprId, Ty>, 120 type_of_expr: ArenaMap<ExprId, Ty>,
103 type_of_pat: ArenaMap<PatId, Ty>, 121 type_of_pat: ArenaMap<PatId, Ty>,
104 /// The return type of the function being inferred. 122 /// The return type of the function being inferred.
@@ -110,6 +128,7 @@ impl<'a, D: HirDatabase> InferenceContext<'a, D> {
110 InferenceContext { 128 InferenceContext {
111 method_resolutions: FxHashMap::default(), 129 method_resolutions: FxHashMap::default(),
112 field_resolutions: FxHashMap::default(), 130 field_resolutions: FxHashMap::default(),
131 assoc_resolutions: FxHashMap::default(),
113 type_of_expr: ArenaMap::default(), 132 type_of_expr: ArenaMap::default(),
114 type_of_pat: ArenaMap::default(), 133 type_of_pat: ArenaMap::default(),
115 var_unification_table: InPlaceUnificationTable::new(), 134 var_unification_table: InPlaceUnificationTable::new(),
@@ -135,6 +154,7 @@ impl<'a, D: HirDatabase> InferenceContext<'a, D> {
135 InferenceResult { 154 InferenceResult {
136 method_resolutions: self.method_resolutions, 155 method_resolutions: self.method_resolutions,
137 field_resolutions: self.field_resolutions, 156 field_resolutions: self.field_resolutions,
157 assoc_resolutions: self.assoc_resolutions,
138 type_of_expr: expr_types, 158 type_of_expr: expr_types,
139 type_of_pat: pat_types, 159 type_of_pat: pat_types,
140 } 160 }
@@ -152,6 +172,10 @@ impl<'a, D: HirDatabase> InferenceContext<'a, D> {
152 self.field_resolutions.insert(expr, field); 172 self.field_resolutions.insert(expr, field);
153 } 173 }
154 174
175 fn write_assoc_resolution(&mut self, id: ExprOrPatId, item: ImplItem) {
176 self.assoc_resolutions.insert(id, item);
177 }
178
155 fn write_pat_ty(&mut self, pat: PatId, ty: Ty) { 179 fn write_pat_ty(&mut self, pat: PatId, ty: Ty) {
156 self.type_of_pat.insert(pat, ty); 180 self.type_of_pat.insert(pat, ty);
157 } 181 }
@@ -341,7 +365,7 @@ impl<'a, D: HirDatabase> InferenceContext<'a, D> {
341 }) 365 })
342 } 366 }
343 367
344 fn infer_path_expr(&mut self, resolver: &Resolver, path: &Path) -> Option<Ty> { 368 fn infer_path_expr(&mut self, resolver: &Resolver, path: &Path, id: ExprOrPatId) -> Option<Ty> {
345 let resolved = resolver.resolve_path_segments(self.db, &path); 369 let resolved = resolver.resolve_path_segments(self.db, &path);
346 370
347 let (def, remaining_index) = resolved.into_inner(); 371 let (def, remaining_index) = resolved.into_inner();
@@ -393,26 +417,38 @@ impl<'a, D: HirDatabase> InferenceContext<'a, D> {
393 // Attempt to find an impl_item for the type which has a name matching 417 // Attempt to find an impl_item for the type which has a name matching
394 // the current segment 418 // the current segment
395 log::debug!("looking for path segment: {:?}", segment); 419 log::debug!("looking for path segment: {:?}", segment);
396 let item: crate::ModuleDef = ty.iterate_impl_items(self.db, |item| match item { 420 let item: crate::ModuleDef = ty.iterate_impl_items(self.db, |item| {
397 crate::ImplItem::Method(func) => { 421 let matching_def: Option<crate::ModuleDef> = match item {
398 let sig = func.signature(self.db); 422 crate::ImplItem::Method(func) => {
399 if segment.name == *sig.name() { 423 let sig = func.signature(self.db);
400 return Some(func.into()); 424 if segment.name == *sig.name() {
425 Some(func.into())
426 } else {
427 None
428 }
401 } 429 }
402 None
403 }
404 430
405 crate::ImplItem::Const(konst) => { 431 crate::ImplItem::Const(konst) => {
406 let sig = konst.signature(self.db); 432 let sig = konst.signature(self.db);
407 if segment.name == *sig.name() { 433 if segment.name == *sig.name() {
408 return Some(konst.into()); 434 Some(konst.into())
435 } else {
436 None
437 }
409 } 438 }
410 None
411 }
412 439
413 // TODO: Resolve associated types 440 // TODO: Resolve associated types
414 crate::ImplItem::TypeAlias(_) => None, 441 crate::ImplItem::TypeAlias(_) => None,
442 };
443 match matching_def {
444 Some(_) => {
445 self.write_assoc_resolution(id, item);
446 return matching_def;
447 }
448 None => None,
449 }
415 })?; 450 })?;
451
416 resolved = Resolution::Def(item.into()); 452 resolved = Resolution::Def(item.into());
417 } 453 }
418 454
@@ -420,7 +456,6 @@ impl<'a, D: HirDatabase> InferenceContext<'a, D> {
420 Resolution::Def(def) => { 456 Resolution::Def(def) => {
421 let typable: Option<TypableDef> = def.into(); 457 let typable: Option<TypableDef> = def.into();
422 let typable = typable?; 458 let typable = typable?;
423
424 let substs = Ty::substs_from_path(self.db, &self.resolver, path, typable); 459 let substs = Ty::substs_from_path(self.db, &self.resolver, path, typable);
425 let ty = self.db.type_for_def(typable, Namespace::Values).apply_substs(substs); 460 let ty = self.db.type_for_def(typable, Namespace::Values).apply_substs(substs);
426 let ty = self.insert_type_vars(ty); 461 let ty = self.insert_type_vars(ty);
@@ -572,7 +607,7 @@ impl<'a, D: HirDatabase> InferenceContext<'a, D> {
572 Pat::Path(path) => { 607 Pat::Path(path) => {
573 // TODO use correct resolver for the surrounding expression 608 // TODO use correct resolver for the surrounding expression
574 let resolver = self.resolver.clone(); 609 let resolver = self.resolver.clone();
575 self.infer_path_expr(&resolver, &path).unwrap_or(Ty::Unknown) 610 self.infer_path_expr(&resolver, &path, pat.into()).unwrap_or(Ty::Unknown)
576 } 611 }
577 Pat::Bind { mode, name: _name, subpat } => { 612 Pat::Bind { mode, name: _name, subpat } => {
578 let inner_ty = if let Some(subpat) = subpat { 613 let inner_ty = if let Some(subpat) = subpat {
@@ -782,7 +817,7 @@ impl<'a, D: HirDatabase> InferenceContext<'a, D> {
782 Expr::Path(p) => { 817 Expr::Path(p) => {
783 // TODO this could be more efficient... 818 // TODO this could be more efficient...
784 let resolver = expr::resolver_for_expr(self.body.clone(), self.db, tgt_expr); 819 let resolver = expr::resolver_for_expr(self.body.clone(), self.db, tgt_expr);
785 self.infer_path_expr(&resolver, p).unwrap_or(Ty::Unknown) 820 self.infer_path_expr(&resolver, p, tgt_expr.into()).unwrap_or(Ty::Unknown)
786 } 821 }
787 Expr::Continue => Ty::Never, 822 Expr::Continue => Ty::Never,
788 Expr::Break { expr } => { 823 Expr::Break { expr } => {
diff --git a/crates/ra_ide_api/Cargo.toml b/crates/ra_ide_api/Cargo.toml
index 1d907bda2..40b7a8d0a 100644
--- a/crates/ra_ide_api/Cargo.toml
+++ b/crates/ra_ide_api/Cargo.toml
@@ -27,7 +27,7 @@ test_utils = { path = "../test_utils" }
27ra_assists = { path = "../ra_assists" } 27ra_assists = { path = "../ra_assists" }
28 28
29[dev-dependencies] 29[dev-dependencies]
30insta = "0.6.1" 30insta = "0.7.0"
31 31
32[features] 32[features]
33jemalloc = [ "jemallocator", "jemalloc-ctl" ] 33jemalloc = [ "jemallocator", "jemalloc-ctl" ]
diff --git a/crates/ra_ide_api/src/goto_definition.rs b/crates/ra_ide_api/src/goto_definition.rs
index 9ec179593..364263d9b 100644
--- a/crates/ra_ide_api/src/goto_definition.rs
+++ b/crates/ra_ide_api/src/goto_definition.rs
@@ -47,9 +47,10 @@ pub(crate) fn reference_definition(
47 name_ref: &ast::NameRef, 47 name_ref: &ast::NameRef,
48) -> ReferenceResult { 48) -> ReferenceResult {
49 use self::ReferenceResult::*; 49 use self::ReferenceResult::*;
50 if let Some(function) = 50
51 hir::source_binder::function_from_child_node(db, file_id, name_ref.syntax()) 51 let function = hir::source_binder::function_from_child_node(db, file_id, name_ref.syntax());
52 { 52
53 if let Some(function) = function {
53 // Check if it is a method 54 // Check if it is a method
54 if let Some(method_call) = name_ref.syntax().parent().and_then(ast::MethodCallExpr::cast) { 55 if let Some(method_call) = name_ref.syntax().parent().and_then(ast::MethodCallExpr::cast) {
55 tested_by!(goto_definition_works_for_methods); 56 tested_by!(goto_definition_works_for_methods);
@@ -122,9 +123,29 @@ pub(crate) fn reference_definition(
122 Some(Resolution::SelfType(_impl_block)) => { 123 Some(Resolution::SelfType(_impl_block)) => {
123 // TODO: go to the implemented type 124 // TODO: go to the implemented type
124 } 125 }
125 None => {} 126 None => {
127 // If we failed to resolve then check associated items
128 if let Some(function) = function {
129 // Should we do this above and then grab path from the PathExpr?
130 if let Some(path_expr) =
131 name_ref.syntax().ancestors().find_map(ast::PathExpr::cast)
132 {
133 let infer_result = function.infer(db);
134 let source_map = function.body_source_map(db);
135 let expr = ast::Expr::cast(path_expr.syntax()).unwrap();
136
137 if let Some(res) = source_map
138 .node_expr(expr)
139 .and_then(|it| infer_result.assoc_resolutions_for_expr(it.into()))
140 {
141 return Exact(NavigationTarget::from_impl_item(db, res));
142 }
143 }
144 }
145 }
126 } 146 }
127 } 147 }
148
128 // If that fails try the index based approach. 149 // If that fails try the index based approach.
129 let navs = crate::symbol_index::index_resolve(db, name_ref) 150 let navs = crate::symbol_index::index_resolve(db, name_ref)
130 .into_iter() 151 .into_iter()
diff --git a/crates/ra_ide_api/src/hover.rs b/crates/ra_ide_api/src/hover.rs
index 8ec60090d..bcd052c8b 100644
--- a/crates/ra_ide_api/src/hover.rs
+++ b/crates/ra_ide_api/src/hover.rs
@@ -512,4 +512,26 @@ mod tests {
512 let hover = analysis.hover(position).unwrap().unwrap(); 512 let hover = analysis.hover(position).unwrap().unwrap();
513 assert_eq!(trim_markup_opt(hover.info.first()), Some("Thing")); 513 assert_eq!(trim_markup_opt(hover.info.first()), Some("Thing"));
514 } 514 }
515
516 #[test]
517 fn test_hover_infer_associated_method_exact() {
518 let (analysis, position) = single_file_with_position(
519 "
520 struct Thing { x: u32 }
521
522 impl Thing {
523 fn new() -> Thing {
524 Thing { x: 0 }
525 }
526 }
527
528 fn main() {
529 let foo_test = Thing::new<|>();
530 }
531 ",
532 );
533 let hover = analysis.hover(position).unwrap().unwrap();
534 assert_eq!(trim_markup_opt(hover.info.first()), Some("fn new() -> Thing"));
535 assert_eq!(hover.info.is_exact(), true);
536 }
515} 537}
diff --git a/crates/ra_ide_api/src/navigation_target.rs b/crates/ra_ide_api/src/navigation_target.rs
index 6538081ac..d806cb368 100644
--- a/crates/ra_ide_api/src/navigation_target.rs
+++ b/crates/ra_ide_api/src/navigation_target.rs
@@ -3,7 +3,7 @@ use ra_syntax::{
3 SyntaxNode, SyntaxNodePtr, AstNode, SmolStr, TextRange, ast, 3 SyntaxNode, SyntaxNodePtr, AstNode, SmolStr, TextRange, ast,
4 SyntaxKind::{self, NAME}, 4 SyntaxKind::{self, NAME},
5}; 5};
6use hir::{ModuleSource, FieldSource, Name}; 6use hir::{ModuleSource, FieldSource, Name, ImplItem};
7 7
8use crate::{FileSymbol, db::RootDatabase}; 8use crate::{FileSymbol, db::RootDatabase};
9 9
@@ -174,6 +174,20 @@ impl NavigationTarget {
174 ) 174 )
175 } 175 }
176 176
177 pub(crate) fn from_impl_item(db: &RootDatabase, impl_item: hir::ImplItem) -> NavigationTarget {
178 match impl_item {
179 ImplItem::Method(f) => NavigationTarget::from_function(db, f),
180 ImplItem::Const(c) => {
181 let (file_id, node) = c.source(db);
182 NavigationTarget::from_named(file_id.original_file(db), &*node)
183 }
184 ImplItem::TypeAlias(a) => {
185 let (file_id, node) = a.source(db);
186 NavigationTarget::from_named(file_id.original_file(db), &*node)
187 }
188 }
189 }
190
177 #[cfg(test)] 191 #[cfg(test)]
178 pub(crate) fn assert_match(&self, expected: &str) { 192 pub(crate) fn assert_match(&self, expected: &str) {
179 let actual = self.debug_render(); 193 let actual = self.debug_render();
diff --git a/crates/ra_ide_api/src/symbol_index.rs b/crates/ra_ide_api/src/symbol_index.rs
index 414327ac2..94fe1d6d7 100644
--- a/crates/ra_ide_api/src/symbol_index.rs
+++ b/crates/ra_ide_api/src/symbol_index.rs
@@ -24,6 +24,7 @@ use std::{
24 hash::{Hash, Hasher}, 24 hash::{Hash, Hasher},
25 sync::Arc, 25 sync::Arc,
26 mem, 26 mem,
27 fmt,
27}; 28};
28 29
29use fst::{self, Streamer}; 30use fst::{self, Streamer};
@@ -113,12 +114,18 @@ pub(crate) fn index_resolve(db: &RootDatabase, name_ref: &ast::NameRef) -> Vec<F
113 crate::symbol_index::world_symbols(db, query) 114 crate::symbol_index::world_symbols(db, query)
114} 115}
115 116
116#[derive(Default, Debug)] 117#[derive(Default)]
117pub(crate) struct SymbolIndex { 118pub(crate) struct SymbolIndex {
118 symbols: Vec<FileSymbol>, 119 symbols: Vec<FileSymbol>,
119 map: fst::Map, 120 map: fst::Map,
120} 121}
121 122
123impl fmt::Debug for SymbolIndex {
124 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
125 f.debug_struct("SymbolIndex").field("n_symbols", &self.symbols.len()).finish()
126 }
127}
128
122impl PartialEq for SymbolIndex { 129impl PartialEq for SymbolIndex {
123 fn eq(&self, other: &SymbolIndex) -> bool { 130 fn eq(&self, other: &SymbolIndex) -> bool {
124 self.symbols == other.symbols 131 self.symbols == other.symbols
diff --git a/crates/ra_ide_api_light/Cargo.toml b/crates/ra_ide_api_light/Cargo.toml
index 29c1f4639..a30833dc3 100644
--- a/crates/ra_ide_api_light/Cargo.toml
+++ b/crates/ra_ide_api_light/Cargo.toml
@@ -18,4 +18,4 @@ ra_fmt = { path = "../ra_fmt" }
18[dev-dependencies] 18[dev-dependencies]
19test_utils = { path = "../test_utils" } 19test_utils = { path = "../test_utils" }
20proptest = "0.9.0" 20proptest = "0.9.0"
21insta = "0.6.1" 21insta = "0.7.0"
diff --git a/crates/ra_lsp_server/Cargo.toml b/crates/ra_lsp_server/Cargo.toml
index ef6dea393..a36e6b5ae 100644
--- a/crates/ra_lsp_server/Cargo.toml
+++ b/crates/ra_lsp_server/Cargo.toml
@@ -12,7 +12,7 @@ failure_derive = "0.1.4"
12serde_json = "1.0.34" 12serde_json = "1.0.34"
13serde = "1.0.83" 13serde = "1.0.83"
14crossbeam-channel = "0.3.5" 14crossbeam-channel = "0.3.5"
15flexi_logger = "0.10.0" 15flexi_logger = "0.11.0"
16log = "0.4.3" 16log = "0.4.3"
17url_serde = "0.2.0" 17url_serde = "0.2.0"
18lsp-types = "0.56.0" 18lsp-types = "0.56.0"
diff --git a/crates/ra_lsp_server/src/init.rs b/crates/ra_lsp_server/src/init.rs
new file mode 100644
index 000000000..0b7a47a0b
--- /dev/null
+++ b/crates/ra_lsp_server/src/init.rs
@@ -0,0 +1,39 @@
1use serde::{Deserialize, Deserializer};
2
3/// Client provided initialization options
4#[derive(Deserialize, Clone, Copy, Debug)]
5#[serde(rename_all = "camelCase")]
6pub struct InitializationOptions {
7 /// Whether the client supports our custom highlighting publishing decorations.
8 /// This is different to the highlightingOn setting, which is whether the user
9 /// wants our custom highlighting to be used.
10 ///
11 /// Defaults to `true`
12 #[serde(default = "bool_true", deserialize_with = "nullable_bool_true")]
13 pub publish_decorations: bool,
14
15 /// Whether or not the workspace loaded notification should be sent
16 ///
17 /// Defaults to `true`
18 #[serde(default = "bool_true", deserialize_with = "nullable_bool_true")]
19 pub show_workspace_loaded: bool,
20}
21
22impl Default for InitializationOptions {
23 fn default() -> InitializationOptions {
24 InitializationOptions { publish_decorations: true, show_workspace_loaded: true }
25 }
26}
27
28fn bool_true() -> bool {
29 true
30}
31
32/// Deserializes a null value to a bool true by default
33fn nullable_bool_true<'de, D>(deserializer: D) -> Result<bool, D::Error>
34where
35 D: Deserializer<'de>,
36{
37 let opt = Option::deserialize(deserializer)?;
38 Ok(opt.unwrap_or(true))
39}
diff --git a/crates/ra_lsp_server/src/lib.rs b/crates/ra_lsp_server/src/lib.rs
index 5b5f3b948..59e16a47c 100644
--- a/crates/ra_lsp_server/src/lib.rs
+++ b/crates/ra_lsp_server/src/lib.rs
@@ -5,7 +5,8 @@ mod main_loop;
5mod markdown; 5mod markdown;
6mod project_model; 6mod project_model;
7pub mod req; 7pub mod req;
8pub mod init;
8mod server_world; 9mod server_world;
9 10
10pub type Result<T> = ::std::result::Result<T, ::failure::Error>; 11pub type Result<T> = ::std::result::Result<T, ::failure::Error>;
11pub use crate::{caps::server_capabilities, main_loop::main_loop, main_loop::LspError}; 12pub use crate::{caps::server_capabilities, main_loop::main_loop, main_loop::LspError, init::InitializationOptions};
diff --git a/crates/ra_lsp_server/src/main.rs b/crates/ra_lsp_server/src/main.rs
index 03f83c7be..5a2905207 100644
--- a/crates/ra_lsp_server/src/main.rs
+++ b/crates/ra_lsp_server/src/main.rs
@@ -2,7 +2,7 @@ use serde::Deserialize;
2use flexi_logger::{Duplicate, Logger}; 2use flexi_logger::{Duplicate, Logger};
3use gen_lsp_server::{run_server, stdio_transport}; 3use gen_lsp_server::{run_server, stdio_transport};
4 4
5use ra_lsp_server::Result; 5use ra_lsp_server::{Result, InitializationOptions};
6 6
7fn main() -> Result<()> { 7fn main() -> Result<()> {
8 ::std::env::set_var("RUST_BACKTRACE", "short"); 8 ::std::env::set_var("RUST_BACKTRACE", "short");
@@ -24,26 +24,18 @@ fn main() -> Result<()> {
24 } 24 }
25} 25}
26 26
27#[derive(Deserialize)]
28#[serde(rename_all = "camelCase")]
29struct InitializationOptions {
30 // Whether the client supports our custom highlighting publishing decorations.
31 // This is different to the highlightingOn setting, which is whether the user
32 // wants our custom highlighting to be used.
33 publish_decorations: Option<bool>,
34}
35
36fn main_inner() -> Result<()> { 27fn main_inner() -> Result<()> {
37 let (receiver, sender, threads) = stdio_transport(); 28 let (receiver, sender, threads) = stdio_transport();
38 let cwd = ::std::env::current_dir()?; 29 let cwd = ::std::env::current_dir()?;
39 run_server(ra_lsp_server::server_capabilities(), receiver, sender, |params, r, s| { 30 run_server(ra_lsp_server::server_capabilities(), receiver, sender, |params, r, s| {
40 let root = params.root_uri.and_then(|it| it.to_file_path().ok()).unwrap_or(cwd); 31 let root = params.root_uri.and_then(|it| it.to_file_path().ok()).unwrap_or(cwd);
41 let supports_decorations = params 32
33 let opts = params
42 .initialization_options 34 .initialization_options
43 .and_then(|v| InitializationOptions::deserialize(v).ok()) 35 .and_then(|v| InitializationOptions::deserialize(v).ok())
44 .and_then(|it| it.publish_decorations) 36 .unwrap_or(InitializationOptions::default());
45 == Some(true); 37
46 ra_lsp_server::main_loop(false, root, supports_decorations, r, s) 38 ra_lsp_server::main_loop(root, opts, r, s)
47 })?; 39 })?;
48 log::info!("shutting down IO..."); 40 log::info!("shutting down IO...");
49 threads.join()?; 41 threads.join()?;
diff --git a/crates/ra_lsp_server/src/main_loop.rs b/crates/ra_lsp_server/src/main_loop.rs
index ce50fb301..d0c2a95ef 100644
--- a/crates/ra_lsp_server/src/main_loop.rs
+++ b/crates/ra_lsp_server/src/main_loop.rs
@@ -22,6 +22,7 @@ use crate::{
22 req, 22 req,
23 server_world::{ServerWorld, ServerWorldState}, 23 server_world::{ServerWorld, ServerWorldState},
24 Result, 24 Result,
25 InitializationOptions,
25}; 26};
26 27
27#[derive(Debug, Fail)] 28#[derive(Debug, Fail)]
@@ -46,9 +47,8 @@ enum Task {
46const THREADPOOL_SIZE: usize = 8; 47const THREADPOOL_SIZE: usize = 8;
47 48
48pub fn main_loop( 49pub fn main_loop(
49 internal_mode: bool,
50 ws_root: PathBuf, 50 ws_root: PathBuf,
51 supports_decorations: bool, 51 options: InitializationOptions,
52 msg_receiver: &Receiver<RawMessage>, 52 msg_receiver: &Receiver<RawMessage>,
53 msg_sender: &Sender<RawMessage>, 53 msg_sender: &Sender<RawMessage>,
54) -> Result<()> { 54) -> Result<()> {
@@ -63,6 +63,12 @@ pub fn main_loop(
63 Ok(ws) => vec![ws], 63 Ok(ws) => vec![ws],
64 Err(e) => { 64 Err(e) => {
65 log::error!("loading workspace failed: {}", e); 65 log::error!("loading workspace failed: {}", e);
66
67 show_message(
68 req::MessageType::Error,
69 format!("rust-analyzer failed to load workspace: {}", e),
70 msg_sender,
71 );
66 Vec::new() 72 Vec::new()
67 } 73 }
68 } 74 }
@@ -75,8 +81,7 @@ pub fn main_loop(
75 let mut pending_requests = FxHashSet::default(); 81 let mut pending_requests = FxHashSet::default();
76 let mut subs = Subscriptions::new(); 82 let mut subs = Subscriptions::new();
77 let main_res = main_loop_inner( 83 let main_res = main_loop_inner(
78 internal_mode, 84 options,
79 supports_decorations,
80 &pool, 85 &pool,
81 msg_sender, 86 msg_sender,
82 msg_receiver, 87 msg_receiver,
@@ -143,8 +148,7 @@ impl fmt::Debug for Event {
143} 148}
144 149
145fn main_loop_inner( 150fn main_loop_inner(
146 internal_mode: bool, 151 options: InitializationOptions,
147 supports_decorations: bool,
148 pool: &ThreadPool, 152 pool: &ThreadPool,
149 msg_sender: &Sender<RawMessage>, 153 msg_sender: &Sender<RawMessage>,
150 msg_receiver: &Receiver<RawMessage>, 154 msg_receiver: &Receiver<RawMessage>,
@@ -158,6 +162,7 @@ fn main_loop_inner(
158 // time to always have a thread ready to react to input. 162 // time to always have a thread ready to react to input.
159 let mut in_flight_libraries = 0; 163 let mut in_flight_libraries = 0;
160 let mut pending_libraries = Vec::new(); 164 let mut pending_libraries = Vec::new();
165 let mut send_workspace_notification = true;
161 166
162 let (libdata_sender, libdata_receiver) = unbounded(); 167 let (libdata_sender, libdata_receiver) = unbounded();
163 loop { 168 loop {
@@ -185,7 +190,6 @@ fn main_loop_inner(
185 state_changed = true; 190 state_changed = true;
186 } 191 }
187 Event::Lib(lib) => { 192 Event::Lib(lib) => {
188 feedback(internal_mode, "library loaded", msg_sender);
189 state.add_lib(lib); 193 state.add_lib(lib);
190 in_flight_libraries -= 1; 194 in_flight_libraries -= 1;
191 } 195 }
@@ -199,7 +203,7 @@ fn main_loop_inner(
199 Ok((id, ())) => { 203 Ok((id, ())) => {
200 state.collect_garbage(); 204 state.collect_garbage();
201 let resp = RawResponse::ok::<req::CollectGarbage>(id, &()); 205 let resp = RawResponse::ok::<req::CollectGarbage>(id, &());
202 msg_sender.send(RawMessage::Response(resp)).unwrap() 206 msg_sender.send(resp.into()).unwrap()
203 } 207 }
204 Err(req) => { 208 Err(req) => {
205 match on_request(state, pending_requests, pool, &task_sender, req)? { 209 match on_request(state, pending_requests, pool, &task_sender, req)? {
@@ -211,7 +215,7 @@ fn main_loop_inner(
211 ErrorCode::MethodNotFound as i32, 215 ErrorCode::MethodNotFound as i32,
212 "unknown request".to_string(), 216 "unknown request".to_string(),
213 ); 217 );
214 msg_sender.send(RawMessage::Response(resp)).unwrap() 218 msg_sender.send(resp.into()).unwrap()
215 } 219 }
216 } 220 }
217 } 221 }
@@ -239,15 +243,23 @@ fn main_loop_inner(
239 }); 243 });
240 } 244 }
241 245
242 if state.roots_to_scan == 0 && pending_libraries.is_empty() && in_flight_libraries == 0 { 246 if send_workspace_notification
243 feedback(internal_mode, "workspace loaded", msg_sender); 247 && state.roots_to_scan == 0
248 && pending_libraries.is_empty()
249 && in_flight_libraries == 0
250 {
251 if options.show_workspace_loaded {
252 show_message(req::MessageType::Info, "workspace loaded", msg_sender);
253 }
254 // Only send the notification first time
255 send_workspace_notification = false;
244 } 256 }
245 257
246 if state_changed { 258 if state_changed {
247 update_file_notifications_on_threadpool( 259 update_file_notifications_on_threadpool(
248 pool, 260 pool,
249 state.snapshot(), 261 state.snapshot(),
250 supports_decorations, 262 options.publish_decorations,
251 task_sender.clone(), 263 task_sender.clone(),
252 subs.subscriptions(), 264 subs.subscriptions(),
253 ) 265 )
@@ -260,11 +272,11 @@ fn on_task(task: Task, msg_sender: &Sender<RawMessage>, pending_requests: &mut F
260 match task { 272 match task {
261 Task::Respond(response) => { 273 Task::Respond(response) => {
262 if pending_requests.remove(&response.id) { 274 if pending_requests.remove(&response.id) {
263 msg_sender.send(RawMessage::Response(response)).unwrap(); 275 msg_sender.send(response.into()).unwrap();
264 } 276 }
265 } 277 }
266 Task::Notify(n) => { 278 Task::Notify(n) => {
267 msg_sender.send(RawMessage::Notification(n)).unwrap(); 279 msg_sender.send(n.into()).unwrap();
268 } 280 }
269 } 281 }
270} 282}
@@ -336,7 +348,7 @@ fn on_notification(
336 ErrorCode::RequestCanceled as i32, 348 ErrorCode::RequestCanceled as i32,
337 "canceled by client".to_string(), 349 "canceled by client".to_string(),
338 ); 350 );
339 msg_sender.send(RawMessage::Response(response)).unwrap() 351 msg_sender.send(response.into()).unwrap()
340 } 352 }
341 return Ok(()); 353 return Ok(());
342 } 354 }
@@ -375,7 +387,7 @@ fn on_notification(
375 } 387 }
376 let params = req::PublishDiagnosticsParams { uri, diagnostics: Vec::new() }; 388 let params = req::PublishDiagnosticsParams { uri, diagnostics: Vec::new() };
377 let not = RawNotification::new::<req::PublishDiagnostics>(&params); 389 let not = RawNotification::new::<req::PublishDiagnostics>(&params);
378 msg_sender.send(RawMessage::Notification(not)).unwrap(); 390 msg_sender.send(not.into()).unwrap();
379 return Ok(()); 391 return Ok(());
380 } 392 }
381 Err(not) => not, 393 Err(not) => not,
@@ -496,12 +508,13 @@ fn update_file_notifications_on_threadpool(
496 }); 508 });
497} 509}
498 510
499fn feedback(intrnal_mode: bool, msg: &str, sender: &Sender<RawMessage>) { 511fn show_message<M: Into<String>>(typ: req::MessageType, msg: M, sender: &Sender<RawMessage>) {
500 if !intrnal_mode { 512 let not = RawNotification::new::<req::ShowMessage>(&req::ShowMessageParams {
501 return; 513 typ,
502 } 514 message: msg.into(),
503 let not = RawNotification::new::<req::InternalFeedback>(&msg.to_string()); 515 });
504 sender.send(RawMessage::Notification(not)).unwrap(); 516
517 sender.send(not.into()).unwrap();
505} 518}
506 519
507fn is_canceled(e: &failure::Error) -> bool { 520fn is_canceled(e: &failure::Error) -> bool {
diff --git a/crates/ra_lsp_server/src/req.rs b/crates/ra_lsp_server/src/req.rs
index 5c589f969..e0571fd78 100644
--- a/crates/ra_lsp_server/src/req.rs
+++ b/crates/ra_lsp_server/src/req.rs
@@ -8,7 +8,8 @@ pub use lsp_types::{
8 CompletionParams, CompletionResponse, DocumentOnTypeFormattingParams, DocumentSymbolParams, 8 CompletionParams, CompletionResponse, DocumentOnTypeFormattingParams, DocumentSymbolParams,
9 DocumentSymbolResponse, ExecuteCommandParams, Hover, InitializeResult, 9 DocumentSymbolResponse, ExecuteCommandParams, Hover, InitializeResult,
10 PublishDiagnosticsParams, ReferenceParams, SignatureHelp, TextDocumentEdit, 10 PublishDiagnosticsParams, ReferenceParams, SignatureHelp, TextDocumentEdit,
11 TextDocumentPositionParams, TextEdit, WorkspaceEdit, WorkspaceSymbolParams 11 TextDocumentPositionParams, TextEdit, WorkspaceEdit, WorkspaceSymbolParams,
12 MessageType, ShowMessageParams,
12}; 13};
13 14
14pub enum AnalyzerStatus {} 15pub enum AnalyzerStatus {}
@@ -171,10 +172,3 @@ pub struct SourceChange {
171 pub workspace_edit: WorkspaceEdit, 172 pub workspace_edit: WorkspaceEdit,
172 pub cursor_position: Option<TextDocumentPositionParams>, 173 pub cursor_position: Option<TextDocumentPositionParams>,
173} 174}
174
175pub enum InternalFeedback {}
176
177impl Notification for InternalFeedback {
178 const METHOD: &'static str = "internalFeedback";
179 type Params = String;
180}
diff --git a/crates/ra_lsp_server/tests/heavy_tests/main.rs b/crates/ra_lsp_server/tests/heavy_tests/main.rs
index 996bf8e01..1c099a78f 100644
--- a/crates/ra_lsp_server/tests/heavy_tests/main.rs
+++ b/crates/ra_lsp_server/tests/heavy_tests/main.rs
@@ -31,7 +31,7 @@ version = "0.0.0"
31use std::collections::Spam; 31use std::collections::Spam;
32"#, 32"#,
33 ); 33 );
34 server.wait_for_feedback("workspace loaded"); 34 server.wait_for_message("workspace loaded");
35 eprintln!("loading took {:?}", project_start.elapsed()); 35 eprintln!("loading took {:?}", project_start.elapsed());
36 let completion_start = Instant::now(); 36 let completion_start = Instant::now();
37 let res = server.send_request::<Completion>(CompletionParams { 37 let res = server.send_request::<Completion>(CompletionParams {
@@ -53,7 +53,7 @@ fn foo() {
53} 53}
54", 54",
55 ); 55 );
56 server.wait_for_feedback("workspace loaded"); 56 server.wait_for_message("workspace loaded");
57 server.request::<Runnables>( 57 server.request::<Runnables>(
58 RunnablesParams { text_document: server.doc_id("lib.rs"), position: None }, 58 RunnablesParams { text_document: server.doc_id("lib.rs"), position: None },
59 json!([ 59 json!([
@@ -107,7 +107,7 @@ pub fn foo() {}
107fn test_eggs() {} 107fn test_eggs() {}
108"#, 108"#,
109 ); 109 );
110 server.wait_for_feedback("workspace loaded"); 110 server.wait_for_message("workspace loaded");
111 server.request::<Runnables>( 111 server.request::<Runnables>(
112 RunnablesParams { 112 RunnablesParams {
113 text_document: server.doc_id("tests/spam.rs"), 113 text_document: server.doc_id("tests/spam.rs"),
@@ -167,7 +167,7 @@ fn main() {
167pub use std::collections::HashMap; 167pub use std::collections::HashMap;
168"#, 168"#,
169 ); 169 );
170 server.wait_for_feedback("workspace loaded"); 170 server.wait_for_message("workspace loaded");
171 171
172 server.request::<Formatting>( 172 server.request::<Formatting>(
173 DocumentFormattingParams { 173 DocumentFormattingParams {
@@ -216,7 +216,7 @@ mod bar;
216fn main() {} 216fn main() {}
217"#, 217"#,
218 ); 218 );
219 server.wait_for_feedback("workspace loaded"); 219 server.wait_for_message("workspace loaded");
220 let empty_context = || CodeActionContext { diagnostics: Vec::new(), only: None }; 220 let empty_context = || CodeActionContext { diagnostics: Vec::new(), only: None };
221 server.request::<CodeActionRequest>( 221 server.request::<CodeActionRequest>(
222 CodeActionParams { 222 CodeActionParams {
diff --git a/crates/ra_lsp_server/tests/heavy_tests/support.rs b/crates/ra_lsp_server/tests/heavy_tests/support.rs
index f4e7eaf75..8bfc8d622 100644
--- a/crates/ra_lsp_server/tests/heavy_tests/support.rs
+++ b/crates/ra_lsp_server/tests/heavy_tests/support.rs
@@ -13,6 +13,7 @@ use lsp_types::{
13 notification::DidOpenTextDocument, 13 notification::DidOpenTextDocument,
14 request::{Request, Shutdown}, 14 request::{Request, Shutdown},
15 DidOpenTextDocumentParams, TextDocumentIdentifier, TextDocumentItem, Url, 15 DidOpenTextDocumentParams, TextDocumentIdentifier, TextDocumentItem, Url,
16 notification::{Notification, ShowMessage},
16}; 17};
17use serde::Serialize; 18use serde::Serialize;
18use serde_json::{to_string_pretty, Value}; 19use serde_json::{to_string_pretty, Value};
@@ -22,6 +23,7 @@ use test_utils::{parse_fixture, find_mismatch};
22 23
23use ra_lsp_server::{ 24use ra_lsp_server::{
24 main_loop, req, 25 main_loop, req,
26 InitializationOptions,
25}; 27};
26 28
27pub fn project(fixture: &str) -> Server { 29pub fn project(fixture: &str) -> Server {
@@ -56,7 +58,13 @@ impl Server {
56 "test server", 58 "test server",
57 128, 59 128,
58 move |mut msg_receiver, mut msg_sender| { 60 move |mut msg_receiver, mut msg_sender| {
59 main_loop(true, path, true, &mut msg_receiver, &mut msg_sender).unwrap() 61 main_loop(
62 path,
63 InitializationOptions::default(),
64 &mut msg_receiver,
65 &mut msg_sender,
66 )
67 .unwrap()
60 }, 68 },
61 ); 69 );
62 let res = Server { 70 let res = Server {
@@ -133,13 +141,14 @@ impl Server {
133 } 141 }
134 panic!("no response"); 142 panic!("no response");
135 } 143 }
136 pub fn wait_for_feedback(&self, feedback: &str) { 144 pub fn wait_for_message(&self, message: &str) {
137 self.wait_for_feedback_n(feedback, 1) 145 self.wait_for_message_n(message, 1)
138 } 146 }
139 pub fn wait_for_feedback_n(&self, feedback: &str, n: usize) { 147 pub fn wait_for_message_n(&self, message: &str, n: usize) {
140 let f = |msg: &RawMessage| match msg { 148 let f = |msg: &RawMessage| match msg {
141 RawMessage::Notification(n) if n.method == "internalFeedback" => { 149 RawMessage::Notification(n) if n.method == ShowMessage::METHOD => {
142 return n.clone().cast::<req::InternalFeedback>().unwrap() == feedback; 150 let msg = n.clone().cast::<req::ShowMessage>().unwrap();
151 msg.message == message
143 } 152 }
144 _ => false, 153 _ => false,
145 }; 154 };
diff --git a/crates/ra_parser/src/grammar/expressions/atom.rs b/crates/ra_parser/src/grammar/expressions/atom.rs
index e74305b6a..9f282c74d 100644
--- a/crates/ra_parser/src/grammar/expressions/atom.rs
+++ b/crates/ra_parser/src/grammar/expressions/atom.rs
@@ -281,10 +281,16 @@ fn for_expr(p: &mut Parser, m: Option<Marker>) -> CompletedMarker {
281 281
282// test cond 282// test cond
283// fn foo() { if let Some(_) = None {} } 283// fn foo() { if let Some(_) = None {} }
284// fn bar() {
285// if let Some(_) | Some(_) = None {}
286// if let | Some(_) = None {}
287// while let Some(_) | Some(_) = None {}
288// while let | Some(_) = None {}
289// }
284fn cond(p: &mut Parser) { 290fn cond(p: &mut Parser) {
285 let m = p.start(); 291 let m = p.start();
286 if p.eat(LET_KW) { 292 if p.eat(LET_KW) {
287 patterns::pattern(p); 293 patterns::pattern_list(p);
288 p.expect(EQ); 294 p.expect(EQ);
289 } 295 }
290 expr_no_struct(p); 296 expr_no_struct(p);
@@ -376,11 +382,7 @@ pub(crate) fn match_arm_list(p: &mut Parser) {
376// } 382// }
377fn match_arm(p: &mut Parser) -> BlockLike { 383fn match_arm(p: &mut Parser) -> BlockLike {
378 let m = p.start(); 384 let m = p.start();
379 p.eat(PIPE); 385 patterns::pattern_list_r(p, TokenSet::empty());
380 patterns::pattern_r(p, TokenSet::empty());
381 while p.eat(PIPE) {
382 patterns::pattern(p);
383 }
384 if p.at(IF_KW) { 386 if p.at(IF_KW) {
385 match_guard(p); 387 match_guard(p);
386 } 388 }
diff --git a/crates/ra_parser/src/grammar/patterns.rs b/crates/ra_parser/src/grammar/patterns.rs
index 9d7da639d..befe6687d 100644
--- a/crates/ra_parser/src/grammar/patterns.rs
+++ b/crates/ra_parser/src/grammar/patterns.rs
@@ -8,6 +8,22 @@ pub(super) fn pattern(p: &mut Parser) {
8 pattern_r(p, PAT_RECOVERY_SET) 8 pattern_r(p, PAT_RECOVERY_SET)
9} 9}
10 10
11/// Parses a pattern list separated by pipes `|`
12pub(super) fn pattern_list(p: &mut Parser) {
13 pattern_list_r(p, PAT_RECOVERY_SET)
14}
15
16/// Parses a pattern list separated by pipes `|`
17/// using the given `recovery_set`
18pub(super) fn pattern_list_r(p: &mut Parser, recovery_set: TokenSet) {
19 p.eat(PIPE);
20 pattern_r(p, recovery_set);
21
22 while p.eat(PIPE) {
23 pattern_r(p, recovery_set);
24 }
25}
26
11pub(super) fn pattern_r(p: &mut Parser, recovery_set: TokenSet) { 27pub(super) fn pattern_r(p: &mut Parser, recovery_set: TokenSet) {
12 if let Some(lhs) = atom_pat(p, recovery_set) { 28 if let Some(lhs) = atom_pat(p, recovery_set) {
13 // test range_pat 29 // test range_pat
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0030_cond.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0030_cond.rs
index fdb37ee6f..2552a2621 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0030_cond.rs
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0030_cond.rs
@@ -1 +1,7 @@
1fn foo() { if let Some(_) = None {} } 1fn foo() { if let Some(_) = None {} }
2fn bar() {
3 if let Some(_) | Some(_) = None {}
4 if let | Some(_) = None {}
5 while let Some(_) | Some(_) = None {}
6 while let | Some(_) = None {}
7}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0030_cond.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0030_cond.txt
index 641a09fff..6dea1848b 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0030_cond.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0030_cond.txt
@@ -1,4 +1,4 @@
1SOURCE_FILE@[0; 38) 1SOURCE_FILE@[0; 197)
2 FN_DEF@[0; 37) 2 FN_DEF@[0; 37)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
@@ -41,3 +41,160 @@ SOURCE_FILE@[0; 38)
41 WHITESPACE@[35; 36) 41 WHITESPACE@[35; 36)
42 R_CURLY@[36; 37) 42 R_CURLY@[36; 37)
43 WHITESPACE@[37; 38) 43 WHITESPACE@[37; 38)
44 FN_DEF@[38; 196)
45 FN_KW@[38; 40)
46 WHITESPACE@[40; 41)
47 NAME@[41; 44)
48 IDENT@[41; 44) "bar"
49 PARAM_LIST@[44; 46)
50 L_PAREN@[44; 45)
51 R_PAREN@[45; 46)
52 WHITESPACE@[46; 47)
53 BLOCK@[47; 196)
54 L_CURLY@[47; 48)
55 WHITESPACE@[48; 53)
56 EXPR_STMT@[53; 87)
57 IF_EXPR@[53; 87)
58 IF_KW@[53; 55)
59 WHITESPACE@[55; 56)
60 CONDITION@[56; 84)
61 LET_KW@[56; 59)
62 WHITESPACE@[59; 60)
63 TUPLE_STRUCT_PAT@[60; 67)
64 PATH@[60; 64)
65 PATH_SEGMENT@[60; 64)
66 NAME_REF@[60; 64)
67 IDENT@[60; 64) "Some"
68 L_PAREN@[64; 65)
69 PLACEHOLDER_PAT@[65; 66)
70 UNDERSCORE@[65; 66)
71 R_PAREN@[66; 67)
72 WHITESPACE@[67; 68)
73 PIPE@[68; 69)
74 WHITESPACE@[69; 70)
75 TUPLE_STRUCT_PAT@[70; 77)
76 PATH@[70; 74)
77 PATH_SEGMENT@[70; 74)
78 NAME_REF@[70; 74)
79 IDENT@[70; 74) "Some"
80 L_PAREN@[74; 75)
81 PLACEHOLDER_PAT@[75; 76)
82 UNDERSCORE@[75; 76)
83 R_PAREN@[76; 77)
84 WHITESPACE@[77; 78)
85 EQ@[78; 79)
86 WHITESPACE@[79; 80)
87 PATH_EXPR@[80; 84)
88 PATH@[80; 84)
89 PATH_SEGMENT@[80; 84)
90 NAME_REF@[80; 84)
91 IDENT@[80; 84) "None"
92 WHITESPACE@[84; 85)
93 BLOCK@[85; 87)
94 L_CURLY@[85; 86)
95 R_CURLY@[86; 87)
96 WHITESPACE@[87; 92)
97 EXPR_STMT@[92; 118)
98 IF_EXPR@[92; 118)
99 IF_KW@[92; 94)
100 WHITESPACE@[94; 95)
101 CONDITION@[95; 115)
102 LET_KW@[95; 98)
103 WHITESPACE@[98; 99)
104 PIPE@[99; 100)
105 WHITESPACE@[100; 101)
106 TUPLE_STRUCT_PAT@[101; 108)
107 PATH@[101; 105)
108 PATH_SEGMENT@[101; 105)
109 NAME_REF@[101; 105)
110 IDENT@[101; 105) "Some"
111 L_PAREN@[105; 106)
112 PLACEHOLDER_PAT@[106; 107)
113 UNDERSCORE@[106; 107)
114 R_PAREN@[107; 108)
115 WHITESPACE@[108; 109)
116 EQ@[109; 110)
117 WHITESPACE@[110; 111)
118 PATH_EXPR@[111; 115)
119 PATH@[111; 115)
120 PATH_SEGMENT@[111; 115)
121 NAME_REF@[111; 115)
122 IDENT@[111; 115) "None"
123 WHITESPACE@[115; 116)
124 BLOCK@[116; 118)
125 L_CURLY@[116; 117)
126 R_CURLY@[117; 118)
127 WHITESPACE@[118; 123)
128 EXPR_STMT@[123; 160)
129 WHILE_EXPR@[123; 160)
130 WHILE_KW@[123; 128)
131 WHITESPACE@[128; 129)
132 CONDITION@[129; 157)
133 LET_KW@[129; 132)
134 WHITESPACE@[132; 133)
135 TUPLE_STRUCT_PAT@[133; 140)
136 PATH@[133; 137)
137 PATH_SEGMENT@[133; 137)
138 NAME_REF@[133; 137)
139 IDENT@[133; 137) "Some"
140 L_PAREN@[137; 138)
141 PLACEHOLDER_PAT@[138; 139)
142 UNDERSCORE@[138; 139)
143 R_PAREN@[139; 140)
144 WHITESPACE@[140; 141)
145 PIPE@[141; 142)
146 WHITESPACE@[142; 143)
147 TUPLE_STRUCT_PAT@[143; 150)
148 PATH@[143; 147)
149 PATH_SEGMENT@[143; 147)
150 NAME_REF@[143; 147)
151 IDENT@[143; 147) "Some"
152 L_PAREN@[147; 148)
153 PLACEHOLDER_PAT@[148; 149)
154 UNDERSCORE@[148; 149)
155 R_PAREN@[149; 150)
156 WHITESPACE@[150; 151)
157 EQ@[151; 152)
158 WHITESPACE@[152; 153)
159 PATH_EXPR@[153; 157)
160 PATH@[153; 157)
161 PATH_SEGMENT@[153; 157)
162 NAME_REF@[153; 157)
163 IDENT@[153; 157) "None"
164 WHITESPACE@[157; 158)
165 BLOCK@[158; 160)
166 L_CURLY@[158; 159)
167 R_CURLY@[159; 160)
168 WHITESPACE@[160; 165)
169 WHILE_EXPR@[165; 194)
170 WHILE_KW@[165; 170)
171 WHITESPACE@[170; 171)
172 CONDITION@[171; 191)
173 LET_KW@[171; 174)
174 WHITESPACE@[174; 175)
175 PIPE@[175; 176)
176 WHITESPACE@[176; 177)
177 TUPLE_STRUCT_PAT@[177; 184)
178 PATH@[177; 181)
179 PATH_SEGMENT@[177; 181)
180 NAME_REF@[177; 181)
181 IDENT@[177; 181) "Some"
182 L_PAREN@[181; 182)
183 PLACEHOLDER_PAT@[182; 183)
184 UNDERSCORE@[182; 183)
185 R_PAREN@[183; 184)
186 WHITESPACE@[184; 185)
187 EQ@[185; 186)
188 WHITESPACE@[186; 187)
189 PATH_EXPR@[187; 191)
190 PATH@[187; 191)
191 PATH_SEGMENT@[187; 191)
192 NAME_REF@[187; 191)
193 IDENT@[187; 191) "None"
194 WHITESPACE@[191; 192)
195 BLOCK@[192; 194)
196 L_CURLY@[192; 193)
197 R_CURLY@[193; 194)
198 WHITESPACE@[194; 195)
199 R_CURLY@[195; 196)
200 WHITESPACE@[196; 197)
diff --git a/editors/code/package.json b/editors/code/package.json
index fda411810..47eaac878 100644
--- a/editors/code/package.json
+++ b/editors/code/package.json
@@ -150,6 +150,11 @@
150 "default": false, 150 "default": false,
151 "description": "Highlight Rust code (overrides built-in syntax highlighting)" 151 "description": "Highlight Rust code (overrides built-in syntax highlighting)"
152 }, 152 },
153 "rust-analyzer.showWorkspaceLoadedNotification": {
154 "type": "boolean",
155 "default": true,
156 "description": "Show notification when workspace was loaded"
157 },
153 "rust-analyzer.enableEnhancedTyping": { 158 "rust-analyzer.enableEnhancedTyping": {
154 "type": "boolean", 159 "type": "boolean",
155 "default": true, 160 "default": true,
diff --git a/editors/code/src/config.ts b/editors/code/src/config.ts
index 4e353798c..afc5cc6af 100644
--- a/editors/code/src/config.ts
+++ b/editors/code/src/config.ts
@@ -8,6 +8,7 @@ export class Config {
8 public highlightingOn = true; 8 public highlightingOn = true;
9 public enableEnhancedTyping = true; 9 public enableEnhancedTyping = true;
10 public raLspServerPath = RA_LSP_DEBUG || 'ra_lsp_server'; 10 public raLspServerPath = RA_LSP_DEBUG || 'ra_lsp_server';
11 public showWorkspaceLoadedNotification = true;
11 12
12 private prevEnhancedTyping: null | boolean = null; 13 private prevEnhancedTyping: null | boolean = null;
13 14
@@ -24,6 +25,12 @@ export class Config {
24 this.highlightingOn = config.get('highlightingOn') as boolean; 25 this.highlightingOn = config.get('highlightingOn') as boolean;
25 } 26 }
26 27
28 if (config.has('showWorkspaceLoadedNotification')) {
29 this.showWorkspaceLoadedNotification = config.get(
30 'showWorkspaceLoadedNotification'
31 ) as boolean;
32 }
33
27 if (!this.highlightingOn && Server) { 34 if (!this.highlightingOn && Server) {
28 Server.highlighter.removeHighlights(); 35 Server.highlighter.removeHighlights();
29 } 36 }
diff --git a/editors/code/src/server.ts b/editors/code/src/server.ts
index 9ead87fae..50461b0c6 100644
--- a/editors/code/src/server.ts
+++ b/editors/code/src/server.ts
@@ -26,7 +26,9 @@ export class Server {
26 const clientOptions: lc.LanguageClientOptions = { 26 const clientOptions: lc.LanguageClientOptions = {
27 documentSelector: [{ scheme: 'file', language: 'rust' }], 27 documentSelector: [{ scheme: 'file', language: 'rust' }],
28 initializationOptions: { 28 initializationOptions: {
29 publishDecorations: true 29 publishDecorations: true,
30 showWorkspaceLoaded:
31 Server.config.showWorkspaceLoadedNotification
30 }, 32 },
31 traceOutputChannel 33 traceOutputChannel
32 }; 34 };