Skip to content

Commit

Permalink
Fix warnings for cloning references in generated code (#1676)
Browse files Browse the repository at this point in the history
  • Loading branch information
alexander-jackson committed Jan 5, 2023
1 parent 2d8242b commit b6c282a
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 2 deletions.
8 changes: 6 additions & 2 deletions axum-macros/src/from_ref.rs
Expand Up @@ -3,7 +3,7 @@ use quote::quote_spanned;
use syn::{
parse::{Parse, ParseStream},
spanned::Spanned,
Field, ItemStruct, Token,
Field, ItemStruct, Token, Type,
};

use crate::attr_parsing::{combine_unary_attribute, parse_attrs, Combine};
Expand All @@ -30,7 +30,11 @@ fn expand_field(state: &Ident, idx: usize, field: &Field) -> TokenStream {
let span = field.ty.span();

let body = if let Some(field_ident) = &field.ident {
quote_spanned! {span=> state.#field_ident.clone() }
if matches!(field_ty, Type::Reference(_)) {
quote_spanned! {span=> state.#field_ident }
} else {
quote_spanned! {span=> state.#field_ident.clone() }
}
} else {
let idx = syn::Index {
index: idx as _,
Expand Down
10 changes: 10 additions & 0 deletions axum-macros/tests/from_ref/pass/reference-types.rs
@@ -0,0 +1,10 @@
#![deny(noop_method_call)]

use axum_macros::FromRef;

#[derive(FromRef)]
struct State {
inner: &'static str,
}

fn main() {}

0 comments on commit b6c282a

Please sign in to comment.