Skip to content

Commit

Permalink
Prefix codegen imports to avoid name collisions.
Browse files Browse the repository at this point in the history
Fixes #817.
  • Loading branch information
SergioBenitez committed Nov 12, 2018
1 parent 834c91a commit 3b6c4d2
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 46 deletions.
8 changes: 4 additions & 4 deletions contrib/codegen/src/database.rs
Expand Up @@ -96,15 +96,15 @@ pub fn database_attr(attr: TokenStream, input: TokenStream) -> Result<TokenStrea
match pool {
Ok(Ok(p)) => Ok(rocket.manage(#pool_type(p))),
Err(config_error) => {
::rocket::logger::log_error(
::rocket::logger::error(
&format!("Database configuration failure: '{}'", #name));
::rocket::logger::log_error_(&format!("{}", config_error));
::rocket::logger::error_(&format!("{}", config_error));
Err(rocket)
},
Ok(Err(pool_error)) => {
::rocket::logger::log_error(
::rocket::logger::error(
&format!("Failed to initialize pool for '{}'", #name));
::rocket::logger::log_error_(&format!("{:?}", pool_error));
::rocket::logger::error_(&format!("{:?}", pool_error));
Err(rocket)
},
}
Expand Down
72 changes: 34 additions & 38 deletions core/codegen/src/attribute/route.rs
Expand Up @@ -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;
// that's the point of statically checking the URI parameters.
let internal_error = quote!({
log_error("Internal invariant error: expected dynamic parameter not found.");
log_error("Please report this error to the Rocket issue tracker.");
Outcome::Forward(__data)
___l::error("Internal invariant error: expected dynamic parameter not found.");
___l::error("Please report this error to the Rocket issue tracker.");
___Outcome::Forward(__data)
});

// Returned when a dynamic parameter fails to parse.
let parse_error = quote!({
log_warn_(&format!("Failed to parse '{}': {:?}", #name, __e));
Outcome::Forward(__data)
___l::warn_(&format!("Failed to parse '{}': {:?}", #name, __e));
___Outcome::Forward(__data)
});

let expr = match seg.kind {
Kind::Single => quote_spanned! { span =>
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,
Err(__e) => return #parse_error,
},
Expand All @@ -154,7 +154,7 @@ fn param_expr(seg: &Segment, ident: &syn::Ident, ty: &syn::Type) -> TokenStream2
},
Kind::Multi => quote_spanned! { span =>
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,
Err(__e) => return #parse_error,
},
Expand All @@ -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 {
let span = ident.span().unstable().join(ty.span()).unwrap().into();
quote_spanned! { span =>
let __transform = <#ty as FromData>::transform(__req, __data);
let __transform = <#ty as ___FromData>::transform(__req, __data);

#[allow(unreachable_patterns, unreachable_code)]
let __outcome = match __transform {
Owned(Outcome::Success(__v)) => Owned(Outcome::Success(__v)),
Borrowed(Outcome::Success(ref __v)) => {
Borrowed(Outcome::Success(::std::borrow::Borrow::borrow(__v)))
___T::Owned(___Outcome::Success(__v)) => ___T::Owned(___Outcome::Success(__v)),
___T::Borrowed(___Outcome::Success(ref __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")
})),
Owned(__o) => Owned(__o),
___T::Owned(__o) => ___T::Owned(__o),
};

#[allow(non_snake_case, unreachable_patterns, unreachable_code)]
let #ident: #ty = match <#ty as FromData>::from_data(__req, __outcome) {
Outcome::Success(__d) => __d,
Outcome::Forward(__d) => return Outcome::Forward(__d),
Outcome::Failure((__c, _)) => return Outcome::Failure(__c),
let #ident: #ty = match <#ty as ___FromData>::from_data(__req, __outcome) {
___Outcome::Success(__d) => __d,
___Outcome::Forward(__d) => return ___Outcome::Forward(__d),
___Outcome::Failure((__c, _)) => return ___Outcome::Failure(__c),
};
}
}
Expand All @@ -218,7 +218,7 @@ fn query_exprs(route: &Route) -> Option<TokenStream2> {
let mut #ident: Option<#ty> = None;
},
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!()
};
Expand All @@ -227,11 +227,11 @@ fn query_exprs(route: &Route) -> Option<TokenStream2> {
Kind::Single => quote_spanned! { span =>
(_, #name, __v) => {
#[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,
Err(__e) => {
log_warn_(&format!("Failed to parse '{}': {:?}", #name, __e));
return Outcome::Forward(__data);
___l::warn_(&format!("Failed to parse '{}': {:?}", #name, __e));
return ___Outcome::Forward(__data);
}
};

Expand All @@ -248,20 +248,20 @@ fn query_exprs(route: &Route) -> Option<TokenStream2> {

let builder = match segment.kind {
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,
None => {
log_warn_(&format!("Missing required query parameter '{}'.", #name));
return Outcome::Forward(__data);
___l::warn_(&format!("Missing required query parameter '{}'.", #name));
return ___Outcome::Forward(__data);
}
};
},
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,
Err(__e) => {
log_warn_(&format!("Failed to parse '{}': {:?}", #name, __e));
return Outcome::Forward(__data);
___l::warn_(&format!("Failed to parse '{}': {:?}", #name, __e));
return ___Outcome::Forward(__data);
}
};
},
Expand Down Expand Up @@ -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();
quote_spanned! { span =>
#[allow(non_snake_case, unreachable_patterns, unreachable_code)]
let #ident: #ty = match <#ty as FromRequest>::from_request(__req) {
Outcome::Success(__v) => __v,
Outcome::Forward(_) => return Outcome::Forward(__data),
Outcome::Failure((__c, _)) => return Outcome::Failure(__c),
let #ident: #ty = match <#ty as ___r::FromRequest>::from_request(__req) {
___Outcome::Success(__v) => __v,
___Outcome::Forward(_) => return ___Outcome::Forward(__data),
___Outcome::Failure((__c, _)) => return ___Outcome::Failure(__c),
};
}
}
Expand Down Expand Up @@ -376,20 +376,16 @@ fn codegen_route(route: Route) -> Result<TokenStream> {
) -> ::rocket::handler::Outcome<'_b> {
#[allow(unused_imports)]
use rocket::{
handler, Outcome,
logger::{log_warn, log_error, log_warn_},
data::{FromData, Transform::*},
http::{SmallVec, RawStr},
request::{FromRequest, FromParam, FromFormValue, FromSegments},
request::{Query, FromQuery, FormItems, FormItem},
Outcome as ___Outcome, logger as ___l, request as ___r,
data::{FromData as ___FromData, Transform as ___T},
};

#(#req_guard_definitions)*
#(#parameter_definitions)*
#data_stmt

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.
Expand Down
8 changes: 4 additions & 4 deletions core/lib/src/logger.rs
Expand Up @@ -222,7 +222,7 @@ macro_rules! external_log_function {
)
}

external_log_function!(log_error: error);
external_log_function!(log_error_: error_);
external_log_function!(log_warn: warn);
external_log_function!(log_warn_: warn_);
external_log_function!(error: error);
external_log_function!(error_: error_);
external_log_function!(warn: warn);
external_log_function!(warn_: warn_);

0 comments on commit 3b6c4d2

Please sign in to comment.