Skip to content

Commit c867288

Browse files
committed
⬆️ rust-analyzer
2 parents 518263d + 61504c8 commit c867288

File tree

122 files changed

+2885
-1093
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

122 files changed

+2885
-1093
lines changed

Diff for: src/tools/rust-analyzer/Cargo.lock

+11-11
Original file line numberDiff line numberDiff line change
@@ -863,7 +863,7 @@ dependencies = [
863863

864864
[[package]]
865865
name = "lsp-server"
866-
version = "0.6.0"
866+
version = "0.7.0"
867867
dependencies = [
868868
"crossbeam-channel",
869869
"log",
@@ -1502,18 +1502,18 @@ dependencies = [
15021502

15031503
[[package]]
15041504
name = "serde"
1505-
version = "1.0.143"
1505+
version = "1.0.144"
15061506
source = "registry+https://github.com/rust-lang/crates.io-index"
1507-
checksum = "53e8e5d5b70924f74ff5c6d64d9a5acd91422117c60f48c4e07855238a254553"
1507+
checksum = "0f747710de3dcd43b88c9168773254e809d8ddbdf9653b84e2554ab219f17860"
15081508
dependencies = [
15091509
"serde_derive",
15101510
]
15111511

15121512
[[package]]
15131513
name = "serde_derive"
1514-
version = "1.0.143"
1514+
version = "1.0.144"
15151515
source = "registry+https://github.com/rust-lang/crates.io-index"
1516-
checksum = "d3d8e8de557aee63c26b85b947f5e59b690d0454c753f3adeb5cd7835ab88391"
1516+
checksum = "94ed3a816fb1d101812f83e789f888322c34e291f894f19590dc310963e87a00"
15171517
dependencies = [
15181518
"proc-macro2",
15191519
"quote",
@@ -1522,9 +1522,9 @@ dependencies = [
15221522

15231523
[[package]]
15241524
name = "serde_json"
1525-
version = "1.0.83"
1525+
version = "1.0.85"
15261526
source = "registry+https://github.com/rust-lang/crates.io-index"
1527-
checksum = "38dd04e3c8279e75b31ef29dbdceebfe5ad89f4d0937213c53f7d49d01b3d5a7"
1527+
checksum = "e55a28e3aaef9d5ce0506d0a14dbba8054ddc7e499ef522dd8b26859ec9d4a44"
15281528
dependencies = [
15291529
"indexmap",
15301530
"itoa",
@@ -2082,18 +2082,18 @@ checksum = "06069a848f95fceae3e5e03c0ddc8cb78452b56654ee0c8e68f938cf790fb9e3"
20822082

20832083
[[package]]
20842084
name = "xflags"
2085-
version = "0.2.4"
2085+
version = "0.3.0"
20862086
source = "registry+https://github.com/rust-lang/crates.io-index"
2087-
checksum = "3f14fe1ed41a5a2b5ef3f565586c4a8a559ee55d3953faab360a771135bdee00"
2087+
checksum = "cbf19f5031a1a812e96fede16f8161218883079946cea87619d3613db1efd268"
20882088
dependencies = [
20892089
"xflags-macros",
20902090
]
20912091

20922092
[[package]]
20932093
name = "xflags-macros"
2094-
version = "0.2.4"
2094+
version = "0.3.0"
20952095
source = "registry+https://github.com/rust-lang/crates.io-index"
2096-
checksum = "45d11d5fc2a97287eded8b170ca80533b3c42646dd7fa386a5eb045817921022"
2096+
checksum = "2afbd7f2039bb6cad2dd45f0c5dff49c0d4e26118398768b7a605524d4251809"
20972097

20982098
[[package]]
20992099
name = "xshell"

Diff for: src/tools/rust-analyzer/crates/base-db/src/fixture.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ impl ChangeFixture {
196196
Env::default(),
197197
Ok(Vec::new()),
198198
false,
199-
CrateOrigin::CratesIo { repo: None },
199+
CrateOrigin::CratesIo { repo: None, name: None },
200200
);
201201
} else {
202202
for (from, to, prelude) in crate_deps {
@@ -270,7 +270,7 @@ impl ChangeFixture {
270270
Env::default(),
271271
Ok(proc_macro),
272272
true,
273-
CrateOrigin::CratesIo { repo: None },
273+
CrateOrigin::CratesIo { repo: None, name: None },
274274
);
275275

276276
for krate in all_crates {
@@ -398,7 +398,7 @@ fn parse_crate(crate_str: String) -> (String, CrateOrigin, Option<String>) {
398398
let (version, origin) = match b.split_once(':') {
399399
Some(("CratesIo", data)) => match data.split_once(',') {
400400
Some((version, url)) => {
401-
(version, CrateOrigin::CratesIo { repo: Some(url.to_owned()) })
401+
(version, CrateOrigin::CratesIo { repo: Some(url.to_owned()), name: None })
402402
}
403403
_ => panic!("Bad crates.io parameter: {}", data),
404404
},
@@ -409,7 +409,7 @@ fn parse_crate(crate_str: String) -> (String, CrateOrigin, Option<String>) {
409409
let crate_origin = match &*crate_str {
410410
"std" => CrateOrigin::Lang(LangCrateOrigin::Std),
411411
"core" => CrateOrigin::Lang(LangCrateOrigin::Core),
412-
_ => CrateOrigin::CratesIo { repo: None },
412+
_ => CrateOrigin::CratesIo { repo: None, name: None },
413413
};
414414
(crate_str, crate_origin, None)
415415
}

Diff for: src/tools/rust-analyzer/crates/base-db/src/input.rs

+11-11
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ impl ops::Deref for CrateName {
136136
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
137137
pub enum CrateOrigin {
138138
/// Crates that are from crates.io official registry,
139-
CratesIo { repo: Option<String> },
139+
CratesIo { repo: Option<String>, name: Option<String> },
140140
/// Crates that are provided by the language, like std, core, proc-macro, ...
141141
Lang(LangCrateOrigin),
142142
}
@@ -648,7 +648,7 @@ mod tests {
648648
Env::default(),
649649
Ok(Vec::new()),
650650
false,
651-
CrateOrigin::CratesIo { repo: None },
651+
CrateOrigin::CratesIo { repo: None, name: None },
652652
);
653653
let crate2 = graph.add_crate_root(
654654
FileId(2u32),
@@ -660,7 +660,7 @@ mod tests {
660660
Env::default(),
661661
Ok(Vec::new()),
662662
false,
663-
CrateOrigin::CratesIo { repo: None },
663+
CrateOrigin::CratesIo { repo: None, name: None },
664664
);
665665
let crate3 = graph.add_crate_root(
666666
FileId(3u32),
@@ -672,7 +672,7 @@ mod tests {
672672
Env::default(),
673673
Ok(Vec::new()),
674674
false,
675-
CrateOrigin::CratesIo { repo: None },
675+
CrateOrigin::CratesIo { repo: None, name: None },
676676
);
677677
assert!(graph
678678
.add_dep(crate1, Dependency::new(CrateName::new("crate2").unwrap(), crate2))
@@ -698,7 +698,7 @@ mod tests {
698698
Env::default(),
699699
Ok(Vec::new()),
700700
false,
701-
CrateOrigin::CratesIo { repo: None },
701+
CrateOrigin::CratesIo { repo: None, name: None },
702702
);
703703
let crate2 = graph.add_crate_root(
704704
FileId(2u32),
@@ -710,7 +710,7 @@ mod tests {
710710
Env::default(),
711711
Ok(Vec::new()),
712712
false,
713-
CrateOrigin::CratesIo { repo: None },
713+
CrateOrigin::CratesIo { repo: None, name: None },
714714
);
715715
assert!(graph
716716
.add_dep(crate1, Dependency::new(CrateName::new("crate2").unwrap(), crate2))
@@ -733,7 +733,7 @@ mod tests {
733733
Env::default(),
734734
Ok(Vec::new()),
735735
false,
736-
CrateOrigin::CratesIo { repo: None },
736+
CrateOrigin::CratesIo { repo: None, name: None },
737737
);
738738
let crate2 = graph.add_crate_root(
739739
FileId(2u32),
@@ -745,7 +745,7 @@ mod tests {
745745
Env::default(),
746746
Ok(Vec::new()),
747747
false,
748-
CrateOrigin::CratesIo { repo: None },
748+
CrateOrigin::CratesIo { repo: None, name: None },
749749
);
750750
let crate3 = graph.add_crate_root(
751751
FileId(3u32),
@@ -757,7 +757,7 @@ mod tests {
757757
Env::default(),
758758
Ok(Vec::new()),
759759
false,
760-
CrateOrigin::CratesIo { repo: None },
760+
CrateOrigin::CratesIo { repo: None, name: None },
761761
);
762762
assert!(graph
763763
.add_dep(crate1, Dependency::new(CrateName::new("crate2").unwrap(), crate2))
@@ -780,7 +780,7 @@ mod tests {
780780
Env::default(),
781781
Ok(Vec::new()),
782782
false,
783-
CrateOrigin::CratesIo { repo: None },
783+
CrateOrigin::CratesIo { repo: None, name: None },
784784
);
785785
let crate2 = graph.add_crate_root(
786786
FileId(2u32),
@@ -792,7 +792,7 @@ mod tests {
792792
Env::default(),
793793
Ok(Vec::new()),
794794
false,
795-
CrateOrigin::CratesIo { repo: None },
795+
CrateOrigin::CratesIo { repo: None, name: None },
796796
);
797797
assert!(graph
798798
.add_dep(

Diff for: src/tools/rust-analyzer/crates/flycheck/src/lib.rs

+11-2
Original file line numberDiff line numberDiff line change
@@ -169,21 +169,30 @@ impl FlycheckActor {
169169
}
170170
fn next_event(&self, inbox: &Receiver<Restart>) -> Option<Event> {
171171
let check_chan = self.cargo_handle.as_ref().map(|cargo| &cargo.receiver);
172+
if let Ok(msg) = inbox.try_recv() {
173+
// give restarts a preference so check outputs don't block a restart or stop
174+
return Some(Event::Restart(msg));
175+
}
172176
select! {
173177
recv(inbox) -> msg => msg.ok().map(Event::Restart),
174178
recv(check_chan.unwrap_or(&never())) -> msg => Some(Event::CheckEvent(msg.ok())),
175179
}
176180
}
177181
fn run(mut self, inbox: Receiver<Restart>) {
178-
while let Some(event) = self.next_event(&inbox) {
182+
'event: while let Some(event) = self.next_event(&inbox) {
179183
match event {
180184
Event::Restart(Restart::No) => {
181185
self.cancel_check_process();
182186
}
183187
Event::Restart(Restart::Yes) => {
184188
// Cancel the previously spawned process
185189
self.cancel_check_process();
186-
while let Ok(_) = inbox.recv_timeout(Duration::from_millis(50)) {}
190+
while let Ok(restart) = inbox.recv_timeout(Duration::from_millis(50)) {
191+
// restart chained with a stop, so just cancel
192+
if let Restart::No = restart {
193+
continue 'event;
194+
}
195+
}
187196

188197
let command = self.check_command();
189198
tracing::debug!(?command, "will restart flycheck");

0 commit comments

Comments
 (0)