Prefix codegen imports to avoid name collisions.

Fixes #817.
This commit is contained in:
Sergio Benitez 2018-11-12 13:08:39 -08:00
parent 834c91ae9d
commit 3b6c4d2a5f
3 changed files with 42 additions and 46 deletions

View File

@ -96,15 +96,15 @@ pub fn database_attr(attr: TokenStream, input: TokenStream) -> Result<TokenStrea
match pool { match pool {
Ok(Ok(p)) => Ok(rocket.manage(#pool_type(p))), Ok(Ok(p)) => Ok(rocket.manage(#pool_type(p))),
Err(config_error) => { Err(config_error) => {
::rocket::logger::log_error( ::rocket::logger::error(
&format!("Database configuration failure: '{}'", #name)); &format!("Database configuration failure: '{}'", #name));
::rocket::logger::log_error_(&format!("{}", config_error)); ::rocket::logger::error_(&format!("{}", config_error));
Err(rocket) Err(rocket)
}, },
Ok(Err(pool_error)) => { Ok(Err(pool_error)) => {
::rocket::logger::log_error( ::rocket::logger::error(
&format!("Failed to initialize pool for '{}'", #name)); &format!("Failed to initialize pool for '{}'", #name));
::rocket::logger::log_error_(&format!("{:?}", pool_error)); ::rocket::logger::error_(&format!("{:?}", pool_error));
Err(rocket) Err(rocket)
}, },
} }

View File

@ -131,21 +131,21 @@ fn param_expr(seg: &Segment, ident: &syn::Ident, ty: &syn::Type) -> TokenStream2
// All dynamic parameter should be found if this function is being called; // All dynamic parameter should be found if this function is being called;
// that's the point of statically checking the URI parameters. // that's the point of statically checking the URI parameters.
let internal_error = quote!({ let internal_error = quote!({
log_error("Internal invariant error: expected dynamic parameter not found."); ___l::error("Internal invariant error: expected dynamic parameter not found.");
log_error("Please report this error to the Rocket issue tracker."); ___l::error("Please report this error to the Rocket issue tracker.");
Outcome::Forward(__data) ___Outcome::Forward(__data)
}); });
// Returned when a dynamic parameter fails to parse. // Returned when a dynamic parameter fails to parse.
let parse_error = quote!({ let parse_error = quote!({
log_warn_(&format!("Failed to parse '{}': {:?}", #name, __e)); ___l::warn_(&format!("Failed to parse '{}': {:?}", #name, __e));
Outcome::Forward(__data) ___Outcome::Forward(__data)
}); });
let expr = match seg.kind { let expr = match seg.kind {
Kind::Single => quote_spanned! { span => Kind::Single => quote_spanned! { span =>
match __req.raw_segment_str(#i) { match __req.raw_segment_str(#i) {
Some(__s) => match <#ty as FromParam>::from_param(__s) { Some(__s) => match <#ty as ___r::FromParam>::from_param(__s) {
Ok(__v) => __v, Ok(__v) => __v,
Err(__e) => return #parse_error, Err(__e) => return #parse_error,
}, },
@ -154,7 +154,7 @@ fn param_expr(seg: &Segment, ident: &syn::Ident, ty: &syn::Type) -> TokenStream2
}, },
Kind::Multi => quote_spanned! { span => Kind::Multi => quote_spanned! { span =>
match __req.raw_segments(#i) { match __req.raw_segments(#i) {
Some(__s) => match <#ty as FromSegments>::from_segments(__s) { Some(__s) => match <#ty as ___r::FromSegments>::from_segments(__s) {
Ok(__v) => __v, Ok(__v) => __v,
Err(__e) => return #parse_error, Err(__e) => return #parse_error,
}, },
@ -173,25 +173,25 @@ fn param_expr(seg: &Segment, ident: &syn::Ident, ty: &syn::Type) -> TokenStream2
fn data_expr(ident: &syn::Ident, ty: &syn::Type) -> TokenStream2 { fn data_expr(ident: &syn::Ident, ty: &syn::Type) -> TokenStream2 {
let span = ident.span().unstable().join(ty.span()).unwrap().into(); let span = ident.span().unstable().join(ty.span()).unwrap().into();
quote_spanned! { span => quote_spanned! { span =>
let __transform = <#ty as FromData>::transform(__req, __data); let __transform = <#ty as ___FromData>::transform(__req, __data);
#[allow(unreachable_patterns, unreachable_code)] #[allow(unreachable_patterns, unreachable_code)]
let __outcome = match __transform { let __outcome = match __transform {
Owned(Outcome::Success(__v)) => Owned(Outcome::Success(__v)), ___T::Owned(___Outcome::Success(__v)) => ___T::Owned(___Outcome::Success(__v)),
Borrowed(Outcome::Success(ref __v)) => { ___T::Borrowed(___Outcome::Success(ref __v)) => {
Borrowed(Outcome::Success(::std::borrow::Borrow::borrow(__v))) ___T::Borrowed(___Outcome::Success(::std::borrow::Borrow::borrow(__v)))
}, },
Borrowed(__o) => Borrowed(__o.map(|_| { ___T::Borrowed(__o) => ___T::Borrowed(__o.map(|_| {
unreachable!("Borrowed(Success(..)) case handled in previous block") unreachable!("Borrowed(Success(..)) case handled in previous block")
})), })),
Owned(__o) => Owned(__o), ___T::Owned(__o) => ___T::Owned(__o),
}; };
#[allow(non_snake_case, unreachable_patterns, unreachable_code)] #[allow(non_snake_case, unreachable_patterns, unreachable_code)]
let #ident: #ty = match <#ty as FromData>::from_data(__req, __outcome) { let #ident: #ty = match <#ty as ___FromData>::from_data(__req, __outcome) {
Outcome::Success(__d) => __d, ___Outcome::Success(__d) => __d,
Outcome::Forward(__d) => return Outcome::Forward(__d), ___Outcome::Forward(__d) => return ___Outcome::Forward(__d),
Outcome::Failure((__c, _)) => return Outcome::Failure(__c), ___Outcome::Failure((__c, _)) => return ___Outcome::Failure(__c),
}; };
} }
} }
@ -218,7 +218,7 @@ fn query_exprs(route: &Route) -> Option<TokenStream2> {
let mut #ident: Option<#ty> = None; let mut #ident: Option<#ty> = None;
}, },
Kind::Multi => quote_spanned! { span => Kind::Multi => quote_spanned! { span =>
let mut __trail = SmallVec::<[FormItem; 8]>::new(); let mut __trail = ::rocket::http::SmallVec::<[___r::FormItem; 8]>::new();
}, },
Kind::Static => quote!() Kind::Static => quote!()
}; };
@ -227,11 +227,11 @@ fn query_exprs(route: &Route) -> Option<TokenStream2> {
Kind::Single => quote_spanned! { span => Kind::Single => quote_spanned! { span =>
(_, #name, __v) => { (_, #name, __v) => {
#[allow(unreachable_patterns, unreachable_code)] #[allow(unreachable_patterns, unreachable_code)]
let __v = match <#ty as FromFormValue>::from_form_value(__v) { let __v = match <#ty as ___r::FromFormValue>::from_form_value(__v) {
Ok(__v) => __v, Ok(__v) => __v,
Err(__e) => { Err(__e) => {
log_warn_(&format!("Failed to parse '{}': {:?}", #name, __e)); ___l::warn_(&format!("Failed to parse '{}': {:?}", #name, __e));
return Outcome::Forward(__data); return ___Outcome::Forward(__data);
} }
}; };
@ -248,20 +248,20 @@ fn query_exprs(route: &Route) -> Option<TokenStream2> {
let builder = match segment.kind { let builder = match segment.kind {
Kind::Single => quote_spanned! { span => Kind::Single => quote_spanned! { span =>
let #ident = match #ident.or_else(<#ty as FromFormValue>::default) { let #ident = match #ident.or_else(<#ty as ___r::FromFormValue>::default) {
Some(__v) => __v, Some(__v) => __v,
None => { None => {
log_warn_(&format!("Missing required query parameter '{}'.", #name)); ___l::warn_(&format!("Missing required query parameter '{}'.", #name));
return Outcome::Forward(__data); return ___Outcome::Forward(__data);
} }
}; };
}, },
Kind::Multi => quote_spanned! { span => Kind::Multi => quote_spanned! { span =>
let #ident = match <#ty as FromQuery>::from_query(Query(&__trail)) { let #ident = match <#ty as ___r::FromQuery>::from_query(___r::Query(&__trail)) {
Ok(__v) => __v, Ok(__v) => __v,
Err(__e) => { Err(__e) => {
log_warn_(&format!("Failed to parse '{}': {:?}", #name, __e)); ___l::warn_(&format!("Failed to parse '{}': {:?}", #name, __e));
return Outcome::Forward(__data); return ___Outcome::Forward(__data);
} }
}; };
}, },
@ -299,10 +299,10 @@ fn request_guard_expr(ident: &syn::Ident, ty: &syn::Type) -> TokenStream2 {
let span = ident.span().unstable().join(ty.span()).unwrap().into(); let span = ident.span().unstable().join(ty.span()).unwrap().into();
quote_spanned! { span => quote_spanned! { span =>
#[allow(non_snake_case, unreachable_patterns, unreachable_code)] #[allow(non_snake_case, unreachable_patterns, unreachable_code)]
let #ident: #ty = match <#ty as FromRequest>::from_request(__req) { let #ident: #ty = match <#ty as ___r::FromRequest>::from_request(__req) {
Outcome::Success(__v) => __v, ___Outcome::Success(__v) => __v,
Outcome::Forward(_) => return Outcome::Forward(__data), ___Outcome::Forward(_) => return ___Outcome::Forward(__data),
Outcome::Failure((__c, _)) => return Outcome::Failure(__c), ___Outcome::Failure((__c, _)) => return ___Outcome::Failure(__c),
}; };
} }
} }
@ -376,12 +376,8 @@ fn codegen_route(route: Route) -> Result<TokenStream> {
) -> ::rocket::handler::Outcome<'_b> { ) -> ::rocket::handler::Outcome<'_b> {
#[allow(unused_imports)] #[allow(unused_imports)]
use rocket::{ use rocket::{
handler, Outcome, Outcome as ___Outcome, logger as ___l, request as ___r,
logger::{log_warn, log_error, log_warn_}, data::{FromData as ___FromData, Transform as ___T},
data::{FromData, Transform::*},
http::{SmallVec, RawStr},
request::{FromRequest, FromParam, FromFormValue, FromSegments},
request::{Query, FromQuery, FormItems, FormItem},
}; };
#(#req_guard_definitions)* #(#req_guard_definitions)*
@ -389,7 +385,7 @@ fn codegen_route(route: Route) -> Result<TokenStream> {
#data_stmt #data_stmt
let ___responder = #user_handler_fn_name(#(#parameter_names),*); let ___responder = #user_handler_fn_name(#(#parameter_names),*);
handler::Outcome::from(__req, ___responder) ::rocket::handler::Outcome::from(__req, ___responder)
} }
/// Rocket code generated wrapping URI macro. /// Rocket code generated wrapping URI macro.

View File

@ -222,7 +222,7 @@ macro_rules! external_log_function {
) )
} }
external_log_function!(log_error: error); external_log_function!(error: error);
external_log_function!(log_error_: error_); external_log_function!(error_: error_);
external_log_function!(log_warn: warn); external_log_function!(warn: warn);
external_log_function!(log_warn_: warn_); external_log_function!(warn_: warn_);