summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJoel Galenson <jgalenson@google.com>2021-08-09 10:37:11 -0700
committerJoel Galenson <jgalenson@google.com>2021-08-09 10:37:11 -0700
commit390cfc29adac2bd156ff6ce0508133bf5111c87c (patch)
tree9b6e6633ecc2299c1a0d601f3989284f73b8659f /src
parent7dbbe7046df8fdeb556cde6a8cf2cbaf266632a0 (diff)
downloadpin-project-internal-390cfc29adac2bd156ff6ce0508133bf5111c87c.tar.gz
Upgrade rust/crates/pin-project-internal to 1.0.8android-s-beta-5android-s-beta-5
Test: make Change-Id: I8e35b098a986f257e9d1bcd95c81d422feac6d1b
Diffstat (limited to 'src')
-rw-r--r--src/lib.rs2
-rw-r--r--src/pin_project/derive.rs28
-rw-r--r--src/utils.rs4
3 files changed, 19 insertions, 15 deletions
diff --git a/src/lib.rs b/src/lib.rs
index d14228d..9bfccc0 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -9,7 +9,7 @@
))]
#![warn(unsafe_code)]
#![warn(future_incompatible, rust_2018_idioms, single_use_lifetimes, unreachable_pub)]
-#![warn(clippy::default_trait_access)]
+#![warn(clippy::default_trait_access, clippy::wildcard_imports)]
#![allow(clippy::needless_doctest_main)]
// older compilers require explicit `extern crate`.
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,
diff --git a/src/utils.rs b/src/utils.rs
index 2db00e2..3fa07e7 100644
--- a/src/utils.rs
+++ b/src/utils.rs
@@ -261,7 +261,7 @@ impl ReplaceReceiver<'_> {
match iter.peek() {
Some(TokenTree::Punct(p)) if p.as_char() == ':' => {
let span = ident.span();
- out.extend(quote_spanned!(span=> <#self_ty>))
+ out.extend(quote_spanned!(span=> <#self_ty>));
}
_ => out.extend(quote!(#self_ty)),
}
@@ -356,7 +356,7 @@ impl VisitMut for ReplaceReceiver<'_> {
match item {
// Visit `macro_rules!` because locally defined macros can refer to `self`.
Item::Macro(item) if item.mac.path.is_ident("macro_rules") => {
- self.visit_macro_mut(&mut item.mac)
+ self.visit_macro_mut(&mut item.mac);
}
// Otherwise, do not recurse into nested items.
_ => {}