Skip to content

Commit f36e2ea

Browse files
authored
Merge pull request rust-lang#19232 from ShoyuVanilla/issue-19196
Bump chalk for built-in supports of async closures
2 parents 129545f + bb82831 commit f36e2ea

File tree

4 files changed

+59
-12
lines changed

4 files changed

+59
-12
lines changed

src/tools/rust-analyzer/Cargo.lock

+8-8
Original file line numberDiff line numberDiff line change
@@ -191,9 +191,9 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
191191

192192
[[package]]
193193
name = "chalk-derive"
194-
version = "0.99.0"
194+
version = "0.100.0"
195195
source = "registry+https://github.com/rust-lang/crates.io-index"
196-
checksum = "572583d9b97f9d277e5c7607f8239a30e2e04d3ed3b47c87d1cb2152ae724073"
196+
checksum = "ab2d131019373f0d0d1f2af0abd4f719739f6583c1b33965112455f643a910af"
197197
dependencies = [
198198
"proc-macro2",
199199
"quote",
@@ -203,19 +203,19 @@ dependencies = [
203203

204204
[[package]]
205205
name = "chalk-ir"
206-
version = "0.99.0"
206+
version = "0.100.0"
207207
source = "registry+https://github.com/rust-lang/crates.io-index"
208-
checksum = "e60e0ef9c81dce1336a9ed3c76f08775f5b623151d96d85ba45f7b10de76d1c7"
208+
checksum = "4f114996bda14c0213f014a4ef31a7867dcf5f539a3900477fc6b20138e7a17b"
209209
dependencies = [
210210
"bitflags 2.7.0",
211211
"chalk-derive",
212212
]
213213

214214
[[package]]
215215
name = "chalk-recursive"
216-
version = "0.99.0"
216+
version = "0.100.0"
217217
source = "registry+https://github.com/rust-lang/crates.io-index"
218-
checksum = "5a06350d614e22b03a69b8105e3541614450a7ea48bc58ecc6c6bd92731a3995"
218+
checksum = "551e956e031c09057c7b21f17d48d91de99c9b6b6e34bceaf5e7202d71021268"
219219
dependencies = [
220220
"chalk-derive",
221221
"chalk-ir",
@@ -226,9 +226,9 @@ dependencies = [
226226

227227
[[package]]
228228
name = "chalk-solve"
229-
version = "0.99.0"
229+
version = "0.100.0"
230230
source = "registry+https://github.com/rust-lang/crates.io-index"
231-
checksum = "0e428761e9b55bee516bfe2457caed8b6d1b86353f92ae825bbe438a36ce91e8"
231+
checksum = "cd7ca50181156ce649efe8e5dd00580f573651554e4dcd11afa4e2ac93f53324"
232232
dependencies = [
233233
"chalk-derive",
234234
"chalk-ir",

src/tools/rust-analyzer/Cargo.toml

+4-4
Original file line numberDiff line numberDiff line change
@@ -105,10 +105,10 @@ arrayvec = "0.7.4"
105105
bitflags = "2.4.1"
106106
cargo_metadata = "0.18.1"
107107
camino = "1.1.6"
108-
chalk-solve = { version = "0.99.0", default-features = false }
109-
chalk-ir = "0.99.0"
110-
chalk-recursive = { version = "0.99.0", default-features = false }
111-
chalk-derive = "0.99.0"
108+
chalk-solve = { version = "0.100.0", default-features = false }
109+
chalk-ir = "0.100.0"
110+
chalk-recursive = { version = "0.100.0", default-features = false }
111+
chalk-derive = "0.100.0"
112112
crossbeam-channel = "0.5.8"
113113
dissimilar = "1.0.7"
114114
dot = "0.1.4"

src/tools/rust-analyzer/crates/hir-ty/src/chalk_db.rs

+8
Original file line numberDiff line numberDiff line change
@@ -708,13 +708,17 @@ fn well_known_trait_from_lang_item(item: LangItem) -> Option<WellKnownTrait> {
708708
LangItem::Fn => WellKnownTrait::Fn,
709709
LangItem::FnMut => WellKnownTrait::FnMut,
710710
LangItem::FnOnce => WellKnownTrait::FnOnce,
711+
LangItem::AsyncFn => WellKnownTrait::AsyncFn,
712+
LangItem::AsyncFnMut => WellKnownTrait::AsyncFnMut,
713+
LangItem::AsyncFnOnce => WellKnownTrait::AsyncFnOnce,
711714
LangItem::Coroutine => WellKnownTrait::Coroutine,
712715
LangItem::Sized => WellKnownTrait::Sized,
713716
LangItem::Unpin => WellKnownTrait::Unpin,
714717
LangItem::Unsize => WellKnownTrait::Unsize,
715718
LangItem::Tuple => WellKnownTrait::Tuple,
716719
LangItem::PointeeTrait => WellKnownTrait::Pointee,
717720
LangItem::FnPtrTrait => WellKnownTrait::FnPtr,
721+
LangItem::Future => WellKnownTrait::Future,
718722
_ => return None,
719723
})
720724
}
@@ -730,13 +734,17 @@ fn lang_item_from_well_known_trait(trait_: WellKnownTrait) -> LangItem {
730734
WellKnownTrait::Fn => LangItem::Fn,
731735
WellKnownTrait::FnMut => LangItem::FnMut,
732736
WellKnownTrait::FnOnce => LangItem::FnOnce,
737+
WellKnownTrait::AsyncFn => LangItem::AsyncFn,
738+
WellKnownTrait::AsyncFnMut => LangItem::AsyncFnMut,
739+
WellKnownTrait::AsyncFnOnce => LangItem::AsyncFnOnce,
733740
WellKnownTrait::Coroutine => LangItem::Coroutine,
734741
WellKnownTrait::Sized => LangItem::Sized,
735742
WellKnownTrait::Tuple => LangItem::Tuple,
736743
WellKnownTrait::Unpin => LangItem::Unpin,
737744
WellKnownTrait::Unsize => LangItem::Unsize,
738745
WellKnownTrait::Pointee => LangItem::PointeeTrait,
739746
WellKnownTrait::FnPtr => LangItem::FnPtrTrait,
747+
WellKnownTrait::Future => LangItem::Future,
740748
}
741749
}
742750

src/tools/rust-analyzer/crates/hir-ty/src/tests/simple.rs

+39
Original file line numberDiff line numberDiff line change
@@ -3861,3 +3861,42 @@ fn main() {
38613861
"#]],
38623862
);
38633863
}
3864+
3865+
#[test]
3866+
fn regression_19196() {
3867+
check_infer(
3868+
r#"
3869+
//- minicore: async_fn
3870+
fn async_closure<F: AsyncFnOnce(i32)>(f: F) {}
3871+
fn closure<F: FnOnce(i32)>(f: F) {}
3872+
3873+
fn main() {
3874+
async_closure(async |arg| {
3875+
arg;
3876+
});
3877+
closure(|arg| {
3878+
arg;
3879+
});
3880+
}
3881+
"#,
3882+
expect![[r#"
3883+
38..39 'f': F
3884+
44..46 '{}': ()
3885+
74..75 'f': F
3886+
80..82 '{}': ()
3887+
94..191 '{ ... }); }': ()
3888+
100..113 'async_closure': fn async_closure<impl AsyncFnOnce(i32) -> impl Future<Output = ()>>(impl AsyncFnOnce(i32) -> impl Future<Output = ()>)
3889+
100..147 'async_... })': ()
3890+
114..146 'async ... }': impl AsyncFnOnce(i32) -> impl Future<Output = ()>
3891+
121..124 'arg': i32
3892+
126..146 '{ ... }': ()
3893+
136..139 'arg': i32
3894+
153..160 'closure': fn closure<impl FnOnce(i32)>(impl FnOnce(i32))
3895+
153..188 'closur... })': ()
3896+
161..187 '|arg| ... }': impl FnOnce(i32)
3897+
162..165 'arg': i32
3898+
167..187 '{ ... }': ()
3899+
177..180 'arg': i32
3900+
"#]],
3901+
);
3902+
}

0 commit comments

Comments
 (0)