aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Vander Stoep <jeffv@google.com>2021-04-21 18:14:53 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2021-04-21 18:14:53 +0000
commit02513ca37d36da5ecf01b3387457baf9a34d0119 (patch)
tree9739f4bea3e54934e235716a483b610f81d2504b
parent705d934fa94fb5c729c4d99be8ffc48f6757791b (diff)
parentaf5acc173f260c1ebf4a2a25b0da83b86ffeef7f (diff)
downloadasync-trait-android12-mainline-permission-release.tar.gz
Update to 0.1.50 am: f833bced20 am: 6a58d211c4 am: 676ed34add am: af5acc173fandroid-mainline-12.0.0_r99android-mainline-12.0.0_r98android-mainline-12.0.0_r97android-mainline-12.0.0_r96android-mainline-12.0.0_r95android-mainline-12.0.0_r94android-mainline-12.0.0_r93android-mainline-12.0.0_r92android-mainline-12.0.0_r91android-mainline-12.0.0_r90android-mainline-12.0.0_r9android-mainline-12.0.0_r89android-mainline-12.0.0_r88android-mainline-12.0.0_r87android-mainline-12.0.0_r86android-mainline-12.0.0_r85android-mainline-12.0.0_r84android-mainline-12.0.0_r83android-mainline-12.0.0_r82android-mainline-12.0.0_r81android-mainline-12.0.0_r80android-mainline-12.0.0_r8android-mainline-12.0.0_r79android-mainline-12.0.0_r78android-mainline-12.0.0_r77android-mainline-12.0.0_r76android-mainline-12.0.0_r75android-mainline-12.0.0_r74android-mainline-12.0.0_r73android-mainline-12.0.0_r72android-mainline-12.0.0_r71android-mainline-12.0.0_r70android-mainline-12.0.0_r7android-mainline-12.0.0_r69android-mainline-12.0.0_r68android-mainline-12.0.0_r67android-mainline-12.0.0_r66android-mainline-12.0.0_r65android-mainline-12.0.0_r64android-mainline-12.0.0_r63android-mainline-12.0.0_r62android-mainline-12.0.0_r61android-mainline-12.0.0_r60android-mainline-12.0.0_r6android-mainline-12.0.0_r59android-mainline-12.0.0_r58android-mainline-12.0.0_r57android-mainline-12.0.0_r56android-mainline-12.0.0_r53android-mainline-12.0.0_r52android-mainline-12.0.0_r51android-mainline-12.0.0_r50android-mainline-12.0.0_r5android-mainline-12.0.0_r49android-mainline-12.0.0_r48android-mainline-12.0.0_r47android-mainline-12.0.0_r46android-mainline-12.0.0_r45android-mainline-12.0.0_r44android-mainline-12.0.0_r43android-mainline-12.0.0_r42android-mainline-12.0.0_r41android-mainline-12.0.0_r40android-mainline-12.0.0_r39android-mainline-12.0.0_r38android-mainline-12.0.0_r37android-mainline-12.0.0_r35android-mainline-12.0.0_r34android-mainline-12.0.0_r33android-mainline-12.0.0_r32android-mainline-12.0.0_r31android-mainline-12.0.0_r30android-mainline-12.0.0_r3android-mainline-12.0.0_r29android-mainline-12.0.0_r28android-mainline-12.0.0_r27android-mainline-12.0.0_r26android-mainline-12.0.0_r25android-mainline-12.0.0_r24android-mainline-12.0.0_r23android-mainline-12.0.0_r22android-mainline-12.0.0_r21android-mainline-12.0.0_r20android-mainline-12.0.0_r2android-mainline-12.0.0_r19android-mainline-12.0.0_r18android-mainline-12.0.0_r17android-mainline-12.0.0_r16android-mainline-12.0.0_r15android-mainline-12.0.0_r14android-mainline-12.0.0_r13android-mainline-12.0.0_r126android-mainline-12.0.0_r125android-mainline-12.0.0_r124android-mainline-12.0.0_r123android-mainline-12.0.0_r122android-mainline-12.0.0_r121android-mainline-12.0.0_r120android-mainline-12.0.0_r12android-mainline-12.0.0_r119android-mainline-12.0.0_r118android-mainline-12.0.0_r117android-mainline-12.0.0_r116android-mainline-12.0.0_r115android-mainline-12.0.0_r114android-mainline-12.0.0_r113android-mainline-12.0.0_r110android-mainline-12.0.0_r11android-mainline-12.0.0_r109android-mainline-12.0.0_r108android-mainline-12.0.0_r107android-mainline-12.0.0_r106android-mainline-12.0.0_r105android-mainline-12.0.0_r104android-mainline-12.0.0_r103android-mainline-12.0.0_r102android-mainline-12.0.0_r101android-mainline-12.0.0_r100android-mainline-12.0.0_r10android-mainline-12.0.0_r1aml_wif_311811030aml_tz3_311312010aml_tet_311811050aml_sdk_311710000aml_pco_311011000aml_mpr_311911090aml_doc_310851020android12-mainline-wifi-releaseandroid12-mainline-tethering-releaseandroid12-mainline-statsd-releaseandroid12-mainline-sdkext-releaseandroid12-mainline-resolv-releaseandroid12-mainline-permission-releaseandroid12-mainline-neuralnetworks-releaseandroid12-mainline-networkstack-releaseandroid12-mainline-mediaprovider-releaseandroid12-mainline-media-swcodec-releaseandroid12-mainline-media-releaseandroid12-mainline-ipsec-releaseandroid12-mainline-extservices-releaseandroid12-mainline-documentsui-releaseandroid12-mainline-conscrypt-releaseandroid12-mainline-cellbroadcast-releaseandroid12-mainline-captiveportallogin-releaseandroid12-mainline-art-releaseandroid12-mainline-adbd-release
Original change: https://android-review.googlesource.com/c/platform/external/rust/crates/async-trait/+/1682043 Change-Id: If8f260ca2f8a809cfca1270e194efa06e66aa9f1
-rw-r--r--.cargo_vcs_info.json2
-rw-r--r--Android.bp2
-rw-r--r--Cargo.toml11
-rw-r--r--Cargo.toml.orig7
-rw-r--r--METADATA6
-rw-r--r--TEST_MAPPING8
-rw-r--r--src/receiver.rs23
-rw-r--r--tests/test.rs43
8 files changed, 84 insertions, 18 deletions
diff --git a/.cargo_vcs_info.json b/.cargo_vcs_info.json
index a638e3f..d7f5c7b 100644
--- a/.cargo_vcs_info.json
+++ b/.cargo_vcs_info.json
@@ -1,5 +1,5 @@
{
"git": {
- "sha1": "a4aab7b9285e4912d16f1f4733cfb99fc8aa37da"
+ "sha1": "651ddc1131325b08c1b76ae6b65c1f23ca4cf7cf"
}
}
diff --git a/Android.bp b/Android.bp
index 4bc7fa9..22a10c5 100644
--- a/Android.bp
+++ b/Android.bp
@@ -52,5 +52,5 @@ rust_proc_macro {
// dependent_library ["feature_list"]
// proc-macro2-1.0.26 "default,proc-macro"
// quote-1.0.9 "default,proc-macro"
-// syn-1.0.68 "clone-impls,default,derive,extra-traits,full,parsing,printing,proc-macro,quote,visit,visit-mut"
+// syn-1.0.69 "clone-impls,default,derive,extra-traits,full,parsing,printing,proc-macro,quote,visit,visit-mut"
// unicode-xid-0.2.1 "default"
diff --git a/Cargo.toml b/Cargo.toml
index 5b222ec..e97aafa 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -13,11 +13,12 @@
[package]
edition = "2018"
name = "async-trait"
-version = "0.1.48"
+version = "0.1.50"
authors = ["David Tolnay <dtolnay@gmail.com>"]
description = "Type erasure for async trait methods"
documentation = "https://docs.rs/async-trait"
readme = "README.md"
+keywords = ["async"]
license = "MIT OR Apache-2.0"
repository = "https://github.com/dtolnay/async-trait"
[package.metadata.docs.rs]
@@ -34,6 +35,9 @@ version = "1.0"
[dependencies.syn]
version = "1.0.61"
features = ["full", "visit-mut"]
+[dev-dependencies.futures]
+version = "0.3"
+
[dev-dependencies.rustversion]
version = "1.0"
@@ -41,10 +45,7 @@ version = "1.0"
version = "0.1.14"
[dev-dependencies.tracing-attributes]
-version = "0.1.8"
-
-[dev-dependencies.tracing-futures]
-version = "0.2"
+version = "0.1.14"
[dev-dependencies.trybuild]
version = "1.0.19"
diff --git a/Cargo.toml.orig b/Cargo.toml.orig
index d5599b1..8af0b3b 100644
--- a/Cargo.toml.orig
+++ b/Cargo.toml.orig
@@ -1,6 +1,6 @@
[package]
name = "async-trait"
-version = "0.1.48"
+version = "0.1.50"
authors = ["David Tolnay <dtolnay@gmail.com>"]
edition = "2018"
license = "MIT OR Apache-2.0"
@@ -8,6 +8,7 @@ description = "Type erasure for async trait methods"
repository = "https://github.com/dtolnay/async-trait"
documentation = "https://docs.rs/async-trait"
readme = "README.md"
+keywords = ["async"]
[lib]
proc-macro = true
@@ -18,10 +19,10 @@ quote = "1.0"
syn = { version = "1.0.61", features = ["full", "visit-mut"] }
[dev-dependencies]
+futures = "0.3"
rustversion = "1.0"
tracing = "0.1.14"
-tracing-attributes = "0.1.8"
-tracing-futures = "0.2"
+tracing-attributes = "0.1.14"
trybuild = { version = "1.0.19", features = ["diff"] }
[package.metadata.docs.rs]
diff --git a/METADATA b/METADATA
index 3e6f11b..4f74759 100644
--- a/METADATA
+++ b/METADATA
@@ -7,13 +7,13 @@ third_party {
}
url {
type: ARCHIVE
- value: "https://static.crates.io/crates/async-trait/async-trait-0.1.48.crate"
+ value: "https://static.crates.io/crates/async-trait/async-trait-0.1.50.crate"
}
- version: "0.1.48"
+ version: "0.1.50"
license_type: NOTICE
last_upgrade_date {
year: 2021
month: 4
- day: 1
+ day: 21
}
}
diff --git a/TEST_MAPPING b/TEST_MAPPING
new file mode 100644
index 0000000..0f4f93c
--- /dev/null
+++ b/TEST_MAPPING
@@ -0,0 +1,8 @@
+// Generated by update_crate_tests.py for tests that depend on this crate.
+{
+ "presubmit": [
+ {
+ "name": "authfs_device_test_src_lib"
+ }
+ ]
+}
diff --git a/src/receiver.rs b/src/receiver.rs
index 64ab65e..f6ea327 100644
--- a/src/receiver.rs
+++ b/src/receiver.rs
@@ -2,7 +2,7 @@ use proc_macro2::{Group, Span, TokenStream, TokenTree};
use std::iter::FromIterator;
use syn::visit_mut::{self, VisitMut};
use syn::{
- Block, ExprPath, Ident, Item, Macro, Pat, PatIdent, PatPath, Receiver, Signature, Token,
+ Block, ExprPath, Ident, Item, Macro, Pat, PatIdent, PatPath, Path, Receiver, Signature, Token,
TypePath,
};
@@ -139,11 +139,28 @@ impl VisitMut for ReplaceSelf {
self.prepend_underscore_to_self(i);
}
+ fn visit_path_mut(&mut self, p: &mut Path) {
+ if p.segments.len() == 1 {
+ // Replace `self`, but not `self::function`.
+ self.visit_ident_mut(&mut p.segments[0].ident);
+ }
+ for segment in &mut p.segments {
+ self.visit_path_arguments_mut(&mut segment.arguments);
+ }
+ }
+
fn visit_item_mut(&mut self, i: &mut Item) {
// Visit `macro_rules!` because locally defined macros can refer to
- // `self`. Otherwise, do not recurse into nested items.
+ // `self`.
+ //
+ // Visit `futures::select` and similar select macros, which commonly
+ // appear syntactically like an item despite expanding to an expression.
+ //
+ // Otherwise, do not recurse into nested items.
if let Item::Macro(i) = i {
- if i.mac.path.is_ident("macro_rules") {
+ if i.mac.path.is_ident("macro_rules")
+ || i.mac.path.segments.last().unwrap().ident == "select"
+ {
self.visit_macro_mut(&mut i.mac)
}
}
diff --git a/tests/test.rs b/tests/test.rs
index 604d092..6f95576 100644
--- a/tests/test.rs
+++ b/tests/test.rs
@@ -1,6 +1,6 @@
#![cfg_attr(
async_trait_nightly_testing,
- feature(min_specialization, min_const_generics, type_alias_impl_trait)
+ feature(min_specialization, min_type_alias_impl_trait)
)]
#![allow(
clippy::let_underscore_drop,
@@ -615,7 +615,6 @@ pub mod issue45 {
}
#[test]
- #[should_panic]
fn tracing() {
// Create the future outside of the subscriber, as no call to tracing
// should be made until the future is polled.
@@ -1322,3 +1321,43 @@ pub mod issue154 {
}
}
}
+
+// https://github.com/dtolnay/async-trait/issues/158
+pub mod issue158 {
+ use async_trait::async_trait;
+
+ fn f() {}
+
+ #[async_trait]
+ pub trait Trait {
+ async fn f(&self) {
+ self::f()
+ }
+ }
+}
+
+// https://github.com/dtolnay/async-trait/issues/161
+#[allow(clippy::mut_mut)]
+pub mod issue161 {
+ use async_trait::async_trait;
+ use futures::future::FutureExt;
+ use std::sync::Arc;
+
+ #[async_trait]
+ pub trait Trait {
+ async fn f(self: Arc<Self>);
+ }
+
+ pub struct MyStruct(bool);
+
+ #[async_trait]
+ impl Trait for MyStruct {
+ async fn f(self: Arc<Self>) {
+ futures::select! {
+ _ = async {
+ println!("{}", self.0);
+ }.fuse() => {}
+ }
+ }
+ }
+}