mirror of https://github.com/rwf2/Rocket.git
Update 'devise' to 0.3.
This transitively updates 'syn', 'proc-macro2', and 'quote' to 1.0.
This commit is contained in:
parent
dcea9563fc
commit
0b059e06e5
|
@ -19,8 +19,8 @@ database_attribute = []
|
|||
proc-macro = true
|
||||
|
||||
[dependencies]
|
||||
devise = "0.2"
|
||||
quote = "0.6"
|
||||
quote = "1.0"
|
||||
devise = { git = "https://github.com/SergioBenitez/Devise.git", rev = "e58b3ac9a" }
|
||||
|
||||
[build-dependencies]
|
||||
yansi = "0.5"
|
||||
|
|
|
@ -42,7 +42,7 @@ fn parse_invocation(attr: TokenStream, input: TokenStream) -> Result<DatabaseInv
|
|||
let inner_type = match structure.fields {
|
||||
Fields::Unnamed(ref fields) if fields.unnamed.len() == 1 => {
|
||||
let first = fields.unnamed.first().expect("checked length");
|
||||
first.value().ty.clone()
|
||||
first.ty.clone()
|
||||
}
|
||||
_ => return Err(structure.fields.span().error(ONLY_UNNAMED_FIELDS).help(EXAMPLE))
|
||||
};
|
||||
|
|
|
@ -17,9 +17,9 @@ proc-macro = true
|
|||
|
||||
[dependencies]
|
||||
indexmap = "1.0"
|
||||
quote = "0.6.1"
|
||||
quote = "1.0"
|
||||
rocket_http = { version = "0.5.0-dev", path = "../http/" }
|
||||
devise = "0.2"
|
||||
devise = { git = "https://github.com/SergioBenitez/Devise.git", rev = "e58b3ac9a" }
|
||||
|
||||
[build-dependencies]
|
||||
yansi = "0.5"
|
||||
|
|
|
@ -44,7 +44,7 @@ pub fn _catch(args: TokenStream, input: TokenStream) -> Result<TokenStream> {
|
|||
|
||||
// Gather everything we'll need to generate the catcher.
|
||||
let user_catcher_fn = &catch.function;
|
||||
let mut user_catcher_fn_name = catch.function.ident.clone();
|
||||
let mut user_catcher_fn_name = catch.function.sig.ident.clone();
|
||||
let generated_struct_name = user_catcher_fn_name.prepend(CATCH_STRUCT_PREFIX);
|
||||
let generated_fn_name = user_catcher_fn_name.prepend(CATCH_FN_PREFIX);
|
||||
let (vis, status) = (&catch.function.vis, &catch.status);
|
||||
|
@ -54,20 +54,20 @@ pub fn _catch(args: TokenStream, input: TokenStream) -> Result<TokenStream> {
|
|||
define_vars_and_mods!(req, catcher, response, Request, Response);
|
||||
|
||||
// Determine the number of parameters that will be passed in.
|
||||
let (fn_sig, inputs) = match catch.function.decl.inputs.len() {
|
||||
let (fn_sig, inputs) = match catch.function.sig.inputs.len() {
|
||||
0 => (quote!(fn() -> _), quote!()),
|
||||
1 => (quote!(fn(&#Request) -> _), quote!(#req)),
|
||||
_ => return Err(catch.function.decl.inputs.span()
|
||||
_ => return Err(catch.function.sig.inputs.span()
|
||||
.error("invalid number of arguments: must be zero or one")
|
||||
.help("catchers may optionally take an argument of type `&Request`"))
|
||||
};
|
||||
|
||||
// Set the span of the function name to point to inputs so that a later type
|
||||
// coercion failure points to the user's catcher's handler input.
|
||||
user_catcher_fn_name.set_span(catch.function.decl.inputs.span().into());
|
||||
user_catcher_fn_name.set_span(catch.function.sig.inputs.span().into());
|
||||
|
||||
// This ensures that "Responder not implemented" points to the return type.
|
||||
let return_type_span = catch.function.decl.output.ty()
|
||||
let return_type_span = catch.function.sig.output.ty()
|
||||
.map(|ty| ty.span().into())
|
||||
.unwrap_or(Span::call_site().into());
|
||||
|
||||
|
|
|
@ -85,11 +85,11 @@ fn parse_route(attr: RouteAttribute, function: syn::ItemFn) -> Result<Route> {
|
|||
// Check the validity of function arguments.
|
||||
let mut inputs = vec![];
|
||||
let mut fn_segments: IndexSet<Segment> = IndexSet::new();
|
||||
for input in &function.decl.inputs {
|
||||
for input in &function.sig.inputs {
|
||||
let help = "all handler arguments must be of the form: `ident: Type`";
|
||||
let span = input.span();
|
||||
let (ident, ty) = match input {
|
||||
syn::FnArg::Captured(arg) => match arg.pat {
|
||||
syn::FnArg::Typed(arg) => match *arg.pat {
|
||||
syn::Pat::Ident(ref pat) => (&pat.ident, &arg.ty),
|
||||
syn::Pat::Wild(_) => {
|
||||
diags.push(span.error("handler arguments cannot be ignored").help(help));
|
||||
|
@ -113,8 +113,8 @@ fn parse_route(attr: RouteAttribute, function: syn::ItemFn) -> Result<Route> {
|
|||
}
|
||||
|
||||
// Check that all of the declared parameters are function inputs.
|
||||
let span = match function.decl.inputs.is_empty() {
|
||||
false => function.decl.inputs.span(),
|
||||
let span = match function.sig.inputs.is_empty() {
|
||||
false => function.sig.inputs.span(),
|
||||
true => function.span()
|
||||
};
|
||||
|
||||
|
@ -335,7 +335,7 @@ fn generate_internal_uri_macro(route: &Route) -> TokenStream2 {
|
|||
line_column.line.hash(&mut hasher);
|
||||
line_column.column.hash(&mut hasher);
|
||||
|
||||
let mut generated_macro_name = route.function.ident.prepend(URI_MACRO_PREFIX);
|
||||
let mut generated_macro_name = route.function.sig.ident.prepend(URI_MACRO_PREFIX);
|
||||
generated_macro_name.set_span(Span::call_site().into());
|
||||
let inner_generated_macro_name = generated_macro_name.append(&hasher.finish().to_string());
|
||||
let route_uri = route.attribute.path.origin.0.to_string();
|
||||
|
@ -386,7 +386,7 @@ fn codegen_route(route: Route) -> Result<TokenStream> {
|
|||
// Gather everything we need.
|
||||
define_vars_and_mods!(req, data, handler, Request, Data, StaticRouteInfo);
|
||||
let (vis, user_handler_fn) = (&route.function.vis, &route.function);
|
||||
let user_handler_fn_name = &user_handler_fn.ident;
|
||||
let user_handler_fn_name = &user_handler_fn.sig.ident;
|
||||
let generated_fn_name = user_handler_fn_name.prepend(ROUTE_FN_PREFIX);
|
||||
let generated_struct_name = user_handler_fn_name.prepend(ROUTE_STRUCT_PREFIX);
|
||||
let parameter_names = route.inputs.iter().map(|(_, rocket_ident, _)| rocket_ident);
|
||||
|
|
|
@ -11,7 +11,7 @@ mod uri_parsing;
|
|||
|
||||
crate fn prefix_last_segment(path: &mut Path, prefix: &str) {
|
||||
let mut last_seg = path.segments.last_mut().expect("syn::Path has segments");
|
||||
last_seg.value_mut().ident = last_seg.value().ident.prepend(prefix);
|
||||
last_seg.ident = last_seg.ident.prepend(prefix);
|
||||
}
|
||||
|
||||
fn _prefixed_vec(
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
use quote::ToTokens;
|
||||
use crate::proc_macro2::TokenStream as TokenStream2;
|
||||
use devise::{FromMeta, MetaItem, Result, ext::Split2};
|
||||
use devise::{FromMeta, MetaItem, Result, ext::{Split2, PathExt}};
|
||||
use crate::http::{self, ext::IntoOwned};
|
||||
use crate::http::uri::{Path, Query};
|
||||
use crate::attribute::segments::{parse_segments, parse_data_segment, Segment, Kind};
|
||||
|
@ -130,16 +130,18 @@ impl FromMeta for Method {
|
|||
let span = meta.value_span();
|
||||
let help_text = format!("method must be one of: {}", VALID_METHODS_STR);
|
||||
|
||||
if let MetaItem::Ident(ident) = meta {
|
||||
let method = ident.to_string().parse()
|
||||
.map_err(|_| span.error("invalid HTTP method").help(&*help_text))?;
|
||||
if let MetaItem::Path(path) = meta {
|
||||
if let Some(ident) = path.last_ident() {
|
||||
let method = ident.to_string().parse()
|
||||
.map_err(|_| span.error("invalid HTTP method").help(&*help_text))?;
|
||||
|
||||
if !VALID_METHODS.contains(&method) {
|
||||
return Err(span.error("invalid HTTP method for route handlers")
|
||||
if !VALID_METHODS.contains(&method) {
|
||||
return Err(span.error("invalid HTTP method for route handlers")
|
||||
.help(&*help_text));
|
||||
}
|
||||
}
|
||||
|
||||
return Ok(Method(method));
|
||||
return Ok(Method(method));
|
||||
}
|
||||
}
|
||||
|
||||
Err(span.error(format!("expected identifier, found {}", meta.description()))
|
||||
|
|
|
@ -44,7 +44,7 @@ error[E0277]: the trait bound `i32: rocket::http::uri::FromUriParam<rocket::http
|
|||
--> $DIR/typed-uri-bad-type.rs:62:26
|
||||
|
|
||||
62 | uri!(optionals: id = Some(10), name = Ok("bob".into()));
|
||||
| ^^^^ the trait `rocket::http::uri::FromUriParam<rocket::http::uri::Path, std::option::Option<{integer}>>` is not implemented for `i32`
|
||||
| ^^^^^^^^ the trait `rocket::http::uri::FromUriParam<rocket::http::uri::Path, std::option::Option<{integer}>>` is not implemented for `i32`
|
||||
|
|
||||
= help: the following implementations were found:
|
||||
i32 as $TRAIT
|
||||
|
@ -56,7 +56,7 @@ error[E0277]: the trait bound `std::string::String: rocket::http::uri::FromUriPa
|
|||
--> $DIR/typed-uri-bad-type.rs:62:43
|
||||
|
|
||||
62 | uri!(optionals: id = Some(10), name = Ok("bob".into()));
|
||||
| ^^ the trait `rocket::http::uri::FromUriParam<rocket::http::uri::Path, std::result::Result<_, _>>` is not implemented for `std::string::String`
|
||||
| ^^^^^^^^^^^^^^^^ the trait `rocket::http::uri::FromUriParam<rocket::http::uri::Path, std::result::Result<_, _>>` is not implemented for `std::string::String`
|
||||
|
|
||||
= help: the following implementations were found:
|
||||
std::string::String as $TRAIT
|
||||
|
|
Loading…
Reference in New Issue