diff options
27 files changed, 168 insertions, 106 deletions
diff --git a/Cargo.lock b/Cargo.lock index 76a26ea4e..557d5f5f3 100644 --- a/Cargo.lock +++ b/Cargo.lock | |||
@@ -4,9 +4,9 @@ version = 3 | |||
4 | 4 | ||
5 | [[package]] | 5 | [[package]] |
6 | name = "addr2line" | 6 | name = "addr2line" |
7 | version = "0.14.1" | 7 | version = "0.15.1" |
8 | source = "registry+https://github.com/rust-lang/crates.io-index" | 8 | source = "registry+https://github.com/rust-lang/crates.io-index" |
9 | checksum = "a55f82cfe485775d02112886f4169bde0c5894d75e79ead7eafe7e40a25e45f7" | 9 | checksum = "03345e98af8f3d786b6d9f656ccfa6ac316d954e92bc4841f0bba20789d5fb5a" |
10 | dependencies = [ | 10 | dependencies = [ |
11 | "gimli", | 11 | "gimli", |
12 | ] | 12 | ] |
@@ -72,9 +72,9 @@ checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" | |||
72 | 72 | ||
73 | [[package]] | 73 | [[package]] |
74 | name = "backtrace" | 74 | name = "backtrace" |
75 | version = "0.3.58" | 75 | version = "0.3.59" |
76 | source = "registry+https://github.com/rust-lang/crates.io-index" | 76 | source = "registry+https://github.com/rust-lang/crates.io-index" |
77 | checksum = "88fb5a785d6b44fd9d6700935608639af1b8356de1e55d5f7c2740f4faa15d82" | 77 | checksum = "4717cfcbfaa661a0fd48f8453951837ae7e8f81e481fbb136e3202d72805a744" |
78 | dependencies = [ | 78 | dependencies = [ |
79 | "addr2line", | 79 | "addr2line", |
80 | "cc", | 80 | "cc", |
@@ -169,9 +169,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" | |||
169 | 169 | ||
170 | [[package]] | 170 | [[package]] |
171 | name = "chalk-derive" | 171 | name = "chalk-derive" |
172 | version = "0.64.0" | 172 | version = "0.67.0" |
173 | source = "registry+https://github.com/rust-lang/crates.io-index" | 173 | source = "registry+https://github.com/rust-lang/crates.io-index" |
174 | checksum = "d9acf2a9eab79ae7d44cd77ad86a8b1569d7a5e6d9a7db4a0a57a7344dd82c24" | 174 | checksum = "751a3cd9eeb24d7165e9f90daf1f10a23ffa16a7986f349027f8dfb60f51ee0c" |
175 | dependencies = [ | 175 | dependencies = [ |
176 | "proc-macro2", | 176 | "proc-macro2", |
177 | "quote", | 177 | "quote", |
@@ -181,9 +181,9 @@ dependencies = [ | |||
181 | 181 | ||
182 | [[package]] | 182 | [[package]] |
183 | name = "chalk-ir" | 183 | name = "chalk-ir" |
184 | version = "0.64.0" | 184 | version = "0.67.0" |
185 | source = "registry+https://github.com/rust-lang/crates.io-index" | 185 | source = "registry+https://github.com/rust-lang/crates.io-index" |
186 | checksum = "877661627f54ba3666a72943c43b326cb170d60899e50a8426111e7a657ff032" | 186 | checksum = "4236da905504740d3f72cc8f0509aa01321cc236208e2c33b55eda2db74bc495" |
187 | dependencies = [ | 187 | dependencies = [ |
188 | "bitflags", | 188 | "bitflags", |
189 | "chalk-derive", | 189 | "chalk-derive", |
@@ -192,9 +192,9 @@ dependencies = [ | |||
192 | 192 | ||
193 | [[package]] | 193 | [[package]] |
194 | name = "chalk-recursive" | 194 | name = "chalk-recursive" |
195 | version = "0.64.0" | 195 | version = "0.67.0" |
196 | source = "registry+https://github.com/rust-lang/crates.io-index" | 196 | source = "registry+https://github.com/rust-lang/crates.io-index" |
197 | checksum = "072ffcf17243c2aa3e4b9ea6de3d29e7ef64cfdb0ceccaa431965070a1dc1475" | 197 | checksum = "7d0b123fe45a34c4cd5cb329650a0d163525d2acbe9d754a4538d3340884002e" |
198 | dependencies = [ | 198 | dependencies = [ |
199 | "chalk-derive", | 199 | "chalk-derive", |
200 | "chalk-ir", | 200 | "chalk-ir", |
@@ -205,9 +205,9 @@ dependencies = [ | |||
205 | 205 | ||
206 | [[package]] | 206 | [[package]] |
207 | name = "chalk-solve" | 207 | name = "chalk-solve" |
208 | version = "0.64.0" | 208 | version = "0.67.0" |
209 | source = "registry+https://github.com/rust-lang/crates.io-index" | 209 | source = "registry+https://github.com/rust-lang/crates.io-index" |
210 | checksum = "97d4920c9ef2b26dd0b98ffdf070e27fa31e0b6f637463132083cee597e3d326" | 210 | checksum = "9c54788f0ae3b38e2bb2266f395d462d988c64f92dbd55c68219908fd1ce7ddc" |
211 | dependencies = [ | 211 | dependencies = [ |
212 | "chalk-derive", | 212 | "chalk-derive", |
213 | "chalk-ir", | 213 | "chalk-ir", |
@@ -452,9 +452,9 @@ checksum = "e398fae362f4124bbe630d99519fb2d68a03e2e3a23b441028cdcdc4f4895687" | |||
452 | 452 | ||
453 | [[package]] | 453 | [[package]] |
454 | name = "gimli" | 454 | name = "gimli" |
455 | version = "0.23.0" | 455 | version = "0.24.0" |
456 | source = "registry+https://github.com/rust-lang/crates.io-index" | 456 | source = "registry+https://github.com/rust-lang/crates.io-index" |
457 | checksum = "f6503fe142514ca4799d4c26297c4248239fe8838d827db6bd6065c6ed29a6ce" | 457 | checksum = "0e4075386626662786ddb0ec9081e7c7eeb1ba31951f447ca780ef9f5d568189" |
458 | 458 | ||
459 | [[package]] | 459 | [[package]] |
460 | name = "hashbrown" | 460 | name = "hashbrown" |
@@ -715,9 +715,9 @@ dependencies = [ | |||
715 | 715 | ||
716 | [[package]] | 716 | [[package]] |
717 | name = "inotify" | 717 | name = "inotify" |
718 | version = "0.9.2" | 718 | version = "0.9.3" |
719 | source = "registry+https://github.com/rust-lang/crates.io-index" | 719 | source = "registry+https://github.com/rust-lang/crates.io-index" |
720 | checksum = "d19f57db1baad9d09e43a3cd76dcf82ebdafd37d75c9498b87762dba77c93f15" | 720 | checksum = "b031475cb1b103ee221afb806a23d35e0570bf7271d7588762ceba8127ed43b3" |
721 | dependencies = [ | 721 | dependencies = [ |
722 | "bitflags", | 722 | "bitflags", |
723 | "inotify-sys", | 723 | "inotify-sys", |
@@ -830,9 +830,9 @@ dependencies = [ | |||
830 | 830 | ||
831 | [[package]] | 831 | [[package]] |
832 | name = "lsp-types" | 832 | name = "lsp-types" |
833 | version = "0.89.0" | 833 | version = "0.89.1" |
834 | source = "registry+https://github.com/rust-lang/crates.io-index" | 834 | source = "registry+https://github.com/rust-lang/crates.io-index" |
835 | checksum = "07731ecd4ee0654728359a5b95e2a254c857876c04b85225496a35d60345daa7" | 835 | checksum = "48b8a871b0a450bcec0e26d74a59583c8173cb9fb7d7f98889e18abb84838e0f" |
836 | dependencies = [ | 836 | dependencies = [ |
837 | "bitflags", | 837 | "bitflags", |
838 | "serde", | 838 | "serde", |
@@ -995,9 +995,9 @@ dependencies = [ | |||
995 | 995 | ||
996 | [[package]] | 996 | [[package]] |
997 | name = "object" | 997 | name = "object" |
998 | version = "0.23.0" | 998 | version = "0.24.0" |
999 | source = "registry+https://github.com/rust-lang/crates.io-index" | 999 | source = "registry+https://github.com/rust-lang/crates.io-index" |
1000 | checksum = "a9a7ab5d64814df0fe4a4b5ead45ed6c5f181ee3ff04ba344313a6c80446c5d4" | 1000 | checksum = "1a5b3dd1c072ee7963717671d1ca129f1048fda25edea6b752bfc71ac8854170" |
1001 | 1001 | ||
1002 | [[package]] | 1002 | [[package]] |
1003 | name = "once_cell" | 1003 | name = "once_cell" |
@@ -1124,9 +1124,9 @@ checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" | |||
1124 | 1124 | ||
1125 | [[package]] | 1125 | [[package]] |
1126 | name = "proc-macro2" | 1126 | name = "proc-macro2" |
1127 | version = "1.0.26" | 1127 | version = "1.0.27" |
1128 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1128 | source = "registry+https://github.com/rust-lang/crates.io-index" |
1129 | checksum = "a152013215dca273577e18d2bf00fa862b89b24169fb78c4c95aeb07992c9cec" | 1129 | checksum = "f0d8caf72986c1a598726adc988bb5984792ef84f5ee5aa50209145ee8077038" |
1130 | dependencies = [ | 1130 | dependencies = [ |
1131 | "unicode-xid", | 1131 | "unicode-xid", |
1132 | ] | 1132 | ] |
@@ -1235,9 +1235,9 @@ dependencies = [ | |||
1235 | 1235 | ||
1236 | [[package]] | 1236 | [[package]] |
1237 | name = "rayon" | 1237 | name = "rayon" |
1238 | version = "1.5.0" | 1238 | version = "1.5.1" |
1239 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1239 | source = "registry+https://github.com/rust-lang/crates.io-index" |
1240 | checksum = "8b0d8e0819fadc20c74ea8373106ead0600e3a67ef1fe8da56e39b9ae7275674" | 1240 | checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90" |
1241 | dependencies = [ | 1241 | dependencies = [ |
1242 | "autocfg", | 1242 | "autocfg", |
1243 | "crossbeam-deque", | 1243 | "crossbeam-deque", |
@@ -1247,9 +1247,9 @@ dependencies = [ | |||
1247 | 1247 | ||
1248 | [[package]] | 1248 | [[package]] |
1249 | name = "rayon-core" | 1249 | name = "rayon-core" |
1250 | version = "1.9.0" | 1250 | version = "1.9.1" |
1251 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1251 | source = "registry+https://github.com/rust-lang/crates.io-index" |
1252 | checksum = "9ab346ac5921dc62ffa9f89b7a773907511cdfa5490c572ae9be1be33e8afa4a" | 1252 | checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e" |
1253 | dependencies = [ | 1253 | dependencies = [ |
1254 | "crossbeam-channel", | 1254 | "crossbeam-channel", |
1255 | "crossbeam-deque", | 1255 | "crossbeam-deque", |
@@ -1260,18 +1260,18 @@ dependencies = [ | |||
1260 | 1260 | ||
1261 | [[package]] | 1261 | [[package]] |
1262 | name = "redox_syscall" | 1262 | name = "redox_syscall" |
1263 | version = "0.2.7" | 1263 | version = "0.2.8" |
1264 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1264 | source = "registry+https://github.com/rust-lang/crates.io-index" |
1265 | checksum = "85dd92e586f7355c633911e11f77f3d12f04b1b1bd76a198bd34ae3af8341ef2" | 1265 | checksum = "742739e41cd49414de871ea5e549afb7e2a3ac77b589bcbebe8c82fab37147fc" |
1266 | dependencies = [ | 1266 | dependencies = [ |
1267 | "bitflags", | 1267 | "bitflags", |
1268 | ] | 1268 | ] |
1269 | 1269 | ||
1270 | [[package]] | 1270 | [[package]] |
1271 | name = "regex" | 1271 | name = "regex" |
1272 | version = "1.5.3" | 1272 | version = "1.5.4" |
1273 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1273 | source = "registry+https://github.com/rust-lang/crates.io-index" |
1274 | checksum = "ce5f1ceb7f74abbce32601642fcf8e8508a8a8991e0621c7d750295b9095702b" | 1274 | checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461" |
1275 | dependencies = [ | 1275 | dependencies = [ |
1276 | "regex-syntax", | 1276 | "regex-syntax", |
1277 | ] | 1277 | ] |
@@ -1359,18 +1359,18 @@ dependencies = [ | |||
1359 | 1359 | ||
1360 | [[package]] | 1360 | [[package]] |
1361 | name = "rustc-ap-rustc_lexer" | 1361 | name = "rustc-ap-rustc_lexer" |
1362 | version = "716.0.0" | 1362 | version = "720.0.0" |
1363 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1363 | source = "registry+https://github.com/rust-lang/crates.io-index" |
1364 | checksum = "12eac7554c1d3f49f105f14d53c0f3402220e875983113562701d8e597a0995c" | 1364 | checksum = "a025b453b0ae85335336f991f920ca9af5c0dc851171cb9035a16cea5619e9b2" |
1365 | dependencies = [ | 1365 | dependencies = [ |
1366 | "unicode-xid", | 1366 | "unicode-xid", |
1367 | ] | 1367 | ] |
1368 | 1368 | ||
1369 | [[package]] | 1369 | [[package]] |
1370 | name = "rustc-demangle" | 1370 | name = "rustc-demangle" |
1371 | version = "0.1.18" | 1371 | version = "0.1.19" |
1372 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1372 | source = "registry+https://github.com/rust-lang/crates.io-index" |
1373 | checksum = "6e3bad0ee36814ca07d7968269dd4b7ec89ec2da10c4bb613928d3077083c232" | 1373 | checksum = "410f7acf3cb3a44527c5d9546bad4bf4e6c460915d5f9f2fc524498bfe8f70ce" |
1374 | 1374 | ||
1375 | [[package]] | 1375 | [[package]] |
1376 | name = "rustc-hash" | 1376 | name = "rustc-hash" |
@@ -1455,18 +1455,18 @@ dependencies = [ | |||
1455 | 1455 | ||
1456 | [[package]] | 1456 | [[package]] |
1457 | name = "serde" | 1457 | name = "serde" |
1458 | version = "1.0.125" | 1458 | version = "1.0.126" |
1459 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1459 | source = "registry+https://github.com/rust-lang/crates.io-index" |
1460 | checksum = "558dc50e1a5a5fa7112ca2ce4effcb321b0300c0d4ccf0776a9f60cd89031171" | 1460 | checksum = "ec7505abeacaec74ae4778d9d9328fe5a5d04253220a85c4ee022239fc996d03" |
1461 | dependencies = [ | 1461 | dependencies = [ |
1462 | "serde_derive", | 1462 | "serde_derive", |
1463 | ] | 1463 | ] |
1464 | 1464 | ||
1465 | [[package]] | 1465 | [[package]] |
1466 | name = "serde_derive" | 1466 | name = "serde_derive" |
1467 | version = "1.0.125" | 1467 | version = "1.0.126" |
1468 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1468 | source = "registry+https://github.com/rust-lang/crates.io-index" |
1469 | checksum = "b093b7a2bb58203b5da3056c05b4ec1fed827dcfdb37347a8841695263b3d06d" | 1469 | checksum = "963a7dbc9895aeac7ac90e74f34a5d5261828f79df35cbed41e10189d3804d43" |
1470 | dependencies = [ | 1470 | dependencies = [ |
1471 | "proc-macro2", | 1471 | "proc-macro2", |
1472 | "quote", | 1472 | "quote", |
@@ -1496,9 +1496,9 @@ dependencies = [ | |||
1496 | 1496 | ||
1497 | [[package]] | 1497 | [[package]] |
1498 | name = "serde_repr" | 1498 | name = "serde_repr" |
1499 | version = "0.1.6" | 1499 | version = "0.1.7" |
1500 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1500 | source = "registry+https://github.com/rust-lang/crates.io-index" |
1501 | checksum = "2dc6b7951b17b051f3210b063f12cc17320e2fe30ae05b0fe2a3abb068551c76" | 1501 | checksum = "98d0516900518c29efa217c298fa1f4e6c6ffc85ae29fd7f4ee48f176e1a9ed5" |
1502 | dependencies = [ | 1502 | dependencies = [ |
1503 | "proc-macro2", | 1503 | "proc-macro2", |
1504 | "quote", | 1504 | "quote", |
@@ -1548,9 +1548,9 @@ dependencies = [ | |||
1548 | 1548 | ||
1549 | [[package]] | 1549 | [[package]] |
1550 | name = "syn" | 1550 | name = "syn" |
1551 | version = "1.0.71" | 1551 | version = "1.0.72" |
1552 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1552 | source = "registry+https://github.com/rust-lang/crates.io-index" |
1553 | checksum = "ad184cc9470f9117b2ac6817bfe297307418819ba40552f9b3846f05c33d5373" | 1553 | checksum = "a1e8cdbefb79a9a5a65e0db8b47b723ee907b7c7f8496c76a1770b5c310bab82" |
1554 | dependencies = [ | 1554 | dependencies = [ |
1555 | "proc-macro2", | 1555 | "proc-macro2", |
1556 | "quote", | 1556 | "quote", |
@@ -1848,9 +1848,9 @@ checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" | |||
1848 | 1848 | ||
1849 | [[package]] | 1849 | [[package]] |
1850 | name = "url" | 1850 | name = "url" |
1851 | version = "2.2.1" | 1851 | version = "2.2.2" |
1852 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1852 | source = "registry+https://github.com/rust-lang/crates.io-index" |
1853 | checksum = "9ccd964113622c8e9322cfac19eb1004a07e636c545f325da085d5cdde6f1f8b" | 1853 | checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c" |
1854 | dependencies = [ | 1854 | dependencies = [ |
1855 | "form_urlencoded", | 1855 | "form_urlencoded", |
1856 | "idna", | 1856 | "idna", |
@@ -1957,18 +1957,18 @@ dependencies = [ | |||
1957 | 1957 | ||
1958 | [[package]] | 1958 | [[package]] |
1959 | name = "xshell" | 1959 | name = "xshell" |
1960 | version = "0.1.10" | 1960 | version = "0.1.13" |
1961 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1961 | source = "registry+https://github.com/rust-lang/crates.io-index" |
1962 | checksum = "aa25217c682f9f991d7889238a99e65eb8431c266d36e0f4e850a73773415473" | 1962 | checksum = "eb15bb1b41eb14efe628006294c294e10c366e03a0283b9c2063fc27d97934c6" |
1963 | dependencies = [ | 1963 | dependencies = [ |
1964 | "xshell-macros", | 1964 | "xshell-macros", |
1965 | ] | 1965 | ] |
1966 | 1966 | ||
1967 | [[package]] | 1967 | [[package]] |
1968 | name = "xshell-macros" | 1968 | name = "xshell-macros" |
1969 | version = "0.1.10" | 1969 | version = "0.1.13" |
1970 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1970 | source = "registry+https://github.com/rust-lang/crates.io-index" |
1971 | checksum = "4404d53d2113af4fa31c58326eb7b37d6d7bf11ba87520787cddeaff45385c72" | 1971 | checksum = "cf7ed94a2c75b9bcc57031229be2b57ee47ba71122f71aabef8610ec66a97e52" |
1972 | 1972 | ||
1973 | [[package]] | 1973 | [[package]] |
1974 | name = "xtask" | 1974 | name = "xtask" |
diff --git a/crates/hir/src/semantics.rs b/crates/hir/src/semantics.rs index 3aa467e3c..8d3c43d08 100644 --- a/crates/hir/src/semantics.rs +++ b/crates/hir/src/semantics.rs | |||
@@ -120,10 +120,10 @@ impl<'db, DB: HirDatabase> Semantics<'db, DB> { | |||
120 | pub fn speculative_expand( | 120 | pub fn speculative_expand( |
121 | &self, | 121 | &self, |
122 | actual_macro_call: &ast::MacroCall, | 122 | actual_macro_call: &ast::MacroCall, |
123 | hypothetical_args: &ast::TokenTree, | 123 | speculative_args: &ast::TokenTree, |
124 | token_to_map: SyntaxToken, | 124 | token_to_map: SyntaxToken, |
125 | ) -> Option<(SyntaxNode, SyntaxToken)> { | 125 | ) -> Option<(SyntaxNode, SyntaxToken)> { |
126 | self.imp.speculative_expand(actual_macro_call, hypothetical_args, token_to_map) | 126 | self.imp.speculative_expand(actual_macro_call, speculative_args, token_to_map) |
127 | } | 127 | } |
128 | 128 | ||
129 | pub fn descend_into_macros(&self, token: SyntaxToken) -> SyntaxToken { | 129 | pub fn descend_into_macros(&self, token: SyntaxToken) -> SyntaxToken { |
@@ -335,7 +335,7 @@ impl<'db> SemanticsImpl<'db> { | |||
335 | fn speculative_expand( | 335 | fn speculative_expand( |
336 | &self, | 336 | &self, |
337 | actual_macro_call: &ast::MacroCall, | 337 | actual_macro_call: &ast::MacroCall, |
338 | hypothetical_args: &ast::TokenTree, | 338 | speculative_args: &ast::TokenTree, |
339 | token_to_map: SyntaxToken, | 339 | token_to_map: SyntaxToken, |
340 | ) -> Option<(SyntaxNode, SyntaxToken)> { | 340 | ) -> Option<(SyntaxNode, SyntaxToken)> { |
341 | let sa = self.analyze(actual_macro_call.syntax()); | 341 | let sa = self.analyze(actual_macro_call.syntax()); |
@@ -344,10 +344,10 @@ impl<'db> SemanticsImpl<'db> { | |||
344 | let macro_call_id = macro_call.as_call_id(self.db.upcast(), krate, |path| { | 344 | let macro_call_id = macro_call.as_call_id(self.db.upcast(), krate, |path| { |
345 | sa.resolver.resolve_path_as_macro(self.db.upcast(), &path) | 345 | sa.resolver.resolve_path_as_macro(self.db.upcast(), &path) |
346 | })?; | 346 | })?; |
347 | hir_expand::db::expand_hypothetical( | 347 | hir_expand::db::expand_speculative( |
348 | self.db.upcast(), | 348 | self.db.upcast(), |
349 | macro_call_id, | 349 | macro_call_id, |
350 | hypothetical_args, | 350 | speculative_args, |
351 | token_to_map, | 351 | token_to_map, |
352 | ) | 352 | ) |
353 | } | 353 | } |
diff --git a/crates/hir_expand/src/db.rs b/crates/hir_expand/src/db.rs index 03637878b..625c26f0a 100644 --- a/crates/hir_expand/src/db.rs +++ b/crates/hir_expand/src/db.rs | |||
@@ -131,15 +131,15 @@ pub trait AstDatabase: SourceDatabase { | |||
131 | /// used for completion, where we want to see what 'would happen' if we insert a | 131 | /// used for completion, where we want to see what 'would happen' if we insert a |
132 | /// token. The `token_to_map` mapped down into the expansion, with the mapped | 132 | /// token. The `token_to_map` mapped down into the expansion, with the mapped |
133 | /// token returned. | 133 | /// token returned. |
134 | pub fn expand_hypothetical( | 134 | pub fn expand_speculative( |
135 | db: &dyn AstDatabase, | 135 | db: &dyn AstDatabase, |
136 | actual_macro_call: MacroCallId, | 136 | actual_macro_call: MacroCallId, |
137 | hypothetical_args: &ast::TokenTree, | 137 | speculative_args: &ast::TokenTree, |
138 | token_to_map: SyntaxToken, | 138 | token_to_map: SyntaxToken, |
139 | ) -> Option<(SyntaxNode, SyntaxToken)> { | 139 | ) -> Option<(SyntaxNode, SyntaxToken)> { |
140 | let (tt, tmap_1) = mbe::syntax_node_to_token_tree(hypothetical_args.syntax()); | 140 | let (tt, tmap_1) = mbe::syntax_node_to_token_tree(speculative_args.syntax()); |
141 | let range = | 141 | let range = |
142 | token_to_map.text_range().checked_sub(hypothetical_args.syntax().text_range().start())?; | 142 | token_to_map.text_range().checked_sub(speculative_args.syntax().text_range().start())?; |
143 | let token_id = tmap_1.token_by_range(range)?; | 143 | let token_id = tmap_1.token_by_range(range)?; |
144 | 144 | ||
145 | let macro_def = { | 145 | let macro_def = { |
@@ -147,12 +147,12 @@ pub fn expand_hypothetical( | |||
147 | db.macro_def(loc.def)? | 147 | db.macro_def(loc.def)? |
148 | }; | 148 | }; |
149 | 149 | ||
150 | let hypothetical_expansion = macro_def.expand(db, actual_macro_call, &tt); | 150 | let speculative_expansion = macro_def.expand(db, actual_macro_call, &tt); |
151 | 151 | ||
152 | let fragment_kind = macro_fragment_kind(db, actual_macro_call); | 152 | let fragment_kind = macro_fragment_kind(db, actual_macro_call); |
153 | 153 | ||
154 | let (node, tmap_2) = | 154 | let (node, tmap_2) = |
155 | mbe::token_tree_to_syntax_node(&hypothetical_expansion.value, fragment_kind).ok()?; | 155 | mbe::token_tree_to_syntax_node(&speculative_expansion.value, fragment_kind).ok()?; |
156 | 156 | ||
157 | let token_id = macro_def.map_id_down(token_id); | 157 | let token_id = macro_def.map_id_down(token_id); |
158 | let range = tmap_2.range_by_token(token_id, token_to_map.kind())?; | 158 | let range = tmap_2.range_by_token(token_id, token_to_map.kind())?; |
@@ -325,7 +325,7 @@ fn macro_expand_with_arg( | |||
325 | if let Some(eager) = &loc.eager { | 325 | if let Some(eager) = &loc.eager { |
326 | if arg.is_some() { | 326 | if arg.is_some() { |
327 | return ExpandResult::str_err( | 327 | return ExpandResult::str_err( |
328 | "hypothetical macro expansion not implemented for eager macro".to_owned(), | 328 | "speculative macro expansion not implemented for eager macro".to_owned(), |
329 | ); | 329 | ); |
330 | } else { | 330 | } else { |
331 | return ExpandResult { | 331 | return ExpandResult { |
diff --git a/crates/hir_ty/Cargo.toml b/crates/hir_ty/Cargo.toml index 66b3418f2..a9994082a 100644 --- a/crates/hir_ty/Cargo.toml +++ b/crates/hir_ty/Cargo.toml | |||
@@ -18,9 +18,9 @@ ena = "0.14.0" | |||
18 | log = "0.4.8" | 18 | log = "0.4.8" |
19 | rustc-hash = "1.1.0" | 19 | rustc-hash = "1.1.0" |
20 | scoped-tls = "1" | 20 | scoped-tls = "1" |
21 | chalk-solve = { version = "0.64", default-features = false } | 21 | chalk-solve = { version = "0.67", default-features = false } |
22 | chalk-ir = "0.64" | 22 | chalk-ir = "0.67" |
23 | chalk-recursive = "0.64" | 23 | chalk-recursive = "0.67" |
24 | la-arena = { version = "0.2.0", path = "../../lib/arena" } | 24 | la-arena = { version = "0.2.0", path = "../../lib/arena" } |
25 | 25 | ||
26 | stdx = { path = "../stdx", version = "0.0.0" } | 26 | stdx = { path = "../stdx", version = "0.0.0" } |
diff --git a/crates/hir_ty/src/lower.rs b/crates/hir_ty/src/lower.rs index 1645ac533..c83933c73 100644 --- a/crates/hir_ty/src/lower.rs +++ b/crates/hir_ty/src/lower.rs | |||
@@ -1026,7 +1026,7 @@ pub(crate) fn trait_environment_query( | |||
1026 | }; | 1026 | }; |
1027 | if let Some(AssocContainerId::TraitId(trait_id)) = container { | 1027 | if let Some(AssocContainerId::TraitId(trait_id)) = container { |
1028 | // add `Self: Trait<T1, T2, ...>` to the environment in trait | 1028 | // add `Self: Trait<T1, T2, ...>` to the environment in trait |
1029 | // function default implementations (and hypothetical code | 1029 | // function default implementations (and speculative code |
1030 | // inside consts or type aliases) | 1030 | // inside consts or type aliases) |
1031 | cov_mark::hit!(trait_self_implements_self); | 1031 | cov_mark::hit!(trait_self_implements_self); |
1032 | let substs = TyBuilder::type_params_subst(db, trait_id); | 1032 | let substs = TyBuilder::type_params_subst(db, trait_id); |
diff --git a/crates/ide/src/doc_links.rs b/crates/ide/src/doc_links.rs index 320694a17..ec3828ab2 100644 --- a/crates/ide/src/doc_links.rs +++ b/crates/ide/src/doc_links.rs | |||
@@ -286,7 +286,7 @@ fn get_doc_link(db: &RootDatabase, definition: Definition) -> Option<String> { | |||
286 | .and_then( | 286 | .and_then( |
287 | |url| if let Some(fragment) = fragment { url.join(&fragment).ok() } else { Some(url) }, | 287 | |url| if let Some(fragment) = fragment { url.join(&fragment).ok() } else { Some(url) }, |
288 | ) | 288 | ) |
289 | .map(|url| url.into_string()) | 289 | .map(|url| url.into()) |
290 | } | 290 | } |
291 | 291 | ||
292 | fn rewrite_intra_doc_link( | 292 | fn rewrite_intra_doc_link( |
@@ -325,7 +325,7 @@ fn rewrite_intra_doc_link( | |||
325 | }; | 325 | }; |
326 | } | 326 | } |
327 | 327 | ||
328 | Some((new_url.into_string(), strip_prefixes_suffixes(title).to_string())) | 328 | Some((new_url.into(), strip_prefixes_suffixes(title).to_string())) |
329 | } | 329 | } |
330 | 330 | ||
331 | /// Try to resolve path to local documentation via path-based links (i.e. `../gateway/struct.Shard.html`). | 331 | /// Try to resolve path to local documentation via path-based links (i.e. `../gateway/struct.Shard.html`). |
@@ -345,7 +345,7 @@ fn rewrite_url_link(db: &RootDatabase, def: ModuleDef, target: &str) -> Option<S | |||
345 | get_symbol_filename(db, &def).as_deref().map(|f| url.join(f).ok()).flatten() | 345 | get_symbol_filename(db, &def).as_deref().map(|f| url.join(f).ok()).flatten() |
346 | }) | 346 | }) |
347 | .and_then(|url| url.join(target).ok()) | 347 | .and_then(|url| url.join(target).ok()) |
348 | .map(|url| url.into_string()) | 348 | .map(|url| url.into()) |
349 | } | 349 | } |
350 | 350 | ||
351 | /// Rewrites a markdown document, applying 'callback' to each link. | 351 | /// Rewrites a markdown document, applying 'callback' to each link. |
diff --git a/crates/ide_completion/src/context.rs b/crates/ide_completion/src/context.rs index 1ec59ff80..2f3fb1710 100644 --- a/crates/ide_completion/src/context.rs +++ b/crates/ide_completion/src/context.rs | |||
@@ -196,46 +196,46 @@ impl<'a> CompletionContext<'a> { | |||
196 | }; | 196 | }; |
197 | 197 | ||
198 | let mut original_file = original_file.syntax().clone(); | 198 | let mut original_file = original_file.syntax().clone(); |
199 | let mut hypothetical_file = file_with_fake_ident.syntax().clone(); | 199 | let mut speculative_file = file_with_fake_ident.syntax().clone(); |
200 | let mut offset = position.offset; | 200 | let mut offset = position.offset; |
201 | let mut fake_ident_token = fake_ident_token; | 201 | let mut fake_ident_token = fake_ident_token; |
202 | 202 | ||
203 | // Are we inside a macro call? | 203 | // Are we inside a macro call? |
204 | while let (Some(actual_macro_call), Some(macro_call_with_fake_ident)) = ( | 204 | while let (Some(actual_macro_call), Some(macro_call_with_fake_ident)) = ( |
205 | find_node_at_offset::<ast::MacroCall>(&original_file, offset), | 205 | find_node_at_offset::<ast::MacroCall>(&original_file, offset), |
206 | find_node_at_offset::<ast::MacroCall>(&hypothetical_file, offset), | 206 | find_node_at_offset::<ast::MacroCall>(&speculative_file, offset), |
207 | ) { | 207 | ) { |
208 | if actual_macro_call.path().as_ref().map(|s| s.syntax().text()) | 208 | if actual_macro_call.path().as_ref().map(|s| s.syntax().text()) |
209 | != macro_call_with_fake_ident.path().as_ref().map(|s| s.syntax().text()) | 209 | != macro_call_with_fake_ident.path().as_ref().map(|s| s.syntax().text()) |
210 | { | 210 | { |
211 | break; | 211 | break; |
212 | } | 212 | } |
213 | let hypothetical_args = match macro_call_with_fake_ident.token_tree() { | 213 | let speculative_args = match macro_call_with_fake_ident.token_tree() { |
214 | Some(tt) => tt, | 214 | Some(tt) => tt, |
215 | None => break, | 215 | None => break, |
216 | }; | 216 | }; |
217 | if let (Some(actual_expansion), Some(hypothetical_expansion)) = ( | 217 | if let (Some(actual_expansion), Some(speculative_expansion)) = ( |
218 | ctx.sema.expand(&actual_macro_call), | 218 | ctx.sema.expand(&actual_macro_call), |
219 | ctx.sema.speculative_expand( | 219 | ctx.sema.speculative_expand( |
220 | &actual_macro_call, | 220 | &actual_macro_call, |
221 | &hypothetical_args, | 221 | &speculative_args, |
222 | fake_ident_token, | 222 | fake_ident_token, |
223 | ), | 223 | ), |
224 | ) { | 224 | ) { |
225 | let new_offset = hypothetical_expansion.1.text_range().start(); | 225 | let new_offset = speculative_expansion.1.text_range().start(); |
226 | if new_offset > actual_expansion.text_range().end() { | 226 | if new_offset > actual_expansion.text_range().end() { |
227 | break; | 227 | break; |
228 | } | 228 | } |
229 | original_file = actual_expansion; | 229 | original_file = actual_expansion; |
230 | hypothetical_file = hypothetical_expansion.0; | 230 | speculative_file = speculative_expansion.0; |
231 | fake_ident_token = hypothetical_expansion.1; | 231 | fake_ident_token = speculative_expansion.1; |
232 | offset = new_offset; | 232 | offset = new_offset; |
233 | } else { | 233 | } else { |
234 | break; | 234 | break; |
235 | } | 235 | } |
236 | } | 236 | } |
237 | ctx.fill_keyword_patterns(&hypothetical_file, offset); | 237 | ctx.fill_keyword_patterns(&speculative_file, offset); |
238 | ctx.fill(&original_file, hypothetical_file, offset); | 238 | ctx.fill(&original_file, speculative_file, offset); |
239 | Some(ctx) | 239 | Some(ctx) |
240 | } | 240 | } |
241 | 241 | ||
diff --git a/crates/ide_completion/src/lib.rs b/crates/ide_completion/src/lib.rs index 645349215..1152a9850 100644 --- a/crates/ide_completion/src/lib.rs +++ b/crates/ide_completion/src/lib.rs | |||
@@ -107,7 +107,7 @@ pub use crate::{ | |||
107 | /// identifier prefix/fuzzy match should be done higher in the stack, together | 107 | /// identifier prefix/fuzzy match should be done higher in the stack, together |
108 | /// with ordering of completions (currently this is done by the client). | 108 | /// with ordering of completions (currently this is done by the client). |
109 | /// | 109 | /// |
110 | /// # Hypothetical Completion Problem | 110 | /// # Speculative Completion Problem |
111 | /// | 111 | /// |
112 | /// There's a curious unsolved problem in the current implementation. Often, you | 112 | /// There's a curious unsolved problem in the current implementation. Often, you |
113 | /// want to compute completions on a *slightly different* text document. | 113 | /// want to compute completions on a *slightly different* text document. |
@@ -121,7 +121,7 @@ pub use crate::{ | |||
121 | /// doesn't allow such "phantom" inputs. | 121 | /// doesn't allow such "phantom" inputs. |
122 | /// | 122 | /// |
123 | /// Another case where this would be instrumental is macro expansion. We want to | 123 | /// Another case where this would be instrumental is macro expansion. We want to |
124 | /// insert a fake ident and re-expand code. There's `expand_hypothetical` as a | 124 | /// insert a fake ident and re-expand code. There's `expand_speculative` as a |
125 | /// work-around for this. | 125 | /// work-around for this. |
126 | /// | 126 | /// |
127 | /// A different use-case is completion of injection (examples and links in doc | 127 | /// A different use-case is completion of injection (examples and links in doc |
diff --git a/crates/proc_macro_api/Cargo.toml b/crates/proc_macro_api/Cargo.toml index 2ce5eeedd..2c4da394b 100644 --- a/crates/proc_macro_api/Cargo.toml +++ b/crates/proc_macro_api/Cargo.toml | |||
@@ -16,7 +16,7 @@ log = "0.4.8" | |||
16 | crossbeam-channel = "0.5.0" | 16 | crossbeam-channel = "0.5.0" |
17 | jod-thread = "0.1.1" | 17 | jod-thread = "0.1.1" |
18 | memmap2 = "0.2.0" | 18 | memmap2 = "0.2.0" |
19 | object = { version = "0.23.0", default-features = false, features = ["std", "read_core", "elf", "macho", "pe", "unaligned"] } | 19 | object = { version = "0.24", default-features = false, features = ["std", "read_core", "elf", "macho", "pe"] } |
20 | snap = "1.0" | 20 | snap = "1.0" |
21 | 21 | ||
22 | tt = { path = "../tt", version = "0.0.0" } | 22 | tt = { path = "../tt", version = "0.0.0" } |
diff --git a/crates/proc_macro_srv/Cargo.toml b/crates/proc_macro_srv/Cargo.toml index 63b3f1532..4ea41175e 100644 --- a/crates/proc_macro_srv/Cargo.toml +++ b/crates/proc_macro_srv/Cargo.toml | |||
@@ -10,7 +10,7 @@ edition = "2018" | |||
10 | doctest = false | 10 | doctest = false |
11 | 11 | ||
12 | [dependencies] | 12 | [dependencies] |
13 | object = { version = "0.23", default-features = false, features = ["std", "read_core", "elf", "macho", "pe"] } | 13 | object = { version = "0.24", default-features = false, features = ["std", "read_core", "elf", "macho", "pe"] } |
14 | libloading = "0.7.0" | 14 | libloading = "0.7.0" |
15 | memmap2 = "0.2.0" | 15 | memmap2 = "0.2.0" |
16 | 16 | ||
diff --git a/crates/proc_macro_srv/src/dylib.rs b/crates/proc_macro_srv/src/dylib.rs index baf10fea9..cccc53220 100644 --- a/crates/proc_macro_srv/src/dylib.rs +++ b/crates/proc_macro_srv/src/dylib.rs | |||
@@ -27,7 +27,7 @@ fn find_registrar_symbol(file: &Path) -> io::Result<Option<String>> { | |||
27 | let file = File::open(file)?; | 27 | let file = File::open(file)?; |
28 | let buffer = unsafe { Mmap::map(&file)? }; | 28 | let buffer = unsafe { Mmap::map(&file)? }; |
29 | 29 | ||
30 | Ok(object::File::parse(&buffer) | 30 | Ok(object::File::parse(&*buffer) |
31 | .map_err(invalid_data_err)? | 31 | .map_err(invalid_data_err)? |
32 | .exports() | 32 | .exports() |
33 | .map_err(invalid_data_err)? | 33 | .map_err(invalid_data_err)? |
diff --git a/crates/proc_macro_srv/src/tests/fixtures/test_serialize_proc_macro.txt b/crates/proc_macro_srv/src/tests/fixtures/test_serialize_proc_macro.txt index fa581f110..eb67c7134 100644 --- a/crates/proc_macro_srv/src/tests/fixtures/test_serialize_proc_macro.txt +++ b/crates/proc_macro_srv/src/tests/fixtures/test_serialize_proc_macro.txt | |||
@@ -23,7 +23,7 @@ SUBTREE $ | |||
23 | SUBTREE [] 4294967295 | 23 | SUBTREE [] 4294967295 |
24 | IDENT allow 4294967295 | 24 | IDENT allow 4294967295 |
25 | SUBTREE () 4294967295 | 25 | SUBTREE () 4294967295 |
26 | IDENT rust_2018_idioms 4294967295 | 26 | IDENT unused_extern_crates 4294967295 |
27 | PUNCH , [alone] 4294967295 | 27 | PUNCH , [alone] 4294967295 |
28 | IDENT clippy 4294967295 | 28 | IDENT clippy 4294967295 |
29 | PUNCH : [joint] 4294967295 | 29 | PUNCH : [joint] 4294967295 |
diff --git a/crates/project_model/src/cargo_workspace.rs b/crates/project_model/src/cargo_workspace.rs index ad705c752..a8fee4f08 100644 --- a/crates/project_model/src/cargo_workspace.rs +++ b/crates/project_model/src/cargo_workspace.rs | |||
@@ -121,7 +121,7 @@ pub struct PackageDependency { | |||
121 | pub kind: DepKind, | 121 | pub kind: DepKind, |
122 | } | 122 | } |
123 | 123 | ||
124 | #[derive(Debug, Clone, Eq, PartialEq)] | 124 | #[derive(Debug, Clone, Eq, PartialEq, PartialOrd, Ord)] |
125 | pub enum DepKind { | 125 | pub enum DepKind { |
126 | /// Available to the library, binary, and dev targets in the package (but not the build script). | 126 | /// Available to the library, binary, and dev targets in the package (but not the build script). |
127 | Normal, | 127 | Normal, |
@@ -132,17 +132,23 @@ pub enum DepKind { | |||
132 | } | 132 | } |
133 | 133 | ||
134 | impl DepKind { | 134 | impl DepKind { |
135 | fn new(list: &[cargo_metadata::DepKindInfo]) -> Self { | 135 | fn iter(list: &[cargo_metadata::DepKindInfo]) -> impl Iterator<Item = Self> + '_ { |
136 | let mut dep_kinds = Vec::new(); | ||
137 | if list.is_empty() { | ||
138 | dep_kinds.push(Self::Normal); | ||
139 | } | ||
136 | for info in list { | 140 | for info in list { |
137 | match info.kind { | 141 | let kind = match info.kind { |
138 | cargo_metadata::DependencyKind::Normal => return Self::Normal, | 142 | cargo_metadata::DependencyKind::Normal => Self::Normal, |
139 | cargo_metadata::DependencyKind::Development => return Self::Dev, | 143 | cargo_metadata::DependencyKind::Development => Self::Dev, |
140 | cargo_metadata::DependencyKind::Build => return Self::Build, | 144 | cargo_metadata::DependencyKind::Build => Self::Build, |
141 | cargo_metadata::DependencyKind::Unknown => continue, | 145 | cargo_metadata::DependencyKind::Unknown => continue, |
142 | } | 146 | }; |
147 | dep_kinds.push(kind); | ||
143 | } | 148 | } |
144 | 149 | dep_kinds.sort_unstable(); | |
145 | Self::Normal | 150 | dep_kinds.dedup(); |
151 | dep_kinds.into_iter() | ||
146 | } | 152 | } |
147 | } | 153 | } |
148 | 154 | ||
@@ -317,7 +323,11 @@ impl CargoWorkspace { | |||
317 | } | 323 | } |
318 | }; | 324 | }; |
319 | node.deps.sort_by(|a, b| a.pkg.cmp(&b.pkg)); | 325 | node.deps.sort_by(|a, b| a.pkg.cmp(&b.pkg)); |
320 | for dep_node in node.deps { | 326 | for (dep_node, kind) in node |
327 | .deps | ||
328 | .iter() | ||
329 | .flat_map(|dep| DepKind::iter(&dep.dep_kinds).map(move |kind| (dep, kind))) | ||
330 | { | ||
321 | let pkg = match pkg_by_id.get(&dep_node.pkg) { | 331 | let pkg = match pkg_by_id.get(&dep_node.pkg) { |
322 | Some(&pkg) => pkg, | 332 | Some(&pkg) => pkg, |
323 | None => { | 333 | None => { |
@@ -328,11 +338,7 @@ impl CargoWorkspace { | |||
328 | continue; | 338 | continue; |
329 | } | 339 | } |
330 | }; | 340 | }; |
331 | let dep = PackageDependency { | 341 | let dep = PackageDependency { name: dep_node.name.clone(), pkg, kind }; |
332 | name: dep_node.name, | ||
333 | pkg, | ||
334 | kind: DepKind::new(&dep_node.dep_kinds), | ||
335 | }; | ||
336 | packages[source].dependencies.push(dep); | 342 | packages[source].dependencies.push(dep); |
337 | } | 343 | } |
338 | packages[source].active_features.extend(node.features); | 344 | packages[source].active_features.extend(node.features); |
diff --git a/crates/rust-analyzer/src/diagnostics/test_data/clippy_pass_by_ref.txt b/crates/rust-analyzer/src/diagnostics/test_data/clippy_pass_by_ref.txt index 227d96d51..bcc889681 100644 --- a/crates/rust-analyzer/src/diagnostics/test_data/clippy_pass_by_ref.txt +++ b/crates/rust-analyzer/src/diagnostics/test_data/clippy_pass_by_ref.txt | |||
@@ -2,6 +2,7 @@ | |||
2 | MappedRustDiagnostic { | 2 | MappedRustDiagnostic { |
3 | url: Url { | 3 | url: Url { |
4 | scheme: "file", | 4 | scheme: "file", |
5 | cannot_be_a_base: false, | ||
5 | username: "", | 6 | username: "", |
6 | password: None, | 7 | password: None, |
7 | host: None, | 8 | host: None, |
@@ -33,6 +34,7 @@ | |||
33 | CodeDescription { | 34 | CodeDescription { |
34 | href: Url { | 35 | href: Url { |
35 | scheme: "https", | 36 | scheme: "https", |
37 | cannot_be_a_base: false, | ||
36 | username: "", | 38 | username: "", |
37 | password: None, | 39 | password: None, |
38 | host: Some( | 40 | host: Some( |
@@ -59,6 +61,7 @@ | |||
59 | location: Location { | 61 | location: Location { |
60 | uri: Url { | 62 | uri: Url { |
61 | scheme: "file", | 63 | scheme: "file", |
64 | cannot_be_a_base: false, | ||
62 | username: "", | 65 | username: "", |
63 | password: None, | 66 | password: None, |
64 | host: None, | 67 | host: None, |
@@ -84,6 +87,7 @@ | |||
84 | location: Location { | 87 | location: Location { |
85 | uri: Url { | 88 | uri: Url { |
86 | scheme: "file", | 89 | scheme: "file", |
90 | cannot_be_a_base: false, | ||
87 | username: "", | 91 | username: "", |
88 | password: None, | 92 | password: None, |
89 | host: None, | 93 | host: None, |
@@ -115,6 +119,7 @@ | |||
115 | MappedRustDiagnostic { | 119 | MappedRustDiagnostic { |
116 | url: Url { | 120 | url: Url { |
117 | scheme: "file", | 121 | scheme: "file", |
122 | cannot_be_a_base: false, | ||
118 | username: "", | 123 | username: "", |
119 | password: None, | 124 | password: None, |
120 | host: None, | 125 | host: None, |
@@ -146,6 +151,7 @@ | |||
146 | CodeDescription { | 151 | CodeDescription { |
147 | href: Url { | 152 | href: Url { |
148 | scheme: "https", | 153 | scheme: "https", |
154 | cannot_be_a_base: false, | ||
149 | username: "", | 155 | username: "", |
150 | password: None, | 156 | password: None, |
151 | host: Some( | 157 | host: Some( |
@@ -172,6 +178,7 @@ | |||
172 | location: Location { | 178 | location: Location { |
173 | uri: Url { | 179 | uri: Url { |
174 | scheme: "file", | 180 | scheme: "file", |
181 | cannot_be_a_base: false, | ||
175 | username: "", | 182 | username: "", |
176 | password: None, | 183 | password: None, |
177 | host: None, | 184 | host: None, |
@@ -203,6 +210,7 @@ | |||
203 | MappedRustDiagnostic { | 210 | MappedRustDiagnostic { |
204 | url: Url { | 211 | url: Url { |
205 | scheme: "file", | 212 | scheme: "file", |
213 | cannot_be_a_base: false, | ||
206 | username: "", | 214 | username: "", |
207 | password: None, | 215 | password: None, |
208 | host: None, | 216 | host: None, |
@@ -234,6 +242,7 @@ | |||
234 | CodeDescription { | 242 | CodeDescription { |
235 | href: Url { | 243 | href: Url { |
236 | scheme: "https", | 244 | scheme: "https", |
245 | cannot_be_a_base: false, | ||
237 | username: "", | 246 | username: "", |
238 | password: None, | 247 | password: None, |
239 | host: Some( | 248 | host: Some( |
@@ -260,6 +269,7 @@ | |||
260 | location: Location { | 269 | location: Location { |
261 | uri: Url { | 270 | uri: Url { |
262 | scheme: "file", | 271 | scheme: "file", |
272 | cannot_be_a_base: false, | ||
263 | username: "", | 273 | username: "", |
264 | password: None, | 274 | password: None, |
265 | host: None, | 275 | host: None, |
@@ -301,6 +311,7 @@ | |||
301 | { | 311 | { |
302 | Url { | 312 | Url { |
303 | scheme: "file", | 313 | scheme: "file", |
314 | cannot_be_a_base: false, | ||
304 | username: "", | 315 | username: "", |
305 | password: None, | 316 | password: None, |
306 | host: None, | 317 | host: None, |
diff --git a/crates/rust-analyzer/src/diagnostics/test_data/handles_macro_location.txt b/crates/rust-analyzer/src/diagnostics/test_data/handles_macro_location.txt index e5f01fb33..d5ab03576 100644 --- a/crates/rust-analyzer/src/diagnostics/test_data/handles_macro_location.txt +++ b/crates/rust-analyzer/src/diagnostics/test_data/handles_macro_location.txt | |||
@@ -2,6 +2,7 @@ | |||
2 | MappedRustDiagnostic { | 2 | MappedRustDiagnostic { |
3 | url: Url { | 3 | url: Url { |
4 | scheme: "file", | 4 | scheme: "file", |
5 | cannot_be_a_base: false, | ||
5 | username: "", | 6 | username: "", |
6 | password: None, | 7 | password: None, |
7 | host: None, | 8 | host: None, |
@@ -33,6 +34,7 @@ | |||
33 | CodeDescription { | 34 | CodeDescription { |
34 | href: Url { | 35 | href: Url { |
35 | scheme: "https", | 36 | scheme: "https", |
37 | cannot_be_a_base: false, | ||
36 | username: "", | 38 | username: "", |
37 | password: None, | 39 | password: None, |
38 | host: Some( | 40 | host: Some( |
diff --git a/crates/rust-analyzer/src/diagnostics/test_data/macro_compiler_error.txt b/crates/rust-analyzer/src/diagnostics/test_data/macro_compiler_error.txt index c847bbb35..8bee4cfe1 100644 --- a/crates/rust-analyzer/src/diagnostics/test_data/macro_compiler_error.txt +++ b/crates/rust-analyzer/src/diagnostics/test_data/macro_compiler_error.txt | |||
@@ -2,6 +2,7 @@ | |||
2 | MappedRustDiagnostic { | 2 | MappedRustDiagnostic { |
3 | url: Url { | 3 | url: Url { |
4 | scheme: "file", | 4 | scheme: "file", |
5 | cannot_be_a_base: false, | ||
5 | username: "", | 6 | username: "", |
6 | password: None, | 7 | password: None, |
7 | host: None, | 8 | host: None, |
@@ -36,6 +37,7 @@ | |||
36 | location: Location { | 37 | location: Location { |
37 | uri: Url { | 38 | uri: Url { |
38 | scheme: "file", | 39 | scheme: "file", |
40 | cannot_be_a_base: false, | ||
39 | username: "", | 41 | username: "", |
40 | password: None, | 42 | password: None, |
41 | host: None, | 43 | host: None, |
@@ -67,6 +69,7 @@ | |||
67 | MappedRustDiagnostic { | 69 | MappedRustDiagnostic { |
68 | url: Url { | 70 | url: Url { |
69 | scheme: "file", | 71 | scheme: "file", |
72 | cannot_be_a_base: false, | ||
70 | username: "", | 73 | username: "", |
71 | password: None, | 74 | password: None, |
72 | host: None, | 75 | host: None, |
@@ -101,6 +104,7 @@ | |||
101 | location: Location { | 104 | location: Location { |
102 | uri: Url { | 105 | uri: Url { |
103 | scheme: "file", | 106 | scheme: "file", |
107 | cannot_be_a_base: false, | ||
104 | username: "", | 108 | username: "", |
105 | password: None, | 109 | password: None, |
106 | host: None, | 110 | host: None, |
@@ -132,6 +136,7 @@ | |||
132 | MappedRustDiagnostic { | 136 | MappedRustDiagnostic { |
133 | url: Url { | 137 | url: Url { |
134 | scheme: "file", | 138 | scheme: "file", |
139 | cannot_be_a_base: false, | ||
135 | username: "", | 140 | username: "", |
136 | password: None, | 141 | password: None, |
137 | host: None, | 142 | host: None, |
@@ -166,6 +171,7 @@ | |||
166 | location: Location { | 171 | location: Location { |
167 | uri: Url { | 172 | uri: Url { |
168 | scheme: "file", | 173 | scheme: "file", |
174 | cannot_be_a_base: false, | ||
169 | username: "", | 175 | username: "", |
170 | password: None, | 176 | password: None, |
171 | host: None, | 177 | host: None, |
@@ -191,6 +197,7 @@ | |||
191 | location: Location { | 197 | location: Location { |
192 | uri: Url { | 198 | uri: Url { |
193 | scheme: "file", | 199 | scheme: "file", |
200 | cannot_be_a_base: false, | ||
194 | username: "", | 201 | username: "", |
195 | password: None, | 202 | password: None, |
196 | host: None, | 203 | host: None, |
diff --git a/crates/rust-analyzer/src/diagnostics/test_data/rustc_incompatible_type_for_trait.txt b/crates/rust-analyzer/src/diagnostics/test_data/rustc_incompatible_type_for_trait.txt index 0d16af232..ada540ea6 100644 --- a/crates/rust-analyzer/src/diagnostics/test_data/rustc_incompatible_type_for_trait.txt +++ b/crates/rust-analyzer/src/diagnostics/test_data/rustc_incompatible_type_for_trait.txt | |||
@@ -2,6 +2,7 @@ | |||
2 | MappedRustDiagnostic { | 2 | MappedRustDiagnostic { |
3 | url: Url { | 3 | url: Url { |
4 | scheme: "file", | 4 | scheme: "file", |
5 | cannot_be_a_base: false, | ||
5 | username: "", | 6 | username: "", |
6 | password: None, | 7 | password: None, |
7 | host: None, | 8 | host: None, |
@@ -33,6 +34,7 @@ | |||
33 | CodeDescription { | 34 | CodeDescription { |
34 | href: Url { | 35 | href: Url { |
35 | scheme: "https", | 36 | scheme: "https", |
37 | cannot_be_a_base: false, | ||
36 | username: "", | 38 | username: "", |
37 | password: None, | 39 | password: None, |
38 | host: Some( | 40 | host: Some( |
diff --git a/crates/rust-analyzer/src/diagnostics/test_data/rustc_mismatched_type.txt b/crates/rust-analyzer/src/diagnostics/test_data/rustc_mismatched_type.txt index 31b6a12ce..05074a914 100644 --- a/crates/rust-analyzer/src/diagnostics/test_data/rustc_mismatched_type.txt +++ b/crates/rust-analyzer/src/diagnostics/test_data/rustc_mismatched_type.txt | |||
@@ -2,6 +2,7 @@ | |||
2 | MappedRustDiagnostic { | 2 | MappedRustDiagnostic { |
3 | url: Url { | 3 | url: Url { |
4 | scheme: "file", | 4 | scheme: "file", |
5 | cannot_be_a_base: false, | ||
5 | username: "", | 6 | username: "", |
6 | password: None, | 7 | password: None, |
7 | host: None, | 8 | host: None, |
@@ -33,6 +34,7 @@ | |||
33 | CodeDescription { | 34 | CodeDescription { |
34 | href: Url { | 35 | href: Url { |
35 | scheme: "https", | 36 | scheme: "https", |
37 | cannot_be_a_base: false, | ||
36 | username: "", | 38 | username: "", |
37 | password: None, | 39 | password: None, |
38 | host: Some( | 40 | host: Some( |
diff --git a/crates/rust-analyzer/src/diagnostics/test_data/rustc_unused_variable.txt b/crates/rust-analyzer/src/diagnostics/test_data/rustc_unused_variable.txt index f8adfad3b..749f49438 100644 --- a/crates/rust-analyzer/src/diagnostics/test_data/rustc_unused_variable.txt +++ b/crates/rust-analyzer/src/diagnostics/test_data/rustc_unused_variable.txt | |||
@@ -2,6 +2,7 @@ | |||
2 | MappedRustDiagnostic { | 2 | MappedRustDiagnostic { |
3 | url: Url { | 3 | url: Url { |
4 | scheme: "file", | 4 | scheme: "file", |
5 | cannot_be_a_base: false, | ||
5 | username: "", | 6 | username: "", |
6 | password: None, | 7 | password: None, |
7 | host: None, | 8 | host: None, |
@@ -40,6 +41,7 @@ | |||
40 | location: Location { | 41 | location: Location { |
41 | uri: Url { | 42 | uri: Url { |
42 | scheme: "file", | 43 | scheme: "file", |
44 | cannot_be_a_base: false, | ||
43 | username: "", | 45 | username: "", |
44 | password: None, | 46 | password: None, |
45 | host: None, | 47 | host: None, |
@@ -75,6 +77,7 @@ | |||
75 | MappedRustDiagnostic { | 77 | MappedRustDiagnostic { |
76 | url: Url { | 78 | url: Url { |
77 | scheme: "file", | 79 | scheme: "file", |
80 | cannot_be_a_base: false, | ||
78 | username: "", | 81 | username: "", |
79 | password: None, | 82 | password: None, |
80 | host: None, | 83 | host: None, |
@@ -113,6 +116,7 @@ | |||
113 | location: Location { | 116 | location: Location { |
114 | uri: Url { | 117 | uri: Url { |
115 | scheme: "file", | 118 | scheme: "file", |
119 | cannot_be_a_base: false, | ||
116 | username: "", | 120 | username: "", |
117 | password: None, | 121 | password: None, |
118 | host: None, | 122 | host: None, |
@@ -154,6 +158,7 @@ | |||
154 | { | 158 | { |
155 | Url { | 159 | Url { |
156 | scheme: "file", | 160 | scheme: "file", |
161 | cannot_be_a_base: false, | ||
157 | username: "", | 162 | username: "", |
158 | password: None, | 163 | password: None, |
159 | host: None, | 164 | host: None, |
diff --git a/crates/rust-analyzer/src/diagnostics/test_data/rustc_unused_variable_as_hint.txt b/crates/rust-analyzer/src/diagnostics/test_data/rustc_unused_variable_as_hint.txt index 5a70d2ed7..d20a91b39 100644 --- a/crates/rust-analyzer/src/diagnostics/test_data/rustc_unused_variable_as_hint.txt +++ b/crates/rust-analyzer/src/diagnostics/test_data/rustc_unused_variable_as_hint.txt | |||
@@ -2,6 +2,7 @@ | |||
2 | MappedRustDiagnostic { | 2 | MappedRustDiagnostic { |
3 | url: Url { | 3 | url: Url { |
4 | scheme: "file", | 4 | scheme: "file", |
5 | cannot_be_a_base: false, | ||
5 | username: "", | 6 | username: "", |
6 | password: None, | 7 | password: None, |
7 | host: None, | 8 | host: None, |
@@ -40,6 +41,7 @@ | |||
40 | location: Location { | 41 | location: Location { |
41 | uri: Url { | 42 | uri: Url { |
42 | scheme: "file", | 43 | scheme: "file", |
44 | cannot_be_a_base: false, | ||
43 | username: "", | 45 | username: "", |
44 | password: None, | 46 | password: None, |
45 | host: None, | 47 | host: None, |
@@ -75,6 +77,7 @@ | |||
75 | MappedRustDiagnostic { | 77 | MappedRustDiagnostic { |
76 | url: Url { | 78 | url: Url { |
77 | scheme: "file", | 79 | scheme: "file", |
80 | cannot_be_a_base: false, | ||
78 | username: "", | 81 | username: "", |
79 | password: None, | 82 | password: None, |
80 | host: None, | 83 | host: None, |
@@ -113,6 +116,7 @@ | |||
113 | location: Location { | 116 | location: Location { |
114 | uri: Url { | 117 | uri: Url { |
115 | scheme: "file", | 118 | scheme: "file", |
119 | cannot_be_a_base: false, | ||
116 | username: "", | 120 | username: "", |
117 | password: None, | 121 | password: None, |
118 | host: None, | 122 | host: None, |
@@ -154,6 +158,7 @@ | |||
154 | { | 158 | { |
155 | Url { | 159 | Url { |
156 | scheme: "file", | 160 | scheme: "file", |
161 | cannot_be_a_base: false, | ||
157 | username: "", | 162 | username: "", |
158 | password: None, | 163 | password: None, |
159 | host: None, | 164 | host: None, |
diff --git a/crates/rust-analyzer/src/diagnostics/test_data/rustc_unused_variable_as_info.txt b/crates/rust-analyzer/src/diagnostics/test_data/rustc_unused_variable_as_info.txt index 04ca0c9c2..2a9c3a9af 100644 --- a/crates/rust-analyzer/src/diagnostics/test_data/rustc_unused_variable_as_info.txt +++ b/crates/rust-analyzer/src/diagnostics/test_data/rustc_unused_variable_as_info.txt | |||
@@ -2,6 +2,7 @@ | |||
2 | MappedRustDiagnostic { | 2 | MappedRustDiagnostic { |
3 | url: Url { | 3 | url: Url { |
4 | scheme: "file", | 4 | scheme: "file", |
5 | cannot_be_a_base: false, | ||
5 | username: "", | 6 | username: "", |
6 | password: None, | 7 | password: None, |
7 | host: None, | 8 | host: None, |
@@ -40,6 +41,7 @@ | |||
40 | location: Location { | 41 | location: Location { |
41 | uri: Url { | 42 | uri: Url { |
42 | scheme: "file", | 43 | scheme: "file", |
44 | cannot_be_a_base: false, | ||
43 | username: "", | 45 | username: "", |
44 | password: None, | 46 | password: None, |
45 | host: None, | 47 | host: None, |
@@ -75,6 +77,7 @@ | |||
75 | MappedRustDiagnostic { | 77 | MappedRustDiagnostic { |
76 | url: Url { | 78 | url: Url { |
77 | scheme: "file", | 79 | scheme: "file", |
80 | cannot_be_a_base: false, | ||
78 | username: "", | 81 | username: "", |
79 | password: None, | 82 | password: None, |
80 | host: None, | 83 | host: None, |
@@ -113,6 +116,7 @@ | |||
113 | location: Location { | 116 | location: Location { |
114 | uri: Url { | 117 | uri: Url { |
115 | scheme: "file", | 118 | scheme: "file", |
119 | cannot_be_a_base: false, | ||
116 | username: "", | 120 | username: "", |
117 | password: None, | 121 | password: None, |
118 | host: None, | 122 | host: None, |
@@ -154,6 +158,7 @@ | |||
154 | { | 158 | { |
155 | Url { | 159 | Url { |
156 | scheme: "file", | 160 | scheme: "file", |
161 | cannot_be_a_base: false, | ||
157 | username: "", | 162 | username: "", |
158 | password: None, | 163 | password: None, |
159 | host: None, | 164 | host: None, |
diff --git a/crates/rust-analyzer/src/diagnostics/test_data/rustc_wrong_number_of_parameters.txt b/crates/rust-analyzer/src/diagnostics/test_data/rustc_wrong_number_of_parameters.txt index f7a313cf1..5ea27a152 100644 --- a/crates/rust-analyzer/src/diagnostics/test_data/rustc_wrong_number_of_parameters.txt +++ b/crates/rust-analyzer/src/diagnostics/test_data/rustc_wrong_number_of_parameters.txt | |||
@@ -2,6 +2,7 @@ | |||
2 | MappedRustDiagnostic { | 2 | MappedRustDiagnostic { |
3 | url: Url { | 3 | url: Url { |
4 | scheme: "file", | 4 | scheme: "file", |
5 | cannot_be_a_base: false, | ||
5 | username: "", | 6 | username: "", |
6 | password: None, | 7 | password: None, |
7 | host: None, | 8 | host: None, |
@@ -33,6 +34,7 @@ | |||
33 | CodeDescription { | 34 | CodeDescription { |
34 | href: Url { | 35 | href: Url { |
35 | scheme: "https", | 36 | scheme: "https", |
37 | cannot_be_a_base: false, | ||
36 | username: "", | 38 | username: "", |
37 | password: None, | 39 | password: None, |
38 | host: Some( | 40 | host: Some( |
@@ -59,6 +61,7 @@ | |||
59 | location: Location { | 61 | location: Location { |
60 | uri: Url { | 62 | uri: Url { |
61 | scheme: "file", | 63 | scheme: "file", |
64 | cannot_be_a_base: false, | ||
62 | username: "", | 65 | username: "", |
63 | password: None, | 66 | password: None, |
64 | host: None, | 67 | host: None, |
@@ -90,6 +93,7 @@ | |||
90 | MappedRustDiagnostic { | 93 | MappedRustDiagnostic { |
91 | url: Url { | 94 | url: Url { |
92 | scheme: "file", | 95 | scheme: "file", |
96 | cannot_be_a_base: false, | ||
93 | username: "", | 97 | username: "", |
94 | password: None, | 98 | password: None, |
95 | host: None, | 99 | host: None, |
@@ -121,6 +125,7 @@ | |||
121 | CodeDescription { | 125 | CodeDescription { |
122 | href: Url { | 126 | href: Url { |
123 | scheme: "https", | 127 | scheme: "https", |
128 | cannot_be_a_base: false, | ||
124 | username: "", | 129 | username: "", |
125 | password: None, | 130 | password: None, |
126 | host: Some( | 131 | host: Some( |
@@ -147,6 +152,7 @@ | |||
147 | location: Location { | 152 | location: Location { |
148 | uri: Url { | 153 | uri: Url { |
149 | scheme: "file", | 154 | scheme: "file", |
155 | cannot_be_a_base: false, | ||
150 | username: "", | 156 | username: "", |
151 | password: None, | 157 | password: None, |
152 | host: None, | 158 | host: None, |
diff --git a/crates/rust-analyzer/src/diagnostics/test_data/snap_multi_line_fix.txt b/crates/rust-analyzer/src/diagnostics/test_data/snap_multi_line_fix.txt index 57d2f1ae3..43b1ea765 100644 --- a/crates/rust-analyzer/src/diagnostics/test_data/snap_multi_line_fix.txt +++ b/crates/rust-analyzer/src/diagnostics/test_data/snap_multi_line_fix.txt | |||
@@ -2,6 +2,7 @@ | |||
2 | MappedRustDiagnostic { | 2 | MappedRustDiagnostic { |
3 | url: Url { | 3 | url: Url { |
4 | scheme: "file", | 4 | scheme: "file", |
5 | cannot_be_a_base: false, | ||
5 | username: "", | 6 | username: "", |
6 | password: None, | 7 | password: None, |
7 | host: None, | 8 | host: None, |
@@ -33,6 +34,7 @@ | |||
33 | CodeDescription { | 34 | CodeDescription { |
34 | href: Url { | 35 | href: Url { |
35 | scheme: "https", | 36 | scheme: "https", |
37 | cannot_be_a_base: false, | ||
36 | username: "", | 38 | username: "", |
37 | password: None, | 39 | password: None, |
38 | host: Some( | 40 | host: Some( |
@@ -59,6 +61,7 @@ | |||
59 | location: Location { | 61 | location: Location { |
60 | uri: Url { | 62 | uri: Url { |
61 | scheme: "file", | 63 | scheme: "file", |
64 | cannot_be_a_base: false, | ||
62 | username: "", | 65 | username: "", |
63 | password: None, | 66 | password: None, |
64 | host: None, | 67 | host: None, |
@@ -84,6 +87,7 @@ | |||
84 | location: Location { | 87 | location: Location { |
85 | uri: Url { | 88 | uri: Url { |
86 | scheme: "file", | 89 | scheme: "file", |
90 | cannot_be_a_base: false, | ||
87 | username: "", | 91 | username: "", |
88 | password: None, | 92 | password: None, |
89 | host: None, | 93 | host: None, |
@@ -115,6 +119,7 @@ | |||
115 | MappedRustDiagnostic { | 119 | MappedRustDiagnostic { |
116 | url: Url { | 120 | url: Url { |
117 | scheme: "file", | 121 | scheme: "file", |
122 | cannot_be_a_base: false, | ||
118 | username: "", | 123 | username: "", |
119 | password: None, | 124 | password: None, |
120 | host: None, | 125 | host: None, |
@@ -146,6 +151,7 @@ | |||
146 | CodeDescription { | 151 | CodeDescription { |
147 | href: Url { | 152 | href: Url { |
148 | scheme: "https", | 153 | scheme: "https", |
154 | cannot_be_a_base: false, | ||
149 | username: "", | 155 | username: "", |
150 | password: None, | 156 | password: None, |
151 | host: Some( | 157 | host: Some( |
@@ -172,6 +178,7 @@ | |||
172 | location: Location { | 178 | location: Location { |
173 | uri: Url { | 179 | uri: Url { |
174 | scheme: "file", | 180 | scheme: "file", |
181 | cannot_be_a_base: false, | ||
175 | username: "", | 182 | username: "", |
176 | password: None, | 183 | password: None, |
177 | host: None, | 184 | host: None, |
@@ -203,6 +210,7 @@ | |||
203 | MappedRustDiagnostic { | 210 | MappedRustDiagnostic { |
204 | url: Url { | 211 | url: Url { |
205 | scheme: "file", | 212 | scheme: "file", |
213 | cannot_be_a_base: false, | ||
206 | username: "", | 214 | username: "", |
207 | password: None, | 215 | password: None, |
208 | host: None, | 216 | host: None, |
@@ -234,6 +242,7 @@ | |||
234 | CodeDescription { | 242 | CodeDescription { |
235 | href: Url { | 243 | href: Url { |
236 | scheme: "https", | 244 | scheme: "https", |
245 | cannot_be_a_base: false, | ||
237 | username: "", | 246 | username: "", |
238 | password: None, | 247 | password: None, |
239 | host: Some( | 248 | host: Some( |
@@ -260,6 +269,7 @@ | |||
260 | location: Location { | 269 | location: Location { |
261 | uri: Url { | 270 | uri: Url { |
262 | scheme: "file", | 271 | scheme: "file", |
272 | cannot_be_a_base: false, | ||
263 | username: "", | 273 | username: "", |
264 | password: None, | 274 | password: None, |
265 | host: None, | 275 | host: None, |
@@ -301,6 +311,7 @@ | |||
301 | { | 311 | { |
302 | Url { | 312 | Url { |
303 | scheme: "file", | 313 | scheme: "file", |
314 | cannot_be_a_base: false, | ||
304 | username: "", | 315 | username: "", |
305 | password: None, | 316 | password: None, |
306 | host: None, | 317 | host: None, |
diff --git a/crates/rust-analyzer/src/to_proto.rs b/crates/rust-analyzer/src/to_proto.rs index 0a3a56773..410384ae5 100644 --- a/crates/rust-analyzer/src/to_proto.rs +++ b/crates/rust-analyzer/src/to_proto.rs | |||
@@ -604,7 +604,7 @@ pub(crate) fn url_from_abs_path(path: &Path) -> lsp_types::Url { | |||
604 | // Note: lowercasing the `path` itself doesn't help, the `Url::parse` | 604 | // Note: lowercasing the `path` itself doesn't help, the `Url::parse` |
605 | // machinery *also* canonicalizes the drive letter. So, just massage the | 605 | // machinery *also* canonicalizes the drive letter. So, just massage the |
606 | // string in place. | 606 | // string in place. |
607 | let mut url = url.into_string(); | 607 | let mut url: String = url.into(); |
608 | url[driver_letter_range].make_ascii_lowercase(); | 608 | url[driver_letter_range].make_ascii_lowercase(); |
609 | lsp_types::Url::parse(&url).unwrap() | 609 | lsp_types::Url::parse(&url).unwrap() |
610 | } | 610 | } |
diff --git a/crates/syntax/Cargo.toml b/crates/syntax/Cargo.toml index 747f0b9eb..a6c294245 100644 --- a/crates/syntax/Cargo.toml +++ b/crates/syntax/Cargo.toml | |||
@@ -14,7 +14,7 @@ doctest = false | |||
14 | cov-mark = { version = "1.1", features = ["thread-local"] } | 14 | cov-mark = { version = "1.1", features = ["thread-local"] } |
15 | itertools = "0.10.0" | 15 | itertools = "0.10.0" |
16 | rowan = "=0.13.0-pre.6" | 16 | rowan = "=0.13.0-pre.6" |
17 | rustc_lexer = { version = "716.0.0", package = "rustc-ap-rustc_lexer" } | 17 | rustc_lexer = { version = "720.0.0", package = "rustc-ap-rustc_lexer" } |
18 | rustc-hash = "1.1.0" | 18 | rustc-hash = "1.1.0" |
19 | arrayvec = "0.7" | 19 | arrayvec = "0.7" |
20 | once_cell = "1.3.1" | 20 | once_cell = "1.3.1" |
diff --git a/docs/user/manual.adoc b/docs/user/manual.adoc index ad367511b..1f95df56e 100644 --- a/docs/user/manual.adoc +++ b/docs/user/manual.adoc | |||
@@ -139,18 +139,18 @@ $ cargo xtask install --server | |||
139 | === rust-analyzer Language Server Binary | 139 | === rust-analyzer Language Server Binary |
140 | 140 | ||
141 | Other editors generally require the `rust-analyzer` binary to be in `$PATH`. | 141 | Other editors generally require the `rust-analyzer` binary to be in `$PATH`. |
142 | You can download the pre-built binary from the https://github.com/rust-analyzer/rust-analyzer/releases[releases] page. | 142 | You can download pre-built binaries from the https://github.com/rust-analyzer/rust-analyzer/releases[releases] page. |
143 | Typically, you then need to rename the binary for your platform, e.g. `rust-analyzer-mac` if you're on Mac OS, to `rust-analyzer` and make it executable in addition to moving it into a directory in your `$PATH`. | 143 | You will need to uncompress and rename the binary for your platform, e.g. from `rust-analyzer-aarch64-apple-darwin.gz` on Mac OS to `rust-analyzer`, make it executable, then move it into a directory in your `$PATH`. |
144 | 144 | ||
145 | On Linux to install the `rust-analyzer` binary into `~/.local/bin`, this commands could be used | 145 | On Linux to install the `rust-analyzer` binary into `~/.local/bin`, these commands should work: |
146 | 146 | ||
147 | [source,bash] | 147 | [source,bash] |
148 | ---- | 148 | ---- |
149 | $ curl -L https://github.com/rust-analyzer/rust-analyzer/releases/latest/download/rust-analyzer-linux -o ~/.local/bin/rust-analyzer | 149 | $ curl -L https://github.com/rust-analyzer/rust-analyzer/releases/latest/download/rust-analyzer-x86_64-unknown-linux-gnu.gz | gunzip -c - > ~/.local/bin/rust-analyzer |
150 | $ chmod +x ~/.local/bin/rust-analyzer | 150 | $ chmod +x ~/.local/bin/rust-analyzer |
151 | ---- | 151 | ---- |
152 | 152 | ||
153 | Ensure `~/.local/bin` is listed in the `$PATH` variable. | 153 | Make sure that `~/.local/bin` is listed in the `$PATH` variable and use the appropriate URL if you're not on a `x86-64` system. |
154 | 154 | ||
155 | Alternatively, you can install it from source using the command below. | 155 | Alternatively, you can install it from source using the command below. |
156 | You'll need the latest stable version of the Rust toolchain. | 156 | You'll need the latest stable version of the Rust toolchain. |
diff --git a/editors/code/src/snippets.ts b/editors/code/src/snippets.ts index 58f7aa128..a409e5296 100644 --- a/editors/code/src/snippets.ts +++ b/editors/code/src/snippets.ts | |||
@@ -52,7 +52,7 @@ export async function applySnippetTextEdits(editor: vscode.TextEditor, edits: vs | |||
52 | } else { | 52 | } else { |
53 | builder.replace(indel.range, indel.newText); | 53 | builder.replace(indel.range, indel.newText); |
54 | } | 54 | } |
55 | lineDelta = countLines(indel.newText) - (indel.range.end.line - indel.range.start.line); | 55 | lineDelta += countLines(indel.newText) - (indel.range.end.line - indel.range.start.line); |
56 | } | 56 | } |
57 | }); | 57 | }); |
58 | if (selections.length > 0) editor.selections = selections; | 58 | if (selections.length > 0) editor.selections = selections; |