mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-27 02:06:57 +00:00
Merge pull request #19232 from ShoyuVanilla/issue-19196
Bump chalk for built-in supports of async closures
This commit is contained in:
commit
66c40fd90d
4 changed files with 59 additions and 12 deletions
|
|
@ -708,6 +708,9 @@ fn well_known_trait_from_lang_item(item: LangItem) -> Option<WellKnownTrait> {
|
|||
LangItem::Fn => WellKnownTrait::Fn,
|
||||
LangItem::FnMut => WellKnownTrait::FnMut,
|
||||
LangItem::FnOnce => WellKnownTrait::FnOnce,
|
||||
LangItem::AsyncFn => WellKnownTrait::AsyncFn,
|
||||
LangItem::AsyncFnMut => WellKnownTrait::AsyncFnMut,
|
||||
LangItem::AsyncFnOnce => WellKnownTrait::AsyncFnOnce,
|
||||
LangItem::Coroutine => WellKnownTrait::Coroutine,
|
||||
LangItem::Sized => WellKnownTrait::Sized,
|
||||
LangItem::Unpin => WellKnownTrait::Unpin,
|
||||
|
|
@ -715,6 +718,7 @@ fn well_known_trait_from_lang_item(item: LangItem) -> Option<WellKnownTrait> {
|
|||
LangItem::Tuple => WellKnownTrait::Tuple,
|
||||
LangItem::PointeeTrait => WellKnownTrait::Pointee,
|
||||
LangItem::FnPtrTrait => WellKnownTrait::FnPtr,
|
||||
LangItem::Future => WellKnownTrait::Future,
|
||||
_ => return None,
|
||||
})
|
||||
}
|
||||
|
|
@ -730,6 +734,9 @@ fn lang_item_from_well_known_trait(trait_: WellKnownTrait) -> LangItem {
|
|||
WellKnownTrait::Fn => LangItem::Fn,
|
||||
WellKnownTrait::FnMut => LangItem::FnMut,
|
||||
WellKnownTrait::FnOnce => LangItem::FnOnce,
|
||||
WellKnownTrait::AsyncFn => LangItem::AsyncFn,
|
||||
WellKnownTrait::AsyncFnMut => LangItem::AsyncFnMut,
|
||||
WellKnownTrait::AsyncFnOnce => LangItem::AsyncFnOnce,
|
||||
WellKnownTrait::Coroutine => LangItem::Coroutine,
|
||||
WellKnownTrait::Sized => LangItem::Sized,
|
||||
WellKnownTrait::Tuple => LangItem::Tuple,
|
||||
|
|
@ -737,6 +744,7 @@ fn lang_item_from_well_known_trait(trait_: WellKnownTrait) -> LangItem {
|
|||
WellKnownTrait::Unsize => LangItem::Unsize,
|
||||
WellKnownTrait::Pointee => LangItem::PointeeTrait,
|
||||
WellKnownTrait::FnPtr => LangItem::FnPtrTrait,
|
||||
WellKnownTrait::Future => LangItem::Future,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3861,3 +3861,42 @@ fn main() {
|
|||
"#]],
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn regression_19196() {
|
||||
check_infer(
|
||||
r#"
|
||||
//- minicore: async_fn
|
||||
fn async_closure<F: AsyncFnOnce(i32)>(f: F) {}
|
||||
fn closure<F: FnOnce(i32)>(f: F) {}
|
||||
|
||||
fn main() {
|
||||
async_closure(async |arg| {
|
||||
arg;
|
||||
});
|
||||
closure(|arg| {
|
||||
arg;
|
||||
});
|
||||
}
|
||||
"#,
|
||||
expect![[r#"
|
||||
38..39 'f': F
|
||||
44..46 '{}': ()
|
||||
74..75 'f': F
|
||||
80..82 '{}': ()
|
||||
94..191 '{ ... }); }': ()
|
||||
100..113 'async_closure': fn async_closure<impl AsyncFnOnce(i32) -> impl Future<Output = ()>>(impl AsyncFnOnce(i32) -> impl Future<Output = ()>)
|
||||
100..147 'async_... })': ()
|
||||
114..146 'async ... }': impl AsyncFnOnce(i32) -> impl Future<Output = ()>
|
||||
121..124 'arg': i32
|
||||
126..146 '{ ... }': ()
|
||||
136..139 'arg': i32
|
||||
153..160 'closure': fn closure<impl FnOnce(i32)>(impl FnOnce(i32))
|
||||
153..188 'closur... })': ()
|
||||
161..187 '|arg| ... }': impl FnOnce(i32)
|
||||
162..165 'arg': i32
|
||||
167..187 '{ ... }': ()
|
||||
177..180 'arg': i32
|
||||
"#]],
|
||||
);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue