Merge pull request #738 from serde-rs/absolute

Use absolute paths to Ok, Err, and other types and methods
This commit is contained in:
Oliver Schneider 2017-02-02 08:16:51 +01:00 committed by GitHub
commit faaa494579
5 changed files with 67 additions and 57 deletions

View File

@ -9,7 +9,8 @@ use collections::borrow::Cow;
pub use core::default::Default;
pub use core::fmt;
pub use core::marker::PhantomData;
pub use core::result::Result;
pub use core::option::Option::{self, None, Some};
pub use core::result::Result::{self, Ok, Err};
#[cfg(any(feature = "collections", feature = "std"))]
pub fn from_utf8_lossy(bytes: &[u8]) -> Cow<str> {

View File

@ -79,7 +79,7 @@ extern crate core as actual_core;
#[cfg(feature = "std")]
mod core {
pub use std::{ops, hash, fmt, cmp, marker, mem, i8, i16, i32, i64, u8, u16, u32, u64, isize,
usize, f32, f64, char, str, num, slice, iter, cell, default, result};
usize, f32, f64, char, str, num, slice, iter, cell, default, result, option};
#[cfg(feature = "unstable")]
pub use actual_core::nonzero;
}

View File

@ -209,21 +209,21 @@ fn deserialize_unit_struct(
type Value = #type_ident;
fn expecting(&self, formatter: &mut _serde::export::fmt::Formatter) -> _serde::export::fmt::Result {
formatter.write_str(#expecting)
_serde::export::fmt::Formatter::write_str(formatter, #expecting)
}
#[inline]
fn visit_unit<__E>(self) -> _serde::export::Result<#type_ident, __E>
where __E: _serde::de::Error,
{
Ok(#type_ident)
_serde::export::Ok(#type_ident)
}
#[inline]
fn visit_seq<__V>(self, _: __V) -> _serde::export::Result<#type_ident, __V::Error>
where __V: _serde::de::SeqVisitor,
{
Ok(#type_ident)
_serde::export::Ok(#type_ident)
}
}
@ -278,10 +278,10 @@ fn deserialize_tuple(
quote!(_serde::de::VariantVisitor::visit_tuple(visitor, #nfields, #visitor_expr))
} else if nfields == 1 {
let type_name = item_attrs.name().deserialize_name();
quote!(deserializer.deserialize_newtype_struct(#type_name, #visitor_expr))
quote!(_serde::Deserializer::deserialize_newtype_struct(deserializer, #type_name, #visitor_expr))
} else {
let type_name = item_attrs.name().deserialize_name();
quote!(deserializer.deserialize_tuple_struct(#type_name, #nfields, #visitor_expr))
quote!(_serde::Deserializer::deserialize_tuple_struct(deserializer, #type_name, #nfields, #visitor_expr))
};
let all_skipped = fields.iter().all(|field| field.attrs.skip_deserializing());
@ -298,7 +298,7 @@ fn deserialize_tuple(
type Value = #ty;
fn expecting(&self, formatter: &mut _serde::export::fmt::Formatter) -> _serde::export::fmt::Result {
formatter.write_str(#expecting)
_serde::export::fmt::Formatter::write_str(formatter, #expecting)
}
#visit_newtype_struct
@ -341,7 +341,7 @@ fn deserialize_seq(
let visit = match field.attrs.deserialize_with() {
None => {
let field_ty = &field.ty;
quote!(try!(visitor.visit::<#field_ty>()))
quote!(try!(_serde::de::SeqVisitor::visit::<#field_ty>(&mut visitor)))
}
Some(path) => {
let (wrapper, wrapper_impl, wrapper_ty) = wrap_deserialize_with(
@ -349,7 +349,8 @@ fn deserialize_seq(
quote!({
#wrapper
#wrapper_impl
try!(visitor.visit::<#wrapper_ty>()).map(|wrap| wrap.value)
try!(_serde::de::SeqVisitor::visit::<#wrapper_ty>(&mut visitor))
.map(|wrap| wrap.value)
})
}
};
@ -357,7 +358,7 @@ fn deserialize_seq(
let #var = match #visit {
Some(value) => { value },
None => {
return Err(_serde::de::Error::invalid_length(#index_in_seq, &#expecting));
return _serde::export::Err(_serde::de::Error::invalid_length(#index_in_seq, &#expecting));
}
};
};
@ -379,7 +380,7 @@ fn deserialize_seq(
quote! {
#(#let_values)*
Ok(#result)
_serde::export::Ok(#result)
}
}
@ -411,7 +412,7 @@ fn deserialize_newtype_struct(
fn visit_newtype_struct<__E>(self, __e: __E) -> _serde::export::Result<Self::Value, __E::Error>
where __E: _serde::Deserializer,
{
Ok(#type_path(#value))
_serde::export::Ok(#type_path(#value))
}
}
}
@ -461,7 +462,7 @@ fn deserialize_struct(
} else {
let type_name = item_attrs.name().deserialize_name();
quote! {
deserializer.deserialize_struct(#type_name, FIELDS, #visitor_expr)
_serde::Deserializer::deserialize_struct(deserializer, #type_name, FIELDS, #visitor_expr)
}
};
@ -481,7 +482,7 @@ fn deserialize_struct(
type Value = #ty;
fn expecting(&self, formatter: &mut _serde::export::fmt::Formatter) -> _serde::export::fmt::Result {
formatter.write_str(#expecting)
_serde::export::fmt::Formatter::write_str(formatter, #expecting)
}
#[inline]
@ -563,13 +564,14 @@ fn deserialize_item_enum(
// all variants have `#[serde(skip_deserializing)]`.
quote! {
// FIXME: Once we drop support for Rust 1.15:
// let Err(err) = visitor.visit_variant::<__Field>();
// Err(err)
visitor.visit_variant::<__Field>().map(|(impossible, _)| match impossible {})
// let _serde::export::Err(err) = _serde::de::EnumVisitor::visit_variant::<__Field>(visitor);
// _serde::export::Err(err)
_serde::de::EnumVisitor::visit_variant::<__Field>(visitor)
.map(|(impossible, _)| match impossible {})
}
} else {
quote! {
match try!(visitor.visit_variant()) {
match try!(_serde::de::EnumVisitor::visit_variant(visitor)) {
#(#variant_arms)*
}
}
@ -586,7 +588,7 @@ fn deserialize_item_enum(
type Value = #ty;
fn expecting(&self, formatter: &mut _serde::export::fmt::Formatter) -> _serde::export::fmt::Result {
formatter.write_str(#expecting)
_serde::export::fmt::Formatter::write_str(formatter, #expecting)
}
fn visit_enum<__V>(self, visitor: __V) -> _serde::export::Result<#ty, __V::Error>
@ -598,7 +600,7 @@ fn deserialize_item_enum(
#variants_stmt
deserializer.deserialize_enum(#type_name, VARIANTS, #visitor_expr)
_serde::Deserializer::deserialize_enum(deserializer, #type_name, VARIANTS, #visitor_expr)
})
}
@ -615,7 +617,7 @@ fn deserialize_variant(
Style::Unit => {
quote!({
try!(_serde::de::VariantVisitor::visit_unit(visitor));
Ok(#type_ident::#variant_ident)
_serde::export::Ok(#type_ident::#variant_ident)
})
}
Style::Newtype => {
@ -673,7 +675,7 @@ fn deserialize_newtype_variant(
}
};
quote! {
Ok(#type_ident::#variant_ident(#visit)),
_serde::export::Ok(#type_ident::#variant_ident(#visit)),
}
}
@ -701,9 +703,9 @@ fn deserialize_field_visitor(
{
match value {
#(
#variant_indices => Ok(__Field::#field_idents),
#variant_indices => _serde::export::Ok(__Field::#field_idents),
)*
_ => Err(_serde::de::Error::invalid_value(
_ => _serde::export::Err(_serde::de::Error::invalid_value(
_serde::de::Unexpected::Unsigned(value as u64),
&#fallthrough_msg))
}
@ -715,15 +717,15 @@ fn deserialize_field_visitor(
let fallthrough_arm = if is_variant {
quote! {
Err(_serde::de::Error::unknown_variant(value, VARIANTS))
_serde::export::Err(_serde::de::Error::unknown_variant(value, VARIANTS))
}
} else if item_attrs.deny_unknown_fields() {
quote! {
Err(_serde::de::Error::unknown_field(value, FIELDS))
_serde::export::Err(_serde::de::Error::unknown_field(value, FIELDS))
}
} else {
quote! {
Ok(__Field::__ignore)
_serde::export::Ok(__Field::__ignore)
}
};
@ -755,7 +757,7 @@ fn deserialize_field_visitor(
type Value = __Field;
fn expecting(&self, formatter: &mut _serde::export::fmt::Formatter) -> _serde::export::fmt::Result {
formatter.write_str("field name")
_serde::export::fmt::Formatter::write_str(formatter, "field name")
}
#visit_index
@ -765,7 +767,7 @@ fn deserialize_field_visitor(
{
match value {
#(
#field_strs => Ok(__Field::#field_idents),
#field_strs => _serde::export::Ok(__Field::#field_idents),
)*
_ => #fallthrough_arm
}
@ -776,7 +778,7 @@ fn deserialize_field_visitor(
{
match value {
#(
#field_bytes => Ok(__Field::#field_idents),
#field_bytes => _serde::export::Ok(__Field::#field_idents),
)*
_ => {
#bytes_to_str
@ -786,7 +788,7 @@ fn deserialize_field_visitor(
}
}
deserializer.deserialize_struct_field(__FieldVisitor)
_serde::Deserializer::deserialize_struct_field(deserializer, __FieldVisitor)
}
}
}
@ -848,7 +850,7 @@ fn deserialize_map(
.map(|&(field, ref name)| {
let field_ty = &field.ty;
quote! {
let mut #name: Option<#field_ty> = None;
let mut #name: _serde::export::Option<#field_ty> = _serde::export::None;
}
});
@ -862,7 +864,7 @@ fn deserialize_map(
None => {
let field_ty = &field.ty;
quote! {
try!(visitor.visit_value::<#field_ty>())
try!(_serde::de::MapVisitor::visit_value::<#field_ty>(&mut visitor))
}
}
Some(path) => {
@ -871,16 +873,16 @@ fn deserialize_map(
quote!({
#wrapper
#wrapper_impl
try!(visitor.visit_value::<#wrapper_ty>()).value
try!(_serde::de::MapVisitor::visit_value::<#wrapper_ty>(&mut visitor)).value
})
}
};
quote! {
__Field::#name => {
if #name.is_some() {
return Err(<__V::Error as _serde::de::Error>::duplicate_field(#deser_name));
if _serde::export::Option::is_some(&#name) {
return _serde::export::Err(<__V::Error as _serde::de::Error>::duplicate_field(#deser_name));
}
#name = Some(#visit);
#name = _serde::export::Some(#visit);
}
}
});
@ -890,7 +892,7 @@ fn deserialize_map(
None
} else {
Some(quote! {
_ => { let _ = try!(visitor.visit_value::<_serde::de::impls::IgnoredAny>()); }
_ => { let _ = try!(_serde::de::MapVisitor::visit_value::<_serde::de::impls::IgnoredAny>(&mut visitor)); }
})
};
@ -898,12 +900,13 @@ fn deserialize_map(
let match_keys = if item_attrs.deny_unknown_fields() && all_skipped {
quote! {
// FIXME: Once we drop support for Rust 1.15:
// let None::<__Field> = try!(visitor.visit_key());
try!(visitor.visit_key::<__Field>()).map(|impossible| match impossible {});
// let _serde::export::None::<__Field> = try!(_serde::de::MapVisitor::visit_key(&mut visitor));
try!(_serde::de::MapVisitor::visit_key::<__Field>(&mut visitor))
.map(|impossible| match impossible {});
}
} else {
quote! {
while let Some(key) = try!(visitor.visit_key::<__Field>()) {
while let _serde::export::Some(key) = try!(_serde::de::MapVisitor::visit_key::<__Field>(&mut visitor)) {
match key {
#(#value_arms)*
#ignored_arm
@ -919,8 +922,8 @@ fn deserialize_map(
quote! {
let #name = match #name {
Some(#name) => #name,
None => #missing_expr
_serde::export::Some(#name) => #name,
_serde::export::None => #missing_expr
};
}
});
@ -943,7 +946,7 @@ fn deserialize_map(
#(#extract_values)*
Ok(#struct_path { #(#result),* })
_serde::export::Ok(#struct_path { #(#result),* })
}
}
@ -990,7 +993,7 @@ fn wrap_deserialize_with(
where __D: _serde::Deserializer
{
let value = try!(#deserialize_with(__d));
Ok(__SerdeDeserializeWithStruct {
_serde::export::Ok(__SerdeDeserializeWithStruct {
value: value,
phantom: _serde::export::PhantomData,
})
@ -1021,7 +1024,7 @@ fn expr_is_missing(attrs: &attr::Field) -> Tokens {
}
Some(_) => {
quote! {
return Err(<__V::Error as _serde::de::Error>::missing_field(#name))
return _serde::export::Err(<__V::Error as _serde::de::Error>::missing_field(#name))
}
}
}

View File

@ -125,7 +125,7 @@ fn serialize_unit_struct(item_attrs: &attr::Item) -> Tokens {
let type_name = item_attrs.name().serialize_name();
quote! {
_serializer.serialize_unit_struct(#type_name)
_serde::Serializer::serialize_unit_struct(_serializer, #type_name)
}
}
@ -144,7 +144,7 @@ fn serialize_newtype_struct(
}
quote! {
_serializer.serialize_newtype_struct(#type_name, #field_expr)
_serde::Serializer::serialize_newtype_struct(_serializer, #type_name, #field_expr)
}
}
@ -167,7 +167,7 @@ fn serialize_tuple_struct(
let let_mut = mut_if(len > 0);
quote! {
let #let_mut __serde_state = try!(_serializer.serialize_tuple_struct(#type_name, #len));
let #let_mut __serde_state = try!(_serde::Serializer::serialize_tuple_struct(_serializer, #type_name, #len));
#(#serialize_stmts)*
_serde::ser::SerializeTupleStruct::end(__serde_state)
}
@ -208,7 +208,7 @@ fn serialize_struct(
.fold(quote!(0), |sum, expr| quote!(#sum + #expr));
quote! {
let #let_mut __serde_state = try!(_serializer.serialize_struct(#type_name, #len));
let #let_mut __serde_state = try!(_serde::Serializer::serialize_struct(_serializer, #type_name, #len));
#(#serialize_fields)*
_serde::ser::SerializeStruct::end(__serde_state)
}
@ -260,7 +260,7 @@ fn serialize_variant(
let skipped_msg = format!("the enum variant {}::{} cannot be serialized",
type_ident, variant_ident);
let skipped_err = quote! {
Err(_serde::ser::Error::custom(#skipped_msg))
_serde::export::Err(_serde::ser::Error::custom(#skipped_msg))
};
let fields_pat = match variant.style {
Style::Unit => quote!(),
@ -380,7 +380,8 @@ fn serialize_tuple_variant(
let let_mut = mut_if(len > 0);
quote! {
let #let_mut __serde_state = try!(_serializer.serialize_tuple_variant(
let #let_mut __serde_state = try!(_serde::Serializer::serialize_tuple_variant(
_serializer,
#type_name,
#variant_index,
#variant_name,
@ -426,7 +427,8 @@ fn serialize_struct_variant(
.fold(quote!(0), |sum, expr| quote!(#sum + #expr));
quote! {
let #let_mut __serde_state = try!(_serializer.serialize_struct_variant(
let #let_mut __serde_state = try!(_serde::Serializer::serialize_struct_variant(
_serializer,
#item_name,
#variant_index,
#variant_name,
@ -537,7 +539,7 @@ fn wrap_serialize_with(
quote!({
struct __SerializeWith #wrapper_generics #where_clause {
value: &'__a #field_ty,
phantom: ::std::marker::PhantomData<#item_ty>,
phantom: _serde::export::PhantomData<#item_ty>,
}
impl #wrapper_generics _serde::Serialize for #wrapper_ty #where_clause {
@ -550,7 +552,7 @@ fn wrap_serialize_with(
&__SerializeWith {
value: #value,
phantom: ::std::marker::PhantomData::<#item_ty>,
phantom: _serde::export::PhantomData::<#item_ty>,
}
})
}

View File

@ -8,11 +8,15 @@ use self::serde::de::{Deserialize, Deserializer};
use std::borrow::Cow;
use std::marker::PhantomData;
use std::result::Result as StdResult;
// Try to trip up the generated code if it fails to use fully qualified paths.
#[allow(dead_code)]
struct Result;
use std::result::Result as StdResult;
#[allow(dead_code)]
struct Ok;
#[allow(dead_code)]
struct Err;
//////////////////////////////////////////////////////////////////////////