Silence more warnings in generated code.

Resolves #2655.
This commit is contained in:
Sergio Benitez 2023-12-05 17:29:30 -08:00
parent 7f7d352e45
commit 8d9dfcecad
2 changed files with 12 additions and 10 deletions

View File

@ -1,9 +1,10 @@
use super::EntryAttr;
use devise::{Spanned, Result}; use devise::{Spanned, Result};
use devise::ext::SpanDiagnosticExt; use devise::ext::SpanDiagnosticExt;
use proc_macro2::{TokenStream, Span}; use proc_macro2::{TokenStream, Span};
use super::EntryAttr;
use crate::exports::mixed;
/// `#[rocket::launch]`: generates a `main` function that calls the attributed /// `#[rocket::launch]`: generates a `main` function that calls the attributed
/// function to generate a `Rocket` instance. Then calls `.launch()` on the /// function to generate a `Rocket` instance. Then calls `.launch()` on the
/// returned instance inside of an `rocket::async_main`. /// returned instance inside of an `rocket::async_main`.
@ -78,7 +79,7 @@ impl EntryAttr for Launch {
}; };
let block = &f.block; let block = &f.block;
let rocket = quote_spanned!(ty.span() => { let rocket = quote_spanned!(mixed(ty.span()) => {
let ___rocket: #ty = #block; let ___rocket: #ty = #block;
let ___rocket: ::rocket::Rocket<::rocket::Build> = ___rocket; let ___rocket: ::rocket::Rocket<::rocket::Build> = ___rocket;
___rocket ___rocket

View File

@ -120,12 +120,13 @@ pub fn derive_from_form(input: proc_macro::TokenStream) -> TokenStream {
let (ctxt_ty, gen) = context_type(input)?; let (ctxt_ty, gen) = context_type(input)?;
let (impl_gen, _, where_clause) = gen.split_for_impl(); let (impl_gen, _, where_clause) = gen.split_for_impl();
let output = mapper::input_default(mapper, input)?; let output = mapper::input_default(mapper, input)?;
Ok(quote_spanned! { input.span() => Ok(quote_spanned! { mixed(input.span()) =>
/// Rocket generated FormForm context. /// Rocket generated FormForm context.
#[doc(hidden)] #[doc(hidden)]
#[allow(unknown_lints)] #[allow(unknown_lints)]
#[allow(renamed_and_removed_lints)] #[allow(renamed_and_removed_lints)]
#[allow(private_in_public, private_bounds)] #[allow(private_in_public)]
#[allow(private_bounds)]
#vis struct #ctxt_ty #impl_gen #where_clause { #vis struct #ctxt_ty #impl_gen #where_clause {
__opts: #_form::Options, __opts: #_form::Options,
__errors: #_form::Errors<'r>, __errors: #_form::Errors<'r>,
@ -150,6 +151,7 @@ pub fn derive_from_form(input: proc_macro::TokenStream) -> TokenStream {
#[allow(unused_imports)] #[allow(unused_imports)]
use #_http::uncased::AsUncased; use #_http::uncased::AsUncased;
}) })
.outer_mapper(quote!(#[allow(clippy::all, clippy::pedantic, clippy::nursery)]))
.outer_mapper(quote!(#[allow(renamed_and_removed_lints)])) .outer_mapper(quote!(#[allow(renamed_and_removed_lints)]))
.outer_mapper(quote!(#[allow(private_in_public)])) .outer_mapper(quote!(#[allow(private_in_public)]))
.outer_mapper(quote!(#[rocket::async_trait])) .outer_mapper(quote!(#[rocket::async_trait]))
@ -205,8 +207,8 @@ pub fn derive_from_form(input: proc_macro::TokenStream) -> TokenStream {
// Without the `let _fut`, we get a wild lifetime error. It don't // Without the `let _fut`, we get a wild lifetime error. It don't
// make no sense, Rust async/await: it don't make no sense. // make no sense, Rust async/await: it don't make no sense.
.try_fields_map(|_, f| fields_map(f, |ty, ctxt| quote_spanned!(ty.span() => { .try_fields_map(|_, f| fields_map(f, |ty, ctxt| quote_spanned!(ty.span() => {
let _fut = <#ty as #_form::FromForm<'r>>::push_data(#ctxt, __f.shift()); let __fut = <#ty as #_form::FromForm<'r>>::push_data(#ctxt, __f.shift());
_fut.await; __fut.await;
}))) })))
) )
.inner_mapper(MapperBuild::new() .inner_mapper(MapperBuild::new()
@ -261,7 +263,6 @@ pub fn derive_from_form(input: proc_macro::TokenStream) -> TokenStream {
<#ty as #_form::FromForm<'r>>::default(__opts) <#ty as #_form::FromForm<'r>>::default(__opts)
})); }));
let _err = _Err;
Ok(quote_spanned! { ty.span() => { Ok(quote_spanned! { ty.span() => {
let __opts = __c.__opts; let __opts = __c.__opts;
let __name = #name_buf_opt; let __name = #name_buf_opt;
@ -271,8 +272,8 @@ pub fn derive_from_form(input: proc_macro::TokenStream) -> TokenStream {
<#ty as #_form::FromForm<'r>>::finalize <#ty as #_form::FromForm<'r>>::finalize
) )
.map_err(|__e| match __name { .map_err(|__e| match __name {
Some(__name) => __e.with_name(__name), #_Some(__name) => __e.with_name(__name),
None => __e, #_None => __e,
}) })
.map_err(|__e| __e.is_empty() .map_err(|__e| __e.is_empty()
.then(|| #_form::ErrorKind::Unknown.into()) .then(|| #_form::ErrorKind::Unknown.into())