aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.cargo/config18
-rw-r--r--Cargo.lock77
-rw-r--r--crates/ra_lsp_server/src/caps.rs2
-rw-r--r--crates/ra_lsp_server/src/conv.rs1
-rw-r--r--crates/ra_lsp_server/src/main_loop.rs1
-rw-r--r--crates/ra_lsp_server/src/main_loop/handlers.rs26
-rw-r--r--crates/tools/src/lib.rs17
-rw-r--r--crates/tools/src/main.rs7
8 files changed, 93 insertions, 56 deletions
diff --git a/.cargo/config b/.cargo/config
index c319d33f2..b9db30c96 100644
--- a/.cargo/config
+++ b/.cargo/config
@@ -1,10 +1,16 @@
1[alias] 1[alias]
2# Automatically generates the ast and syntax kinds files 2# Automatically generates the ast and syntax kinds files
3gen-syntax = "run --package tools --bin tools -- gen-syntax" 3gen-syntax = "run --package tools --bin tools -- gen-syntax"
4gen-tests = "run --package tools --bin tools -- gen-tests" 4# Extracts the tests from
5gen-tests = "run --package tools --bin tools -- gen-tests"
6# Installs the visual studio code extension
5install-code = "run --package tools --bin tools -- install-code" 7install-code = "run --package tools --bin tools -- install-code"
6format = "run --package tools --bin tools -- format" 8# Formats the full repository or installs the git hook to do it automatically.
7format-hook = "run --package tools --bin tools -- format-hook" 9format = "run --package tools --bin tools -- format"
10format-hook = "run --package tools --bin tools -- format-hook"
11# Runs the fuzzing test suite (currently only parser)
12fuzz-tests = "run --package tools --bin tools -- fuzz-tests"
8 13
9render-test = "run --package ra_cli -- render-test" 14render-test = "run --package ra_cli -- render-test"
10parse = "run --package ra_cli -- parse" 15# Parse a file. This should be piped the file contents
16parse = "run --package ra_cli -- parse"
diff --git a/Cargo.lock b/Cargo.lock
index f1d56d5de..895e6e62b 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -48,7 +48,7 @@ version = "0.3.13"
48source = "registry+https://github.com/rust-lang/crates.io-index" 48source = "registry+https://github.com/rust-lang/crates.io-index"
49dependencies = [ 49dependencies = [
50 "autocfg 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 50 "autocfg 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
51 "backtrace-sys 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)", 51 "backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)",
52 "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 52 "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
53 "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", 53 "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)",
54 "rustc-demangle 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", 54 "rustc-demangle 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -57,10 +57,10 @@ dependencies = [
57 57
58[[package]] 58[[package]]
59name = "backtrace-sys" 59name = "backtrace-sys"
60version = "0.1.26" 60version = "0.1.28"
61source = "registry+https://github.com/rust-lang/crates.io-index" 61source = "registry+https://github.com/rust-lang/crates.io-index"
62dependencies = [ 62dependencies = [
63 "cc 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", 63 "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)",
64 "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", 64 "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)",
65] 65]
66 66
@@ -118,13 +118,13 @@ dependencies = [
118 "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", 118 "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
119 "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", 119 "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
120 "serde 1.0.83 (registry+https://github.com/rust-lang/crates.io-index)", 120 "serde 1.0.83 (registry+https://github.com/rust-lang/crates.io-index)",
121 "serde_derive 1.0.82 (registry+https://github.com/rust-lang/crates.io-index)", 121 "serde_derive 1.0.83 (registry+https://github.com/rust-lang/crates.io-index)",
122 "serde_json 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)", 122 "serde_json 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)",
123] 123]
124 124
125[[package]] 125[[package]]
126name = "cc" 126name = "cc"
127version = "1.0.27" 127version = "1.0.28"
128source = "registry+https://github.com/rust-lang/crates.io-index" 128source = "registry+https://github.com/rust-lang/crates.io-index"
129 129
130[[package]] 130[[package]]
@@ -426,7 +426,7 @@ dependencies = [
426 "num-derive 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 426 "num-derive 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
427 "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", 427 "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
428 "serde 1.0.83 (registry+https://github.com/rust-lang/crates.io-index)", 428 "serde 1.0.83 (registry+https://github.com/rust-lang/crates.io-index)",
429 "serde_derive 1.0.82 (registry+https://github.com/rust-lang/crates.io-index)", 429 "serde_derive 1.0.83 (registry+https://github.com/rust-lang/crates.io-index)",
430 "serde_json 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)", 430 "serde_json 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)",
431 "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 431 "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
432 "url_serde 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 432 "url_serde 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -587,7 +587,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
587 587
588[[package]] 588[[package]]
589name = "pest" 589name = "pest"
590version = "2.0.2" 590version = "2.1.0"
591source = "registry+https://github.com/rust-lang/crates.io-index" 591source = "registry+https://github.com/rust-lang/crates.io-index"
592dependencies = [ 592dependencies = [
593 "ucd-trie 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 593 "ucd-trie 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -595,32 +595,32 @@ dependencies = [
595 595
596[[package]] 596[[package]]
597name = "pest_derive" 597name = "pest_derive"
598version = "2.0.1" 598version = "2.1.0"
599source = "registry+https://github.com/rust-lang/crates.io-index" 599source = "registry+https://github.com/rust-lang/crates.io-index"
600dependencies = [ 600dependencies = [
601 "pest 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 601 "pest 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
602 "pest_generator 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 602 "pest_generator 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
603] 603]
604 604
605[[package]] 605[[package]]
606name = "pest_generator" 606name = "pest_generator"
607version = "2.0.0" 607version = "2.1.0"
608source = "registry+https://github.com/rust-lang/crates.io-index" 608source = "registry+https://github.com/rust-lang/crates.io-index"
609dependencies = [ 609dependencies = [
610 "pest 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 610 "pest 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
611 "pest_meta 2.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 611 "pest_meta 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
612 "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", 612 "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)",
613 "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", 613 "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)",
614 "syn 0.14.9 (registry+https://github.com/rust-lang/crates.io-index)", 614 "syn 0.15.23 (registry+https://github.com/rust-lang/crates.io-index)",
615] 615]
616 616
617[[package]] 617[[package]]
618name = "pest_meta" 618name = "pest_meta"
619version = "2.0.3" 619version = "2.1.0"
620source = "registry+https://github.com/rust-lang/crates.io-index" 620source = "registry+https://github.com/rust-lang/crates.io-index"
621dependencies = [ 621dependencies = [
622 "maplit 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 622 "maplit 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
623 "pest 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 623 "pest 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
624 "sha-1 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 624 "sha-1 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
625] 625]
626 626
@@ -921,7 +921,7 @@ dependencies = [
921 921
922[[package]] 922[[package]]
923name = "redox_syscall" 923name = "redox_syscall"
924version = "0.1.44" 924version = "0.1.49"
925source = "registry+https://github.com/rust-lang/crates.io-index" 925source = "registry+https://github.com/rust-lang/crates.io-index"
926 926
927[[package]] 927[[package]]
@@ -929,7 +929,7 @@ name = "redox_termios"
929version = "0.1.1" 929version = "0.1.1"
930source = "registry+https://github.com/rust-lang/crates.io-index" 930source = "registry+https://github.com/rust-lang/crates.io-index"
931dependencies = [ 931dependencies = [
932 "redox_syscall 0.1.44 (registry+https://github.com/rust-lang/crates.io-index)", 932 "redox_syscall 0.1.49 (registry+https://github.com/rust-lang/crates.io-index)",
933] 933]
934 934
935[[package]] 935[[package]]
@@ -1073,12 +1073,12 @@ name = "serde"
1073version = "1.0.83" 1073version = "1.0.83"
1074source = "registry+https://github.com/rust-lang/crates.io-index" 1074source = "registry+https://github.com/rust-lang/crates.io-index"
1075dependencies = [ 1075dependencies = [
1076 "serde_derive 1.0.82 (registry+https://github.com/rust-lang/crates.io-index)", 1076 "serde_derive 1.0.83 (registry+https://github.com/rust-lang/crates.io-index)",
1077] 1077]
1078 1078
1079[[package]] 1079[[package]]
1080name = "serde_derive" 1080name = "serde_derive"
1081version = "1.0.82" 1081version = "1.0.83"
1082source = "registry+https://github.com/rust-lang/crates.io-index" 1082source = "registry+https://github.com/rust-lang/crates.io-index"
1083dependencies = [ 1083dependencies = [
1084 "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", 1084 "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1148,16 +1148,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1148 1148
1149[[package]] 1149[[package]]
1150name = "syn" 1150name = "syn"
1151version = "0.14.9"
1152source = "registry+https://github.com/rust-lang/crates.io-index"
1153dependencies = [
1154 "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)",
1155 "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)",
1156 "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
1157]
1158
1159[[package]]
1160name = "syn"
1161version = "0.15.23" 1151version = "0.15.23"
1162source = "registry+https://github.com/rust-lang/crates.io-index" 1152source = "registry+https://github.com/rust-lang/crates.io-index"
1163dependencies = [ 1153dependencies = [
@@ -1185,7 +1175,7 @@ dependencies = [
1185 "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1175 "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
1186 "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", 1176 "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)",
1187 "rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", 1177 "rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
1188 "redox_syscall 0.1.44 (registry+https://github.com/rust-lang/crates.io-index)", 1178 "redox_syscall 0.1.49 (registry+https://github.com/rust-lang/crates.io-index)",
1189 "remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 1179 "remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
1190 "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 1180 "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
1191] 1181]
@@ -1200,8 +1190,8 @@ dependencies = [
1200 "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", 1190 "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
1201 "humansize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1191 "humansize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
1202 "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 1192 "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
1203 "pest 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 1193 "pest 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
1204 "pest_derive 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 1194 "pest_derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
1205 "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1195 "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
1206 "serde 1.0.83 (registry+https://github.com/rust-lang/crates.io-index)", 1196 "serde 1.0.83 (registry+https://github.com/rust-lang/crates.io-index)",
1207 "serde_json 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)", 1197 "serde_json 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1227,7 +1217,7 @@ version = "1.5.1"
1227source = "registry+https://github.com/rust-lang/crates.io-index" 1217source = "registry+https://github.com/rust-lang/crates.io-index"
1228dependencies = [ 1218dependencies = [
1229 "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", 1219 "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)",
1230 "redox_syscall 0.1.44 (registry+https://github.com/rust-lang/crates.io-index)", 1220 "redox_syscall 0.1.49 (registry+https://github.com/rust-lang/crates.io-index)",
1231 "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1221 "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
1232] 1222]
1233 1223
@@ -1288,7 +1278,7 @@ version = "0.1.41"
1288source = "registry+https://github.com/rust-lang/crates.io-index" 1278source = "registry+https://github.com/rust-lang/crates.io-index"
1289dependencies = [ 1279dependencies = [
1290 "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", 1280 "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)",
1291 "redox_syscall 0.1.44 (registry+https://github.com/rust-lang/crates.io-index)", 1281 "redox_syscall 0.1.49 (registry+https://github.com/rust-lang/crates.io-index)",
1292 "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 1282 "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
1293] 1283]
1294 1284
@@ -1490,7 +1480,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1490"checksum atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9a7d5b8723950951411ee34d271d99dddcc2035a16ab25310ea2c8cfd4369652" 1480"checksum atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9a7d5b8723950951411ee34d271d99dddcc2035a16ab25310ea2c8cfd4369652"
1491"checksum autocfg 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4e5f34df7a019573fb8bdc7e24a2bfebe51a2a1d6bfdbaeccedb3c41fc574727" 1481"checksum autocfg 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4e5f34df7a019573fb8bdc7e24a2bfebe51a2a1d6bfdbaeccedb3c41fc574727"
1492"checksum backtrace 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)" = "b5b493b66e03090ebc4343eb02f94ff944e0cbc9ac6571491d170ba026741eb5" 1482"checksum backtrace 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)" = "b5b493b66e03090ebc4343eb02f94ff944e0cbc9ac6571491d170ba026741eb5"
1493"checksum backtrace-sys 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)" = "3fcce89e5ad5c8949caa9434501f7b55415b3e7ad5270cb88c75a8d35e8f1279" 1483"checksum backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)" = "797c830ac25ccc92a7f8a7b9862bde440715531514594a6154e3d4a54dd769b6"
1494"checksum base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643" 1484"checksum base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643"
1495"checksum bit-set 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6f1efcc46c18245a69c38fcc5cc650f16d3a59d034f3106e9ed63748f695730a" 1485"checksum bit-set 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6f1efcc46c18245a69c38fcc5cc650f16d3a59d034f3106e9ed63748f695730a"
1496"checksum bit-vec 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4440d5cb623bb7390ae27fec0bb6c61111969860f8e3ae198bfa0663645e67cf" 1486"checksum bit-vec 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4440d5cb623bb7390ae27fec0bb6c61111969860f8e3ae198bfa0663645e67cf"
@@ -1499,7 +1489,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1499"checksum byte-tools 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "560c32574a12a89ecd91f5e742165893f86e3ab98d21f8ea548658eb9eef5f40" 1489"checksum byte-tools 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "560c32574a12a89ecd91f5e742165893f86e3ab98d21f8ea548658eb9eef5f40"
1500"checksum byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "94f88df23a25417badc922ab0f5716cc1330e87f71ddd9203b3a3ccd9cedf75d" 1490"checksum byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "94f88df23a25417badc922ab0f5716cc1330e87f71ddd9203b3a3ccd9cedf75d"
1501"checksum cargo_metadata 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "e5d1b4d380e1bab994591a24c2bdd1b054f64b60bef483a8c598c7c345bc3bbe" 1491"checksum cargo_metadata 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "e5d1b4d380e1bab994591a24c2bdd1b054f64b60bef483a8c598c7c345bc3bbe"
1502"checksum cc 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)" = "155ed195f7bd722d1dfeb30365b9d0c1f6a078fa7ca4014497e5935d90993d6f" 1492"checksum cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4a8b715cb4597106ea87c7c84b2f1d452c7492033765df7f32651e66fcf749"
1503"checksum cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "082bb9b28e00d3c9d39cc03e64ce4cea0f1bb9b3fde493f0cbc008472d22bdf4" 1493"checksum cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "082bb9b28e00d3c9d39cc03e64ce4cea0f1bb9b3fde493f0cbc008472d22bdf4"
1504"checksum chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "45912881121cb26fad7c38c17ba7daa18764771836b34fab7d3fbd93ed633878" 1494"checksum chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "45912881121cb26fad7c38c17ba7daa18764771836b34fab7d3fbd93ed633878"
1505"checksum clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b957d88f4b6a63b9d70d5f454ac8011819c6efa7727858f458ab71c756ce2d3e" 1495"checksum clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b957d88f4b6a63b9d70d5f454ac8011819c6efa7727858f458ab71c756ce2d3e"
@@ -1557,10 +1547,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1557"checksum parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ad7f7e6ebdc79edff6fdcb87a55b620174f7a989e3eb31b65231f4af57f00b8c" 1547"checksum parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ad7f7e6ebdc79edff6fdcb87a55b620174f7a989e3eb31b65231f4af57f00b8c"
1558"checksum parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9" 1548"checksum parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9"
1559"checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" 1549"checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831"
1560"checksum pest 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a677051ad923732bb5c70f2d45f8985a96e3eee2e2bff86697e3b11b0c3fcfde" 1550"checksum pest 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "54f0c72a98d8ab3c99560bfd16df8059cc10e1f9a8e83e6e3b97718dd766e9c3"
1561"checksum pest_derive 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b76f477146419bc539a63f4ef40e902166cb43b3e51cecc71d9136fd12c567e7" 1551"checksum pest_derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "833d1ae558dc601e9a60366421196a8d94bc0ac980476d0b67e1d0988d72b2d0"
1562"checksum pest_generator 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3ebee4e9680be4fd162e6f3394ae4192a6b60b1e4d17d845e631f0c68d1a3386" 1552"checksum pest_generator 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "63120576c4efd69615b5537d3d052257328a4ca82876771d6944424ccfd9f646"
1563"checksum pest_meta 2.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1f6d5f6f0e6082578c86af197d780dc38328e3f768cec06aac9bc46d714e8221" 1553"checksum pest_meta 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f5a3492a4ed208ffc247adcdcc7ba2a95be3104f58877d0d02f0df39bf3efb5e"
1564"checksum proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)" = "77619697826f31a02ae974457af0b29b723e5619e113e9397b8b82c6bd253f09" 1554"checksum proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)" = "77619697826f31a02ae974457af0b29b723e5619e113e9397b8b82c6bd253f09"
1565"checksum proptest 0.8.7 (registry+https://github.com/rust-lang/crates.io-index)" = "926d0604475349f463fe44130aae73f2294b5309ab2ca0310b998bd334ef191f" 1555"checksum proptest 0.8.7 (registry+https://github.com/rust-lang/crates.io-index)" = "926d0604475349f463fe44130aae73f2294b5309ab2ca0310b998bd334ef191f"
1566"checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" 1556"checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0"
@@ -1576,7 +1566,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1576"checksum rand_xorshift 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "effa3fcaa47e18db002bdde6060944b6d2f9cfd8db471c30e873448ad9187be3" 1566"checksum rand_xorshift 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "effa3fcaa47e18db002bdde6060944b6d2f9cfd8db471c30e873448ad9187be3"
1577"checksum rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "373814f27745b2686b350dd261bfd24576a6fb0e2c5919b3a2b6005f820b0473" 1567"checksum rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "373814f27745b2686b350dd261bfd24576a6fb0e2c5919b3a2b6005f820b0473"
1578"checksum rayon-core 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b055d1e92aba6877574d8fe604a63c8b5df60f60e5982bf7ccbb1338ea527356" 1568"checksum rayon-core 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b055d1e92aba6877574d8fe604a63c8b5df60f60e5982bf7ccbb1338ea527356"
1579"checksum redox_syscall 0.1.44 (registry+https://github.com/rust-lang/crates.io-index)" = "a84bcd297b87a545980a2d25a0beb72a1f490c31f0a9fde52fca35bfbb1ceb70" 1569"checksum redox_syscall 0.1.49 (registry+https://github.com/rust-lang/crates.io-index)" = "f22c50afdcf3f0a31ebb6b47697f6a7c5e5a24967e842858118bce0615f0afad"
1580"checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" 1570"checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76"
1581"checksum regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "37e7cbbd370869ce2e8dff25c7018702d10b21a20ef7135316f8daecd6c25b7f" 1571"checksum regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "37e7cbbd370869ce2e8dff25c7018702d10b21a20ef7135316f8daecd6c25b7f"
1582"checksum regex-syntax 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4e47a2ed29da7a9e1960e1639e7a982e6edc6d49be308a3b02daf511504a16d1" 1572"checksum regex-syntax 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4e47a2ed29da7a9e1960e1639e7a982e6edc6d49be308a3b02daf511504a16d1"
@@ -1596,7 +1586,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1596"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" 1586"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
1597"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" 1587"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
1598"checksum serde 1.0.83 (registry+https://github.com/rust-lang/crates.io-index)" = "157e12af46859e968da75dea9845530e13d03bcab2009a41b9b7bb3cf4eb3ec2" 1588"checksum serde 1.0.83 (registry+https://github.com/rust-lang/crates.io-index)" = "157e12af46859e968da75dea9845530e13d03bcab2009a41b9b7bb3cf4eb3ec2"
1599"checksum serde_derive 1.0.82 (registry+https://github.com/rust-lang/crates.io-index)" = "96a7f9496ac65a2db5929afa087b54f8fc5008dcfbe48a8874ed20049b0d6154" 1589"checksum serde_derive 1.0.83 (registry+https://github.com/rust-lang/crates.io-index)" = "9469829702497daf2daf3c190e130c3fa72f719920f73c86160d43e8f8d76951"
1600"checksum serde_json 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)" = "bdf540260cfee6da923831f4776ddc495ada940c30117977c70f1313a6130545" 1590"checksum serde_json 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)" = "bdf540260cfee6da923831f4776ddc495ada940c30117977c70f1313a6130545"
1601"checksum sha-1 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "51b9d1f3b5de8a167ab06834a7c883bd197f2191e1dda1a22d9ccfeedbf9aded" 1591"checksum sha-1 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "51b9d1f3b5de8a167ab06834a7c883bd197f2191e1dda1a22d9ccfeedbf9aded"
1602"checksum slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b3bc762e6a4b6c6fcaade73e77f9ebc6991b676f88bb2358bddb56560f073373" 1592"checksum slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b3bc762e6a4b6c6fcaade73e77f9ebc6991b676f88bb2358bddb56560f073373"
@@ -1605,7 +1595,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1605"checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" 1595"checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8"
1606"checksum strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550" 1596"checksum strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550"
1607"checksum superslice 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b50b13d42370e0f5fc62eafdd5c2d20065eaf5458dab215ff3e20e63eea96b30" 1597"checksum superslice 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b50b13d42370e0f5fc62eafdd5c2d20065eaf5458dab215ff3e20e63eea96b30"
1608"checksum syn 0.14.9 (registry+https://github.com/rust-lang/crates.io-index)" = "261ae9ecaa397c42b960649561949d69311f08eeaea86a65696e6e46517cf741"
1609"checksum syn 0.15.23 (registry+https://github.com/rust-lang/crates.io-index)" = "9545a6a093a3f0bd59adb472700acc08cad3776f860f16a897dfce8c88721cbc" 1598"checksum syn 0.15.23 (registry+https://github.com/rust-lang/crates.io-index)" = "9545a6a093a3f0bd59adb472700acc08cad3776f860f16a897dfce8c88721cbc"
1610"checksum synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "73687139bf99285483c96ac0add482c3776528beac1d97d444f6e91f203a2015" 1599"checksum synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "73687139bf99285483c96ac0add482c3776528beac1d97d444f6e91f203a2015"
1611"checksum tempfile 3.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "7e91405c14320e5c79b3d148e1c86f40749a36e490642202a31689cb1a3452b2" 1600"checksum tempfile 3.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "7e91405c14320e5c79b3d148e1c86f40749a36e490642202a31689cb1a3452b2"
diff --git a/crates/ra_lsp_server/src/caps.rs b/crates/ra_lsp_server/src/caps.rs
index 8d508a3ba..a74f9f27b 100644
--- a/crates/ra_lsp_server/src/caps.rs
+++ b/crates/ra_lsp_server/src/caps.rs
@@ -28,7 +28,7 @@ pub fn server_capabilities() -> ServerCapabilities {
28 type_definition_provider: None, 28 type_definition_provider: None,
29 implementation_provider: None, 29 implementation_provider: None,
30 references_provider: Some(true), 30 references_provider: Some(true),
31 document_highlight_provider: None, 31 document_highlight_provider: Some(true),
32 document_symbol_provider: Some(true), 32 document_symbol_provider: Some(true),
33 workspace_symbol_provider: Some(true), 33 workspace_symbol_provider: Some(true),
34 code_action_provider: Some(CodeActionProviderCapability::Simple(true)), 34 code_action_provider: Some(CodeActionProviderCapability::Simple(true)),
diff --git a/crates/ra_lsp_server/src/conv.rs b/crates/ra_lsp_server/src/conv.rs
index 0d6e62727..618486250 100644
--- a/crates/ra_lsp_server/src/conv.rs
+++ b/crates/ra_lsp_server/src/conv.rs
@@ -82,7 +82,6 @@ impl Conv for CompletionItem {
82 InsertText::Snippet { text } => { 82 InsertText::Snippet { text } => {
83 res.insert_text = Some(text); 83 res.insert_text = Some(text);
84 res.insert_text_format = Some(InsertTextFormat::Snippet); 84 res.insert_text_format = Some(InsertTextFormat::Snippet);
85 res.kind = Some(languageserver_types::CompletionItemKind::Keyword);
86 } 85 }
87 } 86 }
88 res 87 res
diff --git a/crates/ra_lsp_server/src/main_loop.rs b/crates/ra_lsp_server/src/main_loop.rs
index d425b6733..06dd373c0 100644
--- a/crates/ra_lsp_server/src/main_loop.rs
+++ b/crates/ra_lsp_server/src/main_loop.rs
@@ -300,6 +300,7 @@ fn on_request(
300 .on::<req::Rename>(handlers::handle_rename)? 300 .on::<req::Rename>(handlers::handle_rename)?
301 .on::<req::References>(handlers::handle_references)? 301 .on::<req::References>(handlers::handle_references)?
302 .on::<req::Formatting>(handlers::handle_formatting)? 302 .on::<req::Formatting>(handlers::handle_formatting)?
303 .on::<req::DocumentHighlightRequest>(handlers::handle_document_highlight)?
303 .finish(); 304 .finish();
304 match req { 305 match req {
305 Ok(id) => { 306 Ok(id) => {
diff --git a/crates/ra_lsp_server/src/main_loop/handlers.rs b/crates/ra_lsp_server/src/main_loop/handlers.rs
index 1d93e8f4d..11825d74e 100644
--- a/crates/ra_lsp_server/src/main_loop/handlers.rs
+++ b/crates/ra_lsp_server/src/main_loop/handlers.rs
@@ -6,9 +6,8 @@ use languageserver_types::{
6 DiagnosticSeverity, DocumentSymbol, Documentation, FoldingRange, FoldingRangeKind, 6 DiagnosticSeverity, DocumentSymbol, Documentation, FoldingRange, FoldingRangeKind,
7 FoldingRangeParams, Location, MarkupContent, MarkupKind, MarkedString, Position, 7 FoldingRangeParams, Location, MarkupContent, MarkupKind, MarkedString, Position,
8 PrepareRenameResponse, RenameParams, SymbolInformation, TextDocumentIdentifier, TextEdit, 8 PrepareRenameResponse, RenameParams, SymbolInformation, TextDocumentIdentifier, TextEdit,
9 Range, 9 Range, WorkspaceEdit, ParameterInformation, ParameterLabel, SignatureInformation, Hover,
10 WorkspaceEdit, ParameterInformation, ParameterLabel, SignatureInformation, Hover, HoverContents, 10 HoverContents, DocumentFormattingParams, DocumentHighlight,
11 DocumentFormattingParams,
12}; 11};
13use ra_analysis::{FileId, FoldKind, Query, RunnableKind, FileRange, FilePosition, Severity}; 12use ra_analysis::{FileId, FoldKind, Query, RunnableKind, FileRange, FilePosition, Severity};
14use ra_syntax::{TextUnit, text_utils::intersect}; 13use ra_syntax::{TextUnit, text_utils::intersect};
@@ -678,6 +677,27 @@ pub fn handle_code_action(
678 Ok(Some(CodeActionResponse::Commands(res))) 677 Ok(Some(CodeActionResponse::Commands(res)))
679} 678}
680 679
680pub fn handle_document_highlight(
681 world: ServerWorld,
682 params: req::TextDocumentPositionParams,
683) -> Result<Option<Vec<DocumentHighlight>>> {
684 let file_id = params.text_document.try_conv_with(&world)?;
685 let line_index = world.analysis().file_line_index(file_id);
686
687 let refs = world
688 .analysis()
689 .find_all_refs(params.try_conv_with(&world)?)?;
690
691 Ok(Some(
692 refs.into_iter()
693 .map(|r| DocumentHighlight {
694 range: r.1.conv_with(&line_index),
695 kind: None,
696 })
697 .collect(),
698 ))
699}
700
681pub fn publish_diagnostics( 701pub fn publish_diagnostics(
682 world: &ServerWorld, 702 world: &ServerWorld,
683 file_id: FileId, 703 file_id: FileId,
diff --git a/crates/tools/src/lib.rs b/crates/tools/src/lib.rs
index e5b32c25c..fa619af33 100644
--- a/crates/tools/src/lib.rs
+++ b/crates/tools/src/lib.rs
@@ -139,3 +139,20 @@ pub fn install_format_hook() -> Result<()> {
139 } 139 }
140 Ok(()) 140 Ok(())
141} 141}
142
143pub fn run_fuzzer() -> Result<()> {
144 match Command::new("cargo")
145 .args(&["fuzz", "--help"])
146 .stderr(Stdio::null())
147 .stdout(Stdio::null())
148 .status()
149 {
150 Ok(status) if status.success() => (),
151 _ => run("cargo install cargo-fuzz", ".")?,
152 };
153
154 run(
155 "rustup run nightly -- cargo fuzz run parser",
156 "./crates/ra_syntax",
157 )
158}
diff --git a/crates/tools/src/main.rs b/crates/tools/src/main.rs
index 7edf8f52d..9d73d57c4 100644
--- a/crates/tools/src/main.rs
+++ b/crates/tools/src/main.rs
@@ -7,7 +7,10 @@ use std::{
7use clap::{App, Arg, SubCommand}; 7use clap::{App, Arg, SubCommand};
8use failure::bail; 8use failure::bail;
9 9
10use tools::{collect_tests, generate, install_format_hook, run, run_rustfmt, Mode, Overwrite, Result, Test, Verify, project_root}; 10use tools::{
11 collect_tests, generate,install_format_hook, run, run_rustfmt,
12 Mode, Overwrite, Result, Test, Verify, project_root, run_fuzzer
13};
11 14
12const GRAMMAR_DIR: &str = "crates/ra_syntax/src/grammar"; 15const GRAMMAR_DIR: &str = "crates/ra_syntax/src/grammar";
13const OK_INLINE_TESTS_DIR: &str = "crates/ra_syntax/tests/data/parser/inline/ok"; 16const OK_INLINE_TESTS_DIR: &str = "crates/ra_syntax/tests/data/parser/inline/ok";
@@ -27,6 +30,7 @@ fn main() -> Result<()> {
27 .subcommand(SubCommand::with_name("install-code")) 30 .subcommand(SubCommand::with_name("install-code"))
28 .subcommand(SubCommand::with_name("format")) 31 .subcommand(SubCommand::with_name("format"))
29 .subcommand(SubCommand::with_name("format-hook")) 32 .subcommand(SubCommand::with_name("format-hook"))
33 .subcommand(SubCommand::with_name("fuzz-tests"))
30 .get_matches(); 34 .get_matches();
31 let mode = if matches.is_present("verify") { 35 let mode = if matches.is_present("verify") {
32 Verify 36 Verify
@@ -42,6 +46,7 @@ fn main() -> Result<()> {
42 "gen-syntax" => generate(Overwrite)?, 46 "gen-syntax" => generate(Overwrite)?,
43 "format" => run_rustfmt(mode)?, 47 "format" => run_rustfmt(mode)?,
44 "format-hook" => install_format_hook()?, 48 "format-hook" => install_format_hook()?,
49 "fuzz-tests" => run_fuzzer()?,
45 _ => unreachable!(), 50 _ => unreachable!(),
46 } 51 }
47 Ok(()) 52 Ok(())