diff options
-rw-r--r-- | Cargo.lock | 115 | ||||
-rw-r--r-- | crates/gen_lsp_server/src/stdio.rs | 10 | ||||
-rw-r--r-- | crates/ra_lsp_server/tests/heavy_tests/support.rs | 15 | ||||
-rw-r--r-- | crates/ra_mbe/src/lib.rs | 15 | ||||
-rw-r--r-- | crates/ra_mbe/src/mbe_expander.rs | 4 | ||||
-rw-r--r-- | crates/ra_mbe/src/subtree_parser.rs | 4 | ||||
-rw-r--r-- | crates/ra_mbe/src/tt_cursor.rs | 5 | ||||
-rw-r--r-- | crates/ra_parser/src/grammar.rs | 4 | ||||
-rw-r--r-- | crates/ra_parser/src/grammar/expressions.rs | 154 | ||||
-rw-r--r-- | crates/ra_parser/src/lib.rs | 5 | ||||
-rw-r--r-- | editors/code/package.json | 5 | ||||
-rw-r--r-- | editors/code/src/extension.ts | 15 | ||||
-rwxr-xr-x[-rw-r--r--] | editors/code/src/utils/terminateProcess.sh | 0 |
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]] |
20 | name = "arrayref" | ||
21 | version = "0.3.5" | ||
22 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
23 | |||
24 | [[package]] | ||
25 | name = "arrayvec" | 20 | name = "arrayvec" |
26 | version = "0.4.10" | 21 | version = "0.4.10" |
27 | source = "registry+https://github.com/rust-lang/crates.io-index" | 22 | source = "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]] |
101 | name = "block-buffer" | 96 | name = "block-buffer" |
102 | version = "0.3.3" | 97 | version = "0.7.3" |
98 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
99 | dependencies = [ | ||
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]] | ||
107 | name = "block-padding" | ||
108 | version = "0.1.3" | ||
103 | source = "registry+https://github.com/rust-lang/crates.io-index" | 109 | source = "registry+https://github.com/rust-lang/crates.io-index" |
104 | dependencies = [ | 110 | dependencies = [ |
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]] |
110 | name = "byte-tools" | 115 | name = "byte-tools" |
111 | version = "0.2.0" | 116 | version = "0.3.1" |
112 | source = "registry+https://github.com/rust-lang/crates.io-index" | 117 | source = "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" | |||
265 | dependencies = [ | 270 | dependencies = [ |
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]] |
282 | name = "digest" | 287 | name = "digest" |
283 | version = "0.7.6" | 288 | version = "0.8.0" |
284 | source = "registry+https://github.com/rust-lang/crates.io-index" | 289 | source = "registry+https://github.com/rust-lang/crates.io-index" |
285 | dependencies = [ | 290 | dependencies = [ |
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" | |||
338 | dependencies = [ | 343 | dependencies = [ |
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]] |
434 | name = "generic-array" | 439 | name = "generic-array" |
435 | version = "0.9.0" | 440 | version = "0.12.0" |
436 | source = "registry+https://github.com/rust-lang/crates.io-index" | 441 | source = "registry+https://github.com/rust-lang/crates.io-index" |
437 | dependencies = [ | 442 | dependencies = [ |
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" | |||
742 | dependencies = [ | 747 | dependencies = [ |
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]] |
783 | name = "opaque-debug" | ||
784 | version = "0.2.2" | ||
785 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
786 | |||
787 | [[package]] | ||
778 | name = "owning_ref" | 788 | name = "owning_ref" |
779 | version = "0.4.0" | 789 | version = "0.4.0" |
780 | source = "registry+https://github.com/rust-lang/crates.io-index" | 790 | source = "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]] |
812 | name = "pest" | 822 | name = "pest" |
813 | version = "2.1.0" | 823 | version = "2.1.1" |
814 | source = "registry+https://github.com/rust-lang/crates.io-index" | 824 | source = "registry+https://github.com/rust-lang/crates.io-index" |
815 | dependencies = [ | 825 | dependencies = [ |
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" | |||
821 | version = "2.1.0" | 831 | version = "2.1.0" |
822 | source = "registry+https://github.com/rust-lang/crates.io-index" | 832 | source = "registry+https://github.com/rust-lang/crates.io-index" |
823 | dependencies = [ | 833 | dependencies = [ |
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" | |||
830 | version = "2.1.0" | 840 | version = "2.1.0" |
831 | source = "registry+https://github.com/rust-lang/crates.io-index" | 841 | source = "registry+https://github.com/rust-lang/crates.io-index" |
832 | dependencies = [ | 842 | dependencies = [ |
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]] |
841 | name = "pest_meta" | 851 | name = "pest_meta" |
842 | version = "2.1.0" | 852 | version = "2.1.1" |
843 | source = "registry+https://github.com/rust-lang/crates.io-index" | 853 | source = "registry+https://github.com/rust-lang/crates.io-index" |
844 | dependencies = [ | 854 | dependencies = [ |
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]] |
1117 | name = "ra_vfs" | 1127 | name = "ra_vfs" |
1118 | version = "0.2.2" | 1128 | version = "0.2.3" |
1119 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1129 | source = "registry+https://github.com/rust-lang/crates.io-index" |
1120 | dependencies = [ | 1130 | dependencies = [ |
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]] |
1269 | name = "regex" | 1279 | name = "regex" |
1270 | version = "1.1.5" | 1280 | version = "1.1.6" |
1271 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1281 | source = "registry+https://github.com/rust-lang/crates.io-index" |
1272 | dependencies = [ | 1282 | dependencies = [ |
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" | |||
1413 | dependencies = [ | 1423 | dependencies = [ |
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]] |
1441 | name = "sha-1" | 1451 | name = "sha-1" |
1442 | version = "0.7.0" | 1452 | version = "0.8.1" |
1443 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1453 | source = "registry+https://github.com/rust-lang/crates.io-index" |
1444 | dependencies = [ | 1454 | dependencies = [ |
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]] |
1493 | name = "syn" | 1503 | name = "syn" |
1494 | version = "0.15.30" | 1504 | version = "0.15.31" |
1495 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1505 | source = "registry+https://github.com/rust-lang/crates.io-index" |
1496 | dependencies = [ | 1506 | dependencies = [ |
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" | |||
1506 | dependencies = [ | 1516 | dependencies = [ |
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 | ||
6 | use crossbeam_channel::{bounded, Receiver, Sender}; | 6 | use crossbeam_channel::{bounded, Receiver, Sender}; |
7 | use failure::bail; | 7 | use failure::bail; |
8 | use lsp_types::notification::Exit; | ||
8 | 9 | ||
9 | use crate::{RawMessage, Result}; | 10 | use 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 | ||
83 | impl Server { | 83 | impl 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 | ||
68 | pub(crate) fn stmt(p: &mut Parser, with_semi: bool) { | ||
69 | expressions::stmt(p, with_semi) | ||
70 | } | ||
71 | |||
68 | pub(crate) fn reparser( | 72 | pub(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 | ||
51 | pub(crate) fn expr_block_contents(p: &mut Parser) { | 51 | pub(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 | ||
149 | pub(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)] |
158 | struct Restrictions { | 168 | struct 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 | ||
92 | pub 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. |
92 | pub struct Reparser(fn(&mut parser::Parser)); | 97 | pub 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 | ||
130 | export function deactivate(): Thenable<void> { | 135 | export 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 | |||
142 | async 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 | |||