Mac calls
This commit is contained in:
parent
47f92a58a4
commit
858d6a0711
2 changed files with 17 additions and 5 deletions
|
@ -1237,15 +1237,17 @@ fn may_contain_yield_point(e: &ast::Expr) -> bool {
|
||||||
|
|
||||||
impl Visitor<'_> for MayContainYieldPoint {
|
impl Visitor<'_> for MayContainYieldPoint {
|
||||||
fn visit_expr(&mut self, e: &ast::Expr) {
|
fn visit_expr(&mut self, e: &ast::Expr) {
|
||||||
if let ast::ExprKind::Await(_) | ast::ExprKind::Yield(_) | ast::ExprKind::MacCall(_) =
|
if let ast::ExprKind::Await(_) | ast::ExprKind::Yield(_) = e.kind {
|
||||||
e.kind
|
|
||||||
{
|
|
||||||
self.0 = true;
|
self.0 = true;
|
||||||
} else {
|
} else {
|
||||||
visit::walk_expr(self, e);
|
visit::walk_expr(self, e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn visit_mac_call(&mut self, _: &ast::MacCall) {
|
||||||
|
self.0 = true;
|
||||||
|
}
|
||||||
|
|
||||||
fn visit_attribute(&mut self, _: &ast::Attribute) {
|
fn visit_attribute(&mut self, _: &ast::Attribute) {
|
||||||
// Conservatively assume this may be a proc macro attribute in
|
// Conservatively assume this may be a proc macro attribute in
|
||||||
// expression position.
|
// expression position.
|
||||||
|
|
|
@ -11,13 +11,23 @@ async fn with_await() {
|
||||||
println!("{} {:?}", "", async {}.await);
|
println!("{} {:?}", "", async {}.await);
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn with_macro_call() {
|
async fn with_macro_call_expr() {
|
||||||
println!("{} {:?}", "", m!());
|
println!("{} {:?}", "", m!());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async fn with_macro_call_stmt_semi() {
|
||||||
|
println!("{} {:?}", "", { m!(); });
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn with_macro_call_stmt_braced() {
|
||||||
|
println!("{} {:?}", "", { m!{} });
|
||||||
|
}
|
||||||
|
|
||||||
fn assert_send(_: impl Send) {}
|
fn assert_send(_: impl Send) {}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
assert_send(with_await());
|
assert_send(with_await());
|
||||||
assert_send(with_macro_call());
|
assert_send(with_macro_call_expr());
|
||||||
|
assert_send(with_macro_call_stmt_semi());
|
||||||
|
assert_send(with_macro_call_stmt_braced());
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue