aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Cargo.lock115
-rw-r--r--crates/gen_lsp_server/src/stdio.rs10
-rw-r--r--crates/ra_lsp_server/tests/heavy_tests/support.rs15
-rw-r--r--crates/ra_mbe/src/lib.rs15
-rw-r--r--crates/ra_mbe/src/mbe_expander.rs4
-rw-r--r--crates/ra_mbe/src/subtree_parser.rs4
-rw-r--r--crates/ra_mbe/src/tt_cursor.rs5
-rw-r--r--crates/ra_parser/src/grammar.rs4
-rw-r--r--crates/ra_parser/src/grammar/expressions.rs154
-rw-r--r--crates/ra_parser/src/lib.rs5
-rw-r--r--editors/code/package.json5
-rw-r--r--editors/code/src/extension.ts15
-rwxr-xr-x[-rw-r--r--]editors/code/src/utils/terminateProcess.sh0
13 files changed, 215 insertions, 136 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 779580762..81dd812f4 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -17,11 +17,6 @@ dependencies = [
17] 17]
18 18
19[[package]] 19[[package]]
20name = "arrayref"
21version = "0.3.5"
22source = "registry+https://github.com/rust-lang/crates.io-index"
23
24[[package]]
25name = "arrayvec" 20name = "arrayvec"
26version = "0.4.10" 21version = "0.4.10"
27source = "registry+https://github.com/rust-lang/crates.io-index" 22source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -99,16 +94,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
99 94
100[[package]] 95[[package]]
101name = "block-buffer" 96name = "block-buffer"
102version = "0.3.3" 97version = "0.7.3"
98source = "registry+https://github.com/rust-lang/crates.io-index"
99dependencies = [
100 "block-padding 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
101 "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
102 "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
103 "generic-array 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
104]
105
106[[package]]
107name = "block-padding"
108version = "0.1.3"
103source = "registry+https://github.com/rust-lang/crates.io-index" 109source = "registry+https://github.com/rust-lang/crates.io-index"
104dependencies = [ 110dependencies = [
105 "arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", 111 "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
106 "byte-tools 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
107] 112]
108 113
109[[package]] 114[[package]]
110name = "byte-tools" 115name = "byte-tools"
111version = "0.2.0" 116version = "0.3.1"
112source = "registry+https://github.com/rust-lang/crates.io-index" 117source = "registry+https://github.com/rust-lang/crates.io-index"
113 118
114[[package]] 119[[package]]
@@ -203,7 +208,7 @@ dependencies = [
203 "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 208 "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
204 "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", 209 "libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)",
205 "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", 210 "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
206 "regex 1.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 211 "regex 1.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
207 "termios 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 212 "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)", 213 "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
209 "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 214 "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -265,7 +270,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
265dependencies = [ 270dependencies = [
266 "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", 271 "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)",
267 "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", 272 "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)",
268 "syn 0.15.30 (registry+https://github.com/rust-lang/crates.io-index)", 273 "syn 0.15.31 (registry+https://github.com/rust-lang/crates.io-index)",
269] 274]
270 275
271[[package]] 276[[package]]
@@ -280,10 +285,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
280 285
281[[package]] 286[[package]]
282name = "digest" 287name = "digest"
283version = "0.7.6" 288version = "0.8.0"
284source = "registry+https://github.com/rust-lang/crates.io-index" 289source = "registry+https://github.com/rust-lang/crates.io-index"
285dependencies = [ 290dependencies = [
286 "generic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", 291 "generic-array 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
287] 292]
288 293
289[[package]] 294[[package]]
@@ -338,7 +343,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
338dependencies = [ 343dependencies = [
339 "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", 344 "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)",
340 "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", 345 "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)",
341 "syn 0.15.30 (registry+https://github.com/rust-lang/crates.io-index)", 346 "syn 0.15.31 (registry+https://github.com/rust-lang/crates.io-index)",
342 "synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 347 "synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
343] 348]
344 349
@@ -365,7 +370,7 @@ dependencies = [
365 "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 370 "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
366 "glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 371 "glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
367 "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 372 "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
368 "regex 1.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 373 "regex 1.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
369] 374]
370 375
371[[package]] 376[[package]]
@@ -432,7 +437,7 @@ dependencies = [
432 437
433[[package]] 438[[package]]
434name = "generic-array" 439name = "generic-array"
435version = "0.9.0" 440version = "0.12.0"
436source = "registry+https://github.com/rust-lang/crates.io-index" 441source = "registry+https://github.com/rust-lang/crates.io-index"
437dependencies = [ 442dependencies = [
438 "typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", 443 "typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -485,7 +490,7 @@ dependencies = [
485 "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 490 "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
486 "number_prefix 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 491 "number_prefix 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
487 "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", 492 "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
488 "regex 1.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 493 "regex 1.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
489] 494]
490 495
491[[package]] 496[[package]]
@@ -517,7 +522,7 @@ dependencies = [
517 "difference 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 522 "difference 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
518 "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 523 "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
519 "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 524 "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
520 "pest 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 525 "pest 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
521 "pest_derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 526 "pest_derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
522 "ron 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 527 "ron 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
523 "serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", 528 "serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -742,7 +747,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
742dependencies = [ 747dependencies = [
743 "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", 748 "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)",
744 "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", 749 "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)",
745 "syn 0.15.30 (registry+https://github.com/rust-lang/crates.io-index)", 750 "syn 0.15.31 (registry+https://github.com/rust-lang/crates.io-index)",
746] 751]
747 752
748[[package]] 753[[package]]
@@ -775,6 +780,11 @@ dependencies = [
775] 780]
776 781
777[[package]] 782[[package]]
783name = "opaque-debug"
784version = "0.2.2"
785source = "registry+https://github.com/rust-lang/crates.io-index"
786
787[[package]]
778name = "owning_ref" 788name = "owning_ref"
779version = "0.4.0" 789version = "0.4.0"
780source = "registry+https://github.com/rust-lang/crates.io-index" 790source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -810,7 +820,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
810 820
811[[package]] 821[[package]]
812name = "pest" 822name = "pest"
813version = "2.1.0" 823version = "2.1.1"
814source = "registry+https://github.com/rust-lang/crates.io-index" 824source = "registry+https://github.com/rust-lang/crates.io-index"
815dependencies = [ 825dependencies = [
816 "ucd-trie 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 826 "ucd-trie 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -821,7 +831,7 @@ name = "pest_derive"
821version = "2.1.0" 831version = "2.1.0"
822source = "registry+https://github.com/rust-lang/crates.io-index" 832source = "registry+https://github.com/rust-lang/crates.io-index"
823dependencies = [ 833dependencies = [
824 "pest 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 834 "pest 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
825 "pest_generator 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 835 "pest_generator 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
826] 836]
827 837
@@ -830,21 +840,21 @@ name = "pest_generator"
830version = "2.1.0" 840version = "2.1.0"
831source = "registry+https://github.com/rust-lang/crates.io-index" 841source = "registry+https://github.com/rust-lang/crates.io-index"
832dependencies = [ 842dependencies = [
833 "pest 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 843 "pest 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
834 "pest_meta 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 844 "pest_meta 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
835 "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", 845 "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)",
836 "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", 846 "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)",
837 "syn 0.15.30 (registry+https://github.com/rust-lang/crates.io-index)", 847 "syn 0.15.31 (registry+https://github.com/rust-lang/crates.io-index)",
838] 848]
839 849
840[[package]] 850[[package]]
841name = "pest_meta" 851name = "pest_meta"
842version = "2.1.0" 852version = "2.1.1"
843source = "registry+https://github.com/rust-lang/crates.io-index" 853source = "registry+https://github.com/rust-lang/crates.io-index"
844dependencies = [ 854dependencies = [
845 "maplit 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 855 "maplit 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
846 "pest 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 856 "pest 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
847 "sha-1 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 857 "sha-1 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
848] 858]
849 859
850[[package]] 860[[package]]
@@ -913,7 +923,7 @@ dependencies = [
913 "ra_hir 0.1.0", 923 "ra_hir 0.1.0",
914 "ra_project_model 0.1.0", 924 "ra_project_model 0.1.0",
915 "ra_syntax 0.1.0", 925 "ra_syntax 0.1.0",
916 "ra_vfs 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 926 "ra_vfs 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
917 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 927 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
918 "test_utils 0.1.0", 928 "test_utils 0.1.0",
919] 929]
@@ -1025,7 +1035,7 @@ dependencies = [
1025 "ra_project_model 0.1.0", 1035 "ra_project_model 0.1.0",
1026 "ra_syntax 0.1.0", 1036 "ra_syntax 0.1.0",
1027 "ra_text_edit 0.1.0", 1037 "ra_text_edit 0.1.0",
1028 "ra_vfs 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 1038 "ra_vfs 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
1029 "relative-path 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1039 "relative-path 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
1030 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 1040 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
1031 "serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", 1041 "serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1115,7 +1125,7 @@ dependencies = [
1115 1125
1116[[package]] 1126[[package]]
1117name = "ra_vfs" 1127name = "ra_vfs"
1118version = "0.2.2" 1128version = "0.2.3"
1119source = "registry+https://github.com/rust-lang/crates.io-index" 1129source = "registry+https://github.com/rust-lang/crates.io-index"
1120dependencies = [ 1130dependencies = [
1121 "crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 1131 "crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1267,7 +1277,7 @@ dependencies = [
1267 1277
1268[[package]] 1278[[package]]
1269name = "regex" 1279name = "regex"
1270version = "1.1.5" 1280version = "1.1.6"
1271source = "registry+https://github.com/rust-lang/crates.io-index" 1281source = "registry+https://github.com/rust-lang/crates.io-index"
1272dependencies = [ 1282dependencies = [
1273 "aho-corasick 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", 1283 "aho-corasick 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1368,7 +1378,7 @@ dependencies = [
1368 "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 1378 "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
1369 "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", 1379 "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)",
1370 "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", 1380 "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)",
1371 "syn 0.15.30 (registry+https://github.com/rust-lang/crates.io-index)", 1381 "syn 0.15.31 (registry+https://github.com/rust-lang/crates.io-index)",
1372] 1382]
1373 1383
1374[[package]] 1384[[package]]
@@ -1413,7 +1423,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1413dependencies = [ 1423dependencies = [
1414 "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", 1424 "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)",
1415 "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", 1425 "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)",
1416 "syn 0.15.30 (registry+https://github.com/rust-lang/crates.io-index)", 1426 "syn 0.15.31 (registry+https://github.com/rust-lang/crates.io-index)",
1417] 1427]
1418 1428
1419[[package]] 1429[[package]]
@@ -1439,13 +1449,13 @@ dependencies = [
1439 1449
1440[[package]] 1450[[package]]
1441name = "sha-1" 1451name = "sha-1"
1442version = "0.7.0" 1452version = "0.8.1"
1443source = "registry+https://github.com/rust-lang/crates.io-index" 1453source = "registry+https://github.com/rust-lang/crates.io-index"
1444dependencies = [ 1454dependencies = [
1445 "block-buffer 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 1455 "block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
1446 "byte-tools 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 1456 "digest 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
1447 "digest 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)",
1448 "fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 1457 "fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
1458 "opaque-debug 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
1449] 1459]
1450 1460
1451[[package]] 1461[[package]]
@@ -1491,7 +1501,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1491 1501
1492[[package]] 1502[[package]]
1493name = "syn" 1503name = "syn"
1494version = "0.15.30" 1504version = "0.15.31"
1495source = "registry+https://github.com/rust-lang/crates.io-index" 1505source = "registry+https://github.com/rust-lang/crates.io-index"
1496dependencies = [ 1506dependencies = [
1497 "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", 1507 "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1506,7 +1516,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1506dependencies = [ 1516dependencies = [
1507 "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", 1517 "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)",
1508 "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", 1518 "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)",
1509 "syn 0.15.30 (registry+https://github.com/rust-lang/crates.io-index)", 1519 "syn 0.15.31 (registry+https://github.com/rust-lang/crates.io-index)",
1510 "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1520 "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
1511] 1521]
1512 1522
@@ -1533,9 +1543,9 @@ dependencies = [
1533 "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", 1543 "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
1534 "humansize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1544 "humansize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
1535 "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 1545 "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
1536 "pest 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1546 "pest 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
1537 "pest_derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1547 "pest_derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
1538 "regex 1.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 1548 "regex 1.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
1539 "serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", 1549 "serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)",
1540 "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", 1550 "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
1541 "slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 1551 "slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1851,7 +1861,6 @@ dependencies = [
1851[metadata] 1861[metadata]
1852"checksum aho-corasick 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e6f484ae0c99fec2e858eb6134949117399f222608d84cadb3f58c1f97c2364c" 1862"checksum aho-corasick 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e6f484ae0c99fec2e858eb6134949117399f222608d84cadb3f58c1f97c2364c"
1853"checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" 1863"checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b"
1854"checksum arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0d382e583f07208808f6b1249e60848879ba3543f57c32277bf52d69c2f0f0ee"
1855"checksum arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "92c7fb76bc8826a8b33b4ee5bb07a247a81e76764ab4d55e8f73e3a4d8808c71" 1864"checksum arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "92c7fb76bc8826a8b33b4ee5bb07a247a81e76764ab4d55e8f73e3a4d8808c71"
1856"checksum atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9a7d5b8723950951411ee34d271d99dddcc2035a16ab25310ea2c8cfd4369652" 1865"checksum atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9a7d5b8723950951411ee34d271d99dddcc2035a16ab25310ea2c8cfd4369652"
1857"checksum autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a6d640bee2da49f60a4068a7fae53acde8982514ab7bae8b8cea9e88cbcfd799" 1866"checksum autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a6d640bee2da49f60a4068a7fae53acde8982514ab7bae8b8cea9e88cbcfd799"
@@ -1862,8 +1871,9 @@ dependencies = [
1862"checksum bit-vec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f59bbe95d4e52a6398ec21238d31577f2b28a9d86807f06ca59d191d8440d0bb" 1871"checksum bit-vec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f59bbe95d4e52a6398ec21238d31577f2b28a9d86807f06ca59d191d8440d0bb"
1863"checksum bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "aad18937a628ec6abcd26d1489012cc0e18c21798210f491af69ded9b881106d" 1872"checksum bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "aad18937a628ec6abcd26d1489012cc0e18c21798210f491af69ded9b881106d"
1864"checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12" 1873"checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12"
1865"checksum block-buffer 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a076c298b9ecdb530ed9d967e74a6027d6a7478924520acddcddc24c1c8ab3ab" 1874"checksum block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b"
1866"checksum byte-tools 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "560c32574a12a89ecd91f5e742165893f86e3ab98d21f8ea548658eb9eef5f40" 1875"checksum block-padding 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d75255892aeb580d3c566f213a2b6fdc1c66667839f45719ee1d30ebf2aea591"
1876"checksum byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7"
1867"checksum byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a019b10a2a7cdeb292db131fc8113e57ea2a908f6e7894b0c3c671893b65dbeb" 1877"checksum byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a019b10a2a7cdeb292db131fc8113e57ea2a908f6e7894b0c3c671893b65dbeb"
1868"checksum cargo_metadata 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "178d62b240c34223f265a4c1e275e37d62da163d421fc8d7f7e3ee340f803c57" 1878"checksum cargo_metadata 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "178d62b240c34223f265a4c1e275e37d62da163d421fc8d7f7e3ee340f803c57"
1869"checksum cc 1.0.35 (registry+https://github.com/rust-lang/crates.io-index)" = "5e5f3fee5eeb60324c2781f1e41286bdee933850fff9b3c672587fed5ec58c83" 1879"checksum cc 1.0.35 (registry+https://github.com/rust-lang/crates.io-index)" = "5e5f3fee5eeb60324c2781f1e41286bdee933850fff9b3c672587fed5ec58c83"
@@ -1883,7 +1893,7 @@ dependencies = [
1883"checksum derive-new 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "6ca414e896ae072546f4d789f452daaecf60ddee4c9df5dc6d5936d769e3d87c" 1893"checksum derive-new 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "6ca414e896ae072546f4d789f452daaecf60ddee4c9df5dc6d5936d769e3d87c"
1884"checksum deunicode 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "850878694b7933ca4c9569d30a34b55031b9b139ee1fc7b94a527c4ef960d690" 1894"checksum deunicode 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "850878694b7933ca4c9569d30a34b55031b9b139ee1fc7b94a527c4ef960d690"
1885"checksum difference 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198" 1895"checksum difference 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198"
1886"checksum digest 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "03b072242a8cbaf9c145665af9d250c59af3b958f83ed6824e13533cf76d5b90" 1896"checksum digest 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "05f47366984d3ad862010e22c7ce81a7dbcaebbdfb37241a620f8b6596ee135c"
1887"checksum drop_bomb 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "69b26e475fd29098530e709294e94e661974c851aed42512793f120fed4e199f" 1897"checksum drop_bomb 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "69b26e475fd29098530e709294e94e661974c851aed42512793f120fed4e199f"
1888"checksum dtoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6d301140eb411af13d3115f9a562c85cc6b541ade9dfa314132244aaee7489dd" 1898"checksum dtoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6d301140eb411af13d3115f9a562c85cc6b541ade9dfa314132244aaee7489dd"
1889"checksum either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5527cfe0d098f36e3f8839852688e63c8fff1c90b2b405aef730615f9a7bcf7b" 1899"checksum either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5527cfe0d098f36e3f8839852688e63c8fff1c90b2b405aef730615f9a7bcf7b"
@@ -1902,7 +1912,7 @@ dependencies = [
1902"checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" 1912"checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba"
1903"checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" 1913"checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82"
1904"checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" 1914"checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7"
1905"checksum generic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ef25c5683767570c2bbd7deba372926a55eaae9982d7726ee2a1050239d45b9d" 1915"checksum generic-array 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3c0f28c2f5bfb5960175af447a2da7c18900693738343dc896ffbcabd9839592"
1906"checksum glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb" 1916"checksum glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb"
1907"checksum glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" 1917"checksum glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574"
1908"checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" 1918"checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205"
@@ -1943,19 +1953,20 @@ dependencies = [
1943"checksum num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0b3a5d7cc97d6d30d8b9bc8fa19bf45349ffe46241e8816f50f62f6d6aaabee1" 1953"checksum num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0b3a5d7cc97d6d30d8b9bc8fa19bf45349ffe46241e8816f50f62f6d6aaabee1"
1944"checksum num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1a23f0ed30a54abaa0c7e83b1d2d87ada7c3c23078d1d87815af3e3b6385fbba" 1954"checksum num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1a23f0ed30a54abaa0c7e83b1d2d87ada7c3c23078d1d87815af3e3b6385fbba"
1945"checksum number_prefix 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "dbf9993e59c894e3c08aa1c2712914e9e6bf1fcbfc6bef283e2183df345a4fee" 1955"checksum number_prefix 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "dbf9993e59c894e3c08aa1c2712914e9e6bf1fcbfc6bef283e2183df345a4fee"
1956"checksum opaque-debug 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "93f5bb2e8e8dec81642920ccff6b61f1eb94fa3020c5a325c9851ff604152409"
1946"checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13" 1957"checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13"
1947"checksum parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337" 1958"checksum parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337"
1948"checksum parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9" 1959"checksum parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9"
1949"checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" 1960"checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831"
1950"checksum pest 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "54f0c72a98d8ab3c99560bfd16df8059cc10e1f9a8e83e6e3b97718dd766e9c3" 1961"checksum pest 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "933085deae3f32071f135d799d75667b63c8dc1f4537159756e3d4ceab41868c"
1951"checksum pest_derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "833d1ae558dc601e9a60366421196a8d94bc0ac980476d0b67e1d0988d72b2d0" 1962"checksum pest_derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "833d1ae558dc601e9a60366421196a8d94bc0ac980476d0b67e1d0988d72b2d0"
1952"checksum pest_generator 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "63120576c4efd69615b5537d3d052257328a4ca82876771d6944424ccfd9f646" 1963"checksum pest_generator 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "63120576c4efd69615b5537d3d052257328a4ca82876771d6944424ccfd9f646"
1953"checksum pest_meta 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f5a3492a4ed208ffc247adcdcc7ba2a95be3104f58877d0d02f0df39bf3efb5e" 1964"checksum pest_meta 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f249ea6de7c7b7aba92b4ff4376a994c6dbd98fd2166c89d5c4947397ecb574d"
1954"checksum proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)" = "4d317f9caece796be1980837fd5cb3dfec5613ebdb04ad0956deea83ce168915" 1965"checksum proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)" = "4d317f9caece796be1980837fd5cb3dfec5613ebdb04ad0956deea83ce168915"
1955"checksum proptest 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "24f5844db2f839e97e3021980975f6ebf8691d9b9b2ca67ed3feb38dc3edb52c" 1966"checksum proptest 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "24f5844db2f839e97e3021980975f6ebf8691d9b9b2ca67ed3feb38dc3edb52c"
1956"checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" 1967"checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0"
1957"checksum quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)" = "faf4799c5d274f3868a4aae320a0a182cbd2baee377b378f080e16a23e9d80db" 1968"checksum quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)" = "faf4799c5d274f3868a4aae320a0a182cbd2baee377b378f080e16a23e9d80db"
1958"checksum ra_vfs 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "411d8ce8abf262b08421e6446c4fd5b420206cf221cd21fcfc793445fb3825b2" 1969"checksum ra_vfs 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a36512521aefbd2c76314c97b19b1f8377bd7ea770e3d6910c3fb68fe615f806"
1959"checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" 1970"checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca"
1960"checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" 1971"checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef"
1961"checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" 1972"checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b"
@@ -1971,7 +1982,7 @@ dependencies = [
1971"checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" 1982"checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2"
1972"checksum redox_syscall 0.1.54 (registry+https://github.com/rust-lang/crates.io-index)" = "12229c14a0f65c4f1cb046a3b52047cdd9da1f4b30f8a39c5063c8bae515e252" 1983"checksum redox_syscall 0.1.54 (registry+https://github.com/rust-lang/crates.io-index)" = "12229c14a0f65c4f1cb046a3b52047cdd9da1f4b30f8a39c5063c8bae515e252"
1973"checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" 1984"checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76"
1974"checksum regex 1.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "559008764a17de49a3146b234641644ed37d118d1ef641a0bb573d146edc6ce0" 1985"checksum regex 1.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "8f0a0bcab2fd7d1d7c54fa9eae6f43eddeb9ce2e7352f8518a814a4f65d60c58"
1975"checksum regex-syntax 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "dcfd8681eebe297b81d98498869d4aae052137651ad7b96822f09ceb690d0a96" 1986"checksum regex-syntax 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "dcfd8681eebe297b81d98498869d4aae052137651ad7b96822f09ceb690d0a96"
1976"checksum relative-path 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0e7790c7f1cc73d831d28dc5a7deb316a006e7848e6a7f467cdb10a0a9e0fb1c" 1987"checksum relative-path 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0e7790c7f1cc73d831d28dc5a7deb316a006e7848e6a7f467cdb10a0a9e0fb1c"
1977"checksum remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3488ba1b9a2084d38645c4c08276a1752dcbf2c7130d74f1569681ad5d2799c5" 1988"checksum remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3488ba1b9a2084d38645c4c08276a1752dcbf2c7130d74f1569681ad5d2799c5"
@@ -1991,7 +2002,7 @@ dependencies = [
1991"checksum serde_derive 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)" = "58fc82bec244f168b23d1963b45c8bf5726e9a15a9d146a067f9081aeed2de79" 2002"checksum serde_derive 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)" = "58fc82bec244f168b23d1963b45c8bf5726e9a15a9d146a067f9081aeed2de79"
1992"checksum serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)" = "5a23aa71d4a4d43fdbfaac00eff68ba8a06a51759a89ac3304323e800c4dd40d" 2003"checksum serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)" = "5a23aa71d4a4d43fdbfaac00eff68ba8a06a51759a89ac3304323e800c4dd40d"
1993"checksum serde_yaml 0.8.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0887a8e097a69559b56aa2526bf7aff7c3048cf627dff781f0b56a6001534593" 2004"checksum serde_yaml 0.8.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0887a8e097a69559b56aa2526bf7aff7c3048cf627dff781f0b56a6001534593"
1994"checksum sha-1 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "51b9d1f3b5de8a167ab06834a7c883bd197f2191e1dda1a22d9ccfeedbf9aded" 2005"checksum sha-1 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "23962131a91661d643c98940b20fcaffe62d776a823247be80a48fcb8b6fce68"
1995"checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" 2006"checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8"
1996"checksum slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b3bc762e6a4b6c6fcaade73e77f9ebc6991b676f88bb2358bddb56560f073373" 2007"checksum slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b3bc762e6a4b6c6fcaade73e77f9ebc6991b676f88bb2358bddb56560f073373"
1997"checksum smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = "c4488ae950c49d403731982257768f48fada354a5203fe81f9bb6f43ca9002be" 2008"checksum smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = "c4488ae950c49d403731982257768f48fada354a5203fe81f9bb6f43ca9002be"
@@ -1999,7 +2010,7 @@ dependencies = [
1999"checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" 2010"checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8"
2000"checksum strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" 2011"checksum strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
2001"checksum superslice 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ab16ced94dbd8a46c82fd81e3ed9a8727dac2977ea869d217bcc4ea1f122e81f" 2012"checksum superslice 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ab16ced94dbd8a46c82fd81e3ed9a8727dac2977ea869d217bcc4ea1f122e81f"
2002"checksum syn 0.15.30 (registry+https://github.com/rust-lang/crates.io-index)" = "66c8865bf5a7cbb662d8b011950060b3c8743dca141b054bf7195b20d314d8e2" 2013"checksum syn 0.15.31 (registry+https://github.com/rust-lang/crates.io-index)" = "d2b4cfac95805274c6afdb12d8f770fa2d27c045953e7b630a81801953699a9a"
2003"checksum synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "73687139bf99285483c96ac0add482c3776528beac1d97d444f6e91f203a2015" 2014"checksum synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "73687139bf99285483c96ac0add482c3776528beac1d97d444f6e91f203a2015"
2004"checksum tempfile 3.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "b86c784c88d98c801132806dadd3819ed29d8600836c4088e855cdf3e178ed8a" 2015"checksum tempfile 3.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "b86c784c88d98c801132806dadd3819ed29d8600836c4088e855cdf3e178ed8a"
2005"checksum tera 0.11.20 (registry+https://github.com/rust-lang/crates.io-index)" = "4b505279e19d8f7d24b1a9dc58327c9c36174b1a2c7ebdeac70792d017cb64f3" 2016"checksum tera 0.11.20 (registry+https://github.com/rust-lang/crates.io-index)" = "4b505279e19d8f7d24b1a9dc58327c9c36174b1a2c7ebdeac70792d017cb64f3"
diff --git a/crates/gen_lsp_server/src/stdio.rs b/crates/gen_lsp_server/src/stdio.rs
index dab2d8da8..2d6418400 100644
--- a/crates/gen_lsp_server/src/stdio.rs
+++ b/crates/gen_lsp_server/src/stdio.rs
@@ -5,6 +5,7 @@ use std::{
5 5
6use crossbeam_channel::{bounded, Receiver, Sender}; 6use crossbeam_channel::{bounded, Receiver, Sender};
7use failure::bail; 7use failure::bail;
8use lsp_types::notification::Exit;
8 9
9use crate::{RawMessage, Result}; 10use crate::{RawMessage, Result};
10 11
@@ -21,7 +22,14 @@ pub fn stdio_transport() -> (Receiver<RawMessage>, Sender<RawMessage>, Threads)
21 let stdin = stdin(); 22 let stdin = stdin();
22 let mut stdin = stdin.lock(); 23 let mut stdin = stdin.lock();
23 while let Some(msg) = RawMessage::read(&mut stdin)? { 24 while let Some(msg) = RawMessage::read(&mut stdin)? {
24 if let Err(_) = reader_sender.send(msg) { 25 let is_exit = match &msg {
26 RawMessage::Notification(n) => n.is::<Exit>(),
27 _ => false,
28 };
29
30 reader_sender.send(msg).unwrap();
31
32 if is_exit {
25 break; 33 break;
26 } 34 }
27 } 35 }
diff --git a/crates/ra_lsp_server/tests/heavy_tests/support.rs b/crates/ra_lsp_server/tests/heavy_tests/support.rs
index b07882700..d68182174 100644
--- a/crates/ra_lsp_server/tests/heavy_tests/support.rs
+++ b/crates/ra_lsp_server/tests/heavy_tests/support.rs
@@ -77,7 +77,7 @@ pub struct Server {
77 req_id: Cell<u64>, 77 req_id: Cell<u64>,
78 messages: RefCell<Vec<RawMessage>>, 78 messages: RefCell<Vec<RawMessage>>,
79 dir: TempDir, 79 dir: TempDir,
80 worker: Option<Worker<RawMessage, RawMessage>>, 80 worker: Worker<RawMessage, RawMessage>,
81} 81}
82 82
83impl Server { 83impl Server {
@@ -99,12 +99,7 @@ impl Server {
99 .unwrap() 99 .unwrap()
100 }, 100 },
101 ); 101 );
102 let res = Server { 102 let res = Server { req_id: Cell::new(1), dir, messages: Default::default(), worker };
103 req_id: Cell::new(1),
104 dir,
105 messages: Default::default(),
106 worker: Some(worker),
107 };
108 103
109 for (path, text) in files { 104 for (path, text) in files {
110 res.send_notification(RawNotification::new::<DidOpenTextDocument>( 105 res.send_notification(RawNotification::new::<DidOpenTextDocument>(
@@ -157,7 +152,7 @@ impl Server {
157 } 152 }
158 fn send_request_(&self, r: RawRequest) -> Value { 153 fn send_request_(&self, r: RawRequest) -> Value {
159 let id = r.id; 154 let id = r.id;
160 self.worker.as_ref().unwrap().sender().send(RawMessage::Request(r)).unwrap(); 155 self.worker.sender().send(RawMessage::Request(r)).unwrap();
161 while let Some(msg) = self.recv() { 156 while let Some(msg) = self.recv() {
162 match msg { 157 match msg {
163 RawMessage::Request(req) => panic!("unexpected request: {:?}", req), 158 RawMessage::Request(req) => panic!("unexpected request: {:?}", req),
@@ -197,13 +192,13 @@ impl Server {
197 } 192 }
198 } 193 }
199 fn recv(&self) -> Option<RawMessage> { 194 fn recv(&self) -> Option<RawMessage> {
200 recv_timeout(&self.worker.as_ref().unwrap().receiver()).map(|msg| { 195 recv_timeout(&self.worker.receiver()).map(|msg| {
201 self.messages.borrow_mut().push(msg.clone()); 196 self.messages.borrow_mut().push(msg.clone());
202 msg 197 msg
203 }) 198 })
204 } 199 }
205 fn send_notification(&self, not: RawNotification) { 200 fn send_notification(&self, not: RawNotification) {
206 self.worker.as_ref().unwrap().sender().send(RawMessage::Notification(not)).unwrap(); 201 self.worker.sender().send(RawMessage::Notification(not)).unwrap();
207 } 202 }
208 203
209 pub fn path(&self) -> &Path { 204 pub fn path(&self) -> &Path {
diff --git a/crates/ra_mbe/src/lib.rs b/crates/ra_mbe/src/lib.rs
index a530f3b03..a1f438906 100644
--- a/crates/ra_mbe/src/lib.rs
+++ b/crates/ra_mbe/src/lib.rs
@@ -582,4 +582,19 @@ SOURCE_FILE@[0; 40)
582 ); 582 );
583 assert_expansion(&rules, "foo! { (a, b) }", "fn foo () {let (a , b) ;}"); 583 assert_expansion(&rules, "foo! { (a, b) }", "fn foo () {let (a , b) ;}");
584 } 584 }
585
586 #[test]
587 fn test_stmt() {
588 let rules = create_rules(
589 r#"
590 macro_rules! foo {
591 ($ i:stmt) => (
592 fn bar() { $ i; }
593 )
594 }
595"#,
596 );
597 assert_expansion(&rules, "foo! { 2 }", "fn bar () {2 ;}");
598 assert_expansion(&rules, "foo! { let a = 0 }", "fn bar () {let a = 0 ;}");
599 }
585} 600}
diff --git a/crates/ra_mbe/src/mbe_expander.rs b/crates/ra_mbe/src/mbe_expander.rs
index 7a259f338..7587b575d 100644
--- a/crates/ra_mbe/src/mbe_expander.rs
+++ b/crates/ra_mbe/src/mbe_expander.rs
@@ -157,6 +157,10 @@ fn match_lhs(pattern: &crate::Subtree, input: &mut TtCursor) -> Result<Bindings,
157 let pat = input.eat_pat().ok_or(ExpandError::UnexpectedToken)?.clone(); 157 let pat = input.eat_pat().ok_or(ExpandError::UnexpectedToken)?.clone();
158 res.inner.insert(text.clone(), Binding::Simple(pat.into())); 158 res.inner.insert(text.clone(), Binding::Simple(pat.into()));
159 } 159 }
160 "stmt" => {
161 let pat = input.eat_stmt().ok_or(ExpandError::UnexpectedToken)?.clone();
162 res.inner.insert(text.clone(), Binding::Simple(pat.into()));
163 }
160 _ => return Err(ExpandError::UnexpectedToken), 164 _ => return Err(ExpandError::UnexpectedToken),
161 } 165 }
162 } 166 }
diff --git a/crates/ra_mbe/src/subtree_parser.rs b/crates/ra_mbe/src/subtree_parser.rs
index 13d5d2169..f075ce245 100644
--- a/crates/ra_mbe/src/subtree_parser.rs
+++ b/crates/ra_mbe/src/subtree_parser.rs
@@ -42,6 +42,10 @@ impl<'a> Parser<'a> {
42 self.parse(ra_parser::parse_pat) 42 self.parse(ra_parser::parse_pat)
43 } 43 }
44 44
45 pub fn parse_stmt(self) -> Option<tt::TokenTree> {
46 self.parse(|src, sink| ra_parser::parse_stmt(src, sink, false))
47 }
48
45 fn parse<F>(self, f: F) -> Option<tt::TokenTree> 49 fn parse<F>(self, f: F) -> Option<tt::TokenTree>
46 where 50 where
47 F: FnOnce(&dyn TokenSource, &mut dyn TreeSink), 51 F: FnOnce(&dyn TokenSource, &mut dyn TreeSink),
diff --git a/crates/ra_mbe/src/tt_cursor.rs b/crates/ra_mbe/src/tt_cursor.rs
index f6cefe087..adfe5520d 100644
--- a/crates/ra_mbe/src/tt_cursor.rs
+++ b/crates/ra_mbe/src/tt_cursor.rs
@@ -99,6 +99,11 @@ impl<'a> TtCursor<'a> {
99 parser.parse_pat() 99 parser.parse_pat()
100 } 100 }
101 101
102 pub(crate) fn eat_stmt(&mut self) -> Option<tt::TokenTree> {
103 let parser = Parser::new(&mut self.pos, self.subtree);
104 parser.parse_stmt()
105 }
106
102 pub(crate) fn expect_char(&mut self, char: char) -> Result<(), ParseError> { 107 pub(crate) fn expect_char(&mut self, char: char) -> Result<(), ParseError> {
103 if self.at_char(char) { 108 if self.at_char(char) {
104 self.bump(); 109 self.bump();
diff --git a/crates/ra_parser/src/grammar.rs b/crates/ra_parser/src/grammar.rs
index 5a7a55141..2c2f785d0 100644
--- a/crates/ra_parser/src/grammar.rs
+++ b/crates/ra_parser/src/grammar.rs
@@ -65,6 +65,10 @@ pub(crate) fn pattern(p: &mut Parser) {
65 patterns::pattern(p) 65 patterns::pattern(p)
66} 66}
67 67
68pub(crate) fn stmt(p: &mut Parser, with_semi: bool) {
69 expressions::stmt(p, with_semi)
70}
71
68pub(crate) fn reparser( 72pub(crate) fn reparser(
69 node: SyntaxKind, 73 node: SyntaxKind,
70 first_child: Option<SyntaxKind>, 74 first_child: Option<SyntaxKind>,
diff --git a/crates/ra_parser/src/grammar/expressions.rs b/crates/ra_parser/src/grammar/expressions.rs
index 295577325..06f2b45b1 100644
--- a/crates/ra_parser/src/grammar/expressions.rs
+++ b/crates/ra_parser/src/grammar/expressions.rs
@@ -48,88 +48,77 @@ fn is_expr_stmt_attr_allowed(kind: SyntaxKind) -> bool {
48 } 48 }
49} 49}
50 50
51pub(crate) fn expr_block_contents(p: &mut Parser) { 51pub(super) fn stmt(p: &mut Parser, with_semi: bool) {
52 // This is checked by a validator 52 // test block_items
53 attributes::inner_attributes(p); 53 // fn a() { fn b() {} }
54 54 let m = p.start();
55 while !p.at(EOF) && !p.at(R_CURLY) { 55 // test attr_on_expr_stmt
56 // test nocontentexpr 56 // fn foo() {
57 // fn foo(){ 57 // #[A] foo();
58 // ;;;some_expr();;;;{;;;};;;;Ok(()) 58 // #[B] bar!{}
59 // } 59 // #[C] #[D] {}
60 if p.current() == SEMI { 60 // #[D] return ();
61 p.bump(); 61 // }
62 continue; 62 let has_attrs = p.at(POUND);
63 } 63 attributes::outer_attributes(p);
64 64
65 // test block_items 65 if p.at(LET_KW) {
66 // fn a() { fn b() {} } 66 let_stmt(p, m, with_semi);
67 let m = p.start(); 67 return;
68 // test attr_on_expr_stmt 68 }
69 // fn foo() {
70 // #[A] foo();
71 // #[B] bar!{}
72 // #[C] #[D] {}
73 // #[D] return ();
74 // }
75 let has_attrs = p.at(POUND);
76 attributes::outer_attributes(p);
77 if p.at(LET_KW) {
78 let_stmt(p, m);
79 continue;
80 }
81 69
82 let m = match items::maybe_item(p, m, items::ItemFlavor::Mod) { 70 let m = match items::maybe_item(p, m, items::ItemFlavor::Mod) {
83 Ok(()) => continue, 71 Ok(()) => return,
84 Err(m) => m, 72 Err(m) => m,
85 }; 73 };
86 74
87 let (cm, blocklike) = expr_stmt(p); 75 let (cm, blocklike) = expr_stmt(p);
88 let kind = cm.as_ref().map(|cm| cm.kind()).unwrap_or(ERROR); 76 let kind = cm.as_ref().map(|cm| cm.kind()).unwrap_or(ERROR);
89 77
90 if has_attrs && !is_expr_stmt_attr_allowed(kind) { 78 if has_attrs && !is_expr_stmt_attr_allowed(kind) {
91 // test_err attr_on_expr_not_allowed 79 // test_err attr_on_expr_not_allowed
92 // fn foo() { 80 // fn foo() {
93 // #[A] 1 + 2; 81 // #[A] 1 + 2;
94 // #[B] if true {}; 82 // #[B] if true {};
95 // } 83 // }
96 p.error(format!("attributes are not allowed on {:?}", kind)); 84 p.error(format!("attributes are not allowed on {:?}", kind));
97 } 85 }
98 86
99 if p.at(R_CURLY) { 87 if p.at(R_CURLY) {
100 // test attr_on_last_expr_in_block 88 // test attr_on_last_expr_in_block
101 // fn foo() { 89 // fn foo() {
102 // { #[A] bar!()? } 90 // { #[A] bar!()? }
103 // #[B] &() 91 // #[B] &()
104 // } 92 // }
105 if let Some(cm) = cm { 93 if let Some(cm) = cm {
106 cm.undo_completion(p).abandon(p); 94 cm.undo_completion(p).abandon(p);
107 m.complete(p, kind); 95 m.complete(p, kind);
108 } else {
109 m.abandon(p);
110 }
111 } else { 96 } else {
112 // test no_semi_after_block 97 m.abandon(p);
113 // fn foo() { 98 }
114 // if true {} 99 } else {
115 // loop {} 100 // test no_semi_after_block
116 // match () {} 101 // fn foo() {
117 // while true {} 102 // if true {}
118 // for _ in () {} 103 // loop {}
119 // {} 104 // match () {}
120 // {} 105 // while true {}
121 // macro_rules! test { 106 // for _ in () {}
122 // () => {} 107 // {}
123 // } 108 // {}
124 // test!{} 109 // macro_rules! test {
125 // } 110 // () => {}
111 // }
112 // test!{}
113 // }
114 if with_semi {
126 if blocklike.is_block() { 115 if blocklike.is_block() {
127 p.eat(SEMI); 116 p.eat(SEMI);
128 } else { 117 } else {
129 p.expect(SEMI); 118 p.expect(SEMI);
130 } 119 }
131 m.complete(p, EXPR_STMT);
132 } 120 }
121 m.complete(p, EXPR_STMT);
133 } 122 }
134 123
135 // test let_stmt; 124 // test let_stmt;
@@ -139,7 +128,7 @@ pub(crate) fn expr_block_contents(p: &mut Parser) {
139 // let c = 92; 128 // let c = 92;
140 // let d: i32 = 92; 129 // let d: i32 = 92;
141 // } 130 // }
142 fn let_stmt(p: &mut Parser, m: Marker) { 131 fn let_stmt(p: &mut Parser, m: Marker, with_semi: bool) {
143 assert!(p.at(LET_KW)); 132 assert!(p.at(LET_KW));
144 p.bump(); 133 p.bump();
145 patterns::pattern(p); 134 patterns::pattern(p);
@@ -149,11 +138,32 @@ pub(crate) fn expr_block_contents(p: &mut Parser) {
149 if p.eat(EQ) { 138 if p.eat(EQ) {
150 expressions::expr(p); 139 expressions::expr(p);
151 } 140 }
152 p.expect(SEMI); 141
142 if with_semi {
143 p.expect(SEMI);
144 }
153 m.complete(p, LET_STMT); 145 m.complete(p, LET_STMT);
154 } 146 }
155} 147}
156 148
149pub(crate) fn expr_block_contents(p: &mut Parser) {
150 // This is checked by a validator
151 attributes::inner_attributes(p);
152
153 while !p.at(EOF) && !p.at(R_CURLY) {
154 // test nocontentexpr
155 // fn foo(){
156 // ;;;some_expr();;;;{;;;};;;;Ok(())
157 // }
158 if p.current() == SEMI {
159 p.bump();
160 continue;
161 }
162
163 stmt(p, true)
164 }
165}
166
157#[derive(Clone, Copy)] 167#[derive(Clone, Copy)]
158struct Restrictions { 168struct Restrictions {
159 forbid_structs: bool, 169 forbid_structs: bool,
diff --git a/crates/ra_parser/src/lib.rs b/crates/ra_parser/src/lib.rs
index 56755c394..9133c1b8a 100644
--- a/crates/ra_parser/src/lib.rs
+++ b/crates/ra_parser/src/lib.rs
@@ -88,6 +88,11 @@ pub fn parse_pat(token_source: &dyn TokenSource, tree_sink: &mut dyn TreeSink) {
88 parse_from_tokens(token_source, tree_sink, grammar::pattern); 88 parse_from_tokens(token_source, tree_sink, grammar::pattern);
89} 89}
90 90
91/// Parse given tokens into the given sink as a statement
92pub fn parse_stmt(token_source: &dyn TokenSource, tree_sink: &mut dyn TreeSink, with_semi: bool) {
93 parse_from_tokens(token_source, tree_sink, |p| grammar::stmt(p, with_semi));
94}
95
91/// A parsing function for a specific braced-block. 96/// A parsing function for a specific braced-block.
92pub struct Reparser(fn(&mut parser::Parser)); 97pub struct Reparser(fn(&mut parser::Parser));
93 98
diff --git a/editors/code/package.json b/editors/code/package.json
index 1c8caaa60..a0454191a 100644
--- a/editors/code/package.json
+++ b/editors/code/package.json
@@ -114,6 +114,11 @@
114 "command": "rust-analyzer.collectGarbage", 114 "command": "rust-analyzer.collectGarbage",
115 "title": "Run garbage collection", 115 "title": "Run garbage collection",
116 "category": "Rust Analyzer" 116 "category": "Rust Analyzer"
117 },
118 {
119 "command": "rust-analyzer.reload",
120 "title": "Restart server",
121 "category": "Rust Analyzer"
117 } 122 }
118 ], 123 ],
119 "keybindings": [ 124 "keybindings": [
diff --git a/editors/code/src/extension.ts b/editors/code/src/extension.ts
index ef83c0b8b..1073a36a0 100644
--- a/editors/code/src/extension.ts
+++ b/editors/code/src/extension.ts
@@ -120,11 +120,16 @@ export function activate(context: vscode.ExtensionContext) {
120 context.subscriptions 120 context.subscriptions
121 ); 121 );
122 122
123 const startServer = () => Server.start(allNotifications);
124 const reloadCommand = () => reloadServer(startServer);
125
126 vscode.commands.registerCommand('rust-analyzer.reload', reloadCommand);
127
123 // Executing `cargo watch` provides us with inline diagnostics on save 128 // Executing `cargo watch` provides us with inline diagnostics on save
124 interactivelyStartCargoWatch(context); 129 interactivelyStartCargoWatch(context);
125 130
126 // Start the language server, finally! 131 // Start the language server, finally!
127 Server.start(allNotifications); 132 startServer();
128} 133}
129 134
130export function deactivate(): Thenable<void> { 135export function deactivate(): Thenable<void> {
@@ -133,3 +138,11 @@ export function deactivate(): Thenable<void> {
133 } 138 }
134 return Server.client.stop(); 139 return Server.client.stop();
135} 140}
141
142async function reloadServer(startServer: () => void) {
143 if (Server.client != null) {
144 vscode.window.showInformationMessage('Reloading rust-analyzer...');
145 await Server.client.stop();
146 startServer();
147 }
148}
diff --git a/editors/code/src/utils/terminateProcess.sh b/editors/code/src/utils/terminateProcess.sh
index 2ec9e1c2e..2ec9e1c2e 100644..100755
--- a/editors/code/src/utils/terminateProcess.sh
+++ b/editors/code/src/utils/terminateProcess.sh