diff options
author | Joel Galenson <jgalenson@google.com> | 2021-08-11 15:23:20 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-08-11 15:23:20 +0000 |
commit | 4cfc0f6e8bb63bd21b9c141a4fa1f9c644b22f4e (patch) | |
tree | 9b6e6633ecc2299c1a0d601f3989284f73b8659f /src/pin_project | |
parent | 958222491263b55afddf144bee622d0d795f9b4d (diff) | |
parent | e8adb29cb4721b39600cb5fd104298f23d11393e (diff) | |
download | pin-project-internal-4cfc0f6e8bb63bd21b9c141a4fa1f9c644b22f4e.tar.gz |
Upgrade rust/crates/pin-project-internal to 1.0.8 am: 390cfc29ad am: 3d23b9a9a9 am: 3536cb78bf am: ba297fb2ec am: e8adb29cb4
Original change: https://android-review.googlesource.com/c/platform/external/rust/crates/pin-project-internal/+/1791069
Change-Id: Ie23e3f02cc766c9c96015b03883ae3209f461c30
Diffstat (limited to 'src/pin_project')
-rw-r--r-- | src/pin_project/derive.rs | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/src/pin_project/derive.rs b/src/pin_project/derive.rs index 7dc1ba5..47c061f 100644 --- a/src/pin_project/derive.rs +++ b/src/pin_project/derive.rs @@ -88,6 +88,7 @@ impl GenerateTokens { // * https://github.com/taiki-e/pin-project/pull/70 #allowed_lints #[allow(clippy::semicolon_if_nothing_returned)] + #[allow(clippy::use_self)] #[allow(clippy::used_underscore_binding)] const _: () = { #scoped @@ -112,12 +113,13 @@ fn global_allowed_lints() -> TokenStream { #[allow(clippy::unknown_clippy_lints)] #[allow(clippy::pattern_type_mismatch)] #[allow(clippy::redundant_pub_crate)] // This lint warns `pub(crate)` field in private struct. + #[allow(clippy::type_repetition_in_bounds)] // https://github.com/rust-lang/rust-clippy/issues/4326 } } /// Returns attributes used on projected types. -fn proj_allowed_lints(kind: TypeKind) -> (TokenStream, TokenStream, TokenStream) { - let large_enum_variant = if kind == Enum { +fn proj_allowed_lints(cx: &Context<'_>) -> (TokenStream, TokenStream, TokenStream) { + let large_enum_variant = if cx.kind == Enum { Some(quote! { #[allow(variant_size_differences)] #[allow(clippy::large_enum_variant)] @@ -126,20 +128,22 @@ fn proj_allowed_lints(kind: TypeKind) -> (TokenStream, TokenStream, TokenStream) None }; let global_allowed_lints = global_allowed_lints(); + let proj_mut_allowed_lints = if cx.project { Some(&global_allowed_lints) } else { None }; let proj_mut = quote! { - #global_allowed_lints + #proj_mut_allowed_lints #[allow(dead_code)] // This lint warns unused fields/variants. #[allow(clippy::mut_mut)] // This lint warns `&mut &mut <ty>`. - #[allow(clippy::type_repetition_in_bounds)] // https://github.com/rust-lang/rust-clippy/issues/4326} }; + let proj_ref_allowed_lints = if cx.project_ref { Some(&global_allowed_lints) } else { None }; let proj_ref = quote! { - #global_allowed_lints + #proj_ref_allowed_lints #[allow(dead_code)] // This lint warns unused fields/variants. #[allow(clippy::ref_option_ref)] // This lint warns `&Option<&<ty>>`. - #[allow(clippy::type_repetition_in_bounds)] // https://github.com/rust-lang/rust-clippy/issues/4326 }; + let proj_own_allowed_lints = + if cx.project_replace.ident().is_some() { Some(&global_allowed_lints) } else { None }; let proj_own = quote! { - #global_allowed_lints + #proj_own_allowed_lints #[allow(dead_code)] // This lint warns unused fields/variants. #large_enum_variant }; @@ -368,7 +372,7 @@ fn parse_struct<'a>( Fields::Unit => unreachable!(), }; - let (proj_attrs, proj_ref_attrs, proj_own_attrs) = proj_allowed_lints(cx.kind); + let (proj_attrs, proj_ref_attrs, proj_own_attrs) = proj_allowed_lints(cx); generate.extend(cx.project, quote! { #proj_attrs #vis struct #proj_ident #proj_generics #where_clause_fields @@ -441,7 +445,7 @@ fn parse_enum<'a>( let proj_generics = &cx.proj.generics; let proj_where_clause = &cx.proj.where_clause; - let (proj_attrs, proj_ref_attrs, proj_own_attrs) = proj_allowed_lints(cx.kind); + let (proj_attrs, proj_ref_attrs, proj_own_attrs) = proj_allowed_lints(cx); if cx.project { generate.extend(true, quote! { #proj_attrs @@ -611,7 +615,7 @@ fn visit_fields<'a>( let proj_own_fields = surround(delim, proj_own_fields); let proj_move = Group::new(delim, proj_move); - let proj_own_body = proj_own_body(cx, variant_ident, Some(proj_move), &pinned_bindings); + let proj_own_body = proj_own_body(cx, variant_ident, Some(&proj_move), &pinned_bindings); Ok(ProjectedFields { proj_pat, @@ -629,7 +633,7 @@ fn visit_fields<'a>( fn proj_own_body( cx: &Context<'_>, variant_ident: Option<&Ident>, - proj_move: Option<Group>, + proj_move: Option<&Group>, pinned_fields: &[Ident], ) -> TokenStream { let ident = &cx.proj.own_ident; @@ -889,7 +893,7 @@ fn make_drop_impl(cx: &Context<'_>) -> TokenStream { // Since the user did not pass `PinnedDrop` to `#[pin_project]`, any `PinnedDrop` // impl will not actually be called. Unfortunately, we can't detect this situation // directly from either the `#[pin_project]` or `#[pinned_drop]` attributes, since - // we don't know what other attirbutes/impl may exist. + // we don't know what other attributes/impl may exist. // // To ensure that users don't accidentally write a non-functional `PinnedDrop` // impls, we emit one ourselves. If the user ends up writing a `PinnedDrop` impl, |