updated to master

This commit is contained in:
Oliver Schneider 2015-04-20 12:29:58 +02:00
parent 41563ee01b
commit ac86f4c941
3 changed files with 19 additions and 3 deletions

View file

@ -17,11 +17,11 @@ facilitate deserializing and serializing Rust structures.
[dependencies] [dependencies]
rustc-serialize = { optional = true, version = "0.3.0" } rustc-serialize = { optional = true, version = "0.3.0" }
serde = { optional = true, git = "https://github.com/alexcrichton/rust-serde", branch = "tweak-some-impls" } serde = { optional = true }
[features] [features]
default = ["rustc-serialize"] default = ["rustc-serialize"]
[dev-dependencies] [dev-dependencies]
rustc-serialize = "0.3" rustc-serialize = "0.3"
serde_macros = { git = "https://github.com/alexcrichton/rust-serde", branch = "tweak-some-impls" } serde_macros = "*"

View file

@ -35,6 +35,8 @@ pub enum DecodeErrorKind {
ApplicationError(String), ApplicationError(String),
/// A field was expected, but none was found. /// A field was expected, but none was found.
ExpectedField(/* type */ Option<&'static str>), ExpectedField(/* type */ Option<&'static str>),
/// A field was found, but it was not an expected one.
UnknownField,
/// A field was found, but it had the wrong type. /// A field was found, but it had the wrong type.
ExpectedType(/* expected */ &'static str, /* found */ &'static str), ExpectedType(/* expected */ &'static str, /* found */ &'static str),
/// The nth map key was expected, but none was found. /// The nth map key was expected, but none was found.
@ -149,6 +151,7 @@ impl fmt::Display for DecodeError {
None => write!(f, "expected a value"), None => write!(f, "expected a value"),
} }
} }
UnknownField => write!(f, "unknown field"),
ExpectedType(expected, found) => { ExpectedType(expected, found) => {
fn humanize(s: &str) -> String { fn humanize(s: &str) -> String {
if s == "section" { if s == "section" {
@ -194,6 +197,7 @@ impl error::Error for DecodeError {
match self.kind { match self.kind {
ApplicationError(ref s) => &**s, ApplicationError(ref s) => &**s,
ExpectedField(..) => "expected a field", ExpectedField(..) => "expected a field",
UnknownField => "found an unknown field",
ExpectedType(..) => "expected a type", ExpectedType(..) => "expected a type",
ExpectedMapKey(..) => "expected a map key", ExpectedMapKey(..) => "expected a map key",
ExpectedMapElement(..) => "expected a map element", ExpectedMapElement(..) => "expected a map element",

View file

@ -15,7 +15,13 @@ fn se2toml(err: de::value::Error, ty: &'static str) -> DecodeError {
field: Some(s.to_string()), field: Some(s.to_string()),
kind: DecodeErrorKind::ExpectedField(Some(ty)), kind: DecodeErrorKind::ExpectedField(Some(ty)),
} }
},
de::value::Error::UnknownFieldError(s) => {
DecodeError {
field: Some(s.to_string()),
kind: DecodeErrorKind::UnknownField,
} }
},
} }
} }
@ -91,6 +97,12 @@ impl de::Error for DecodeError {
kind: DecodeErrorKind::ExpectedField(None), kind: DecodeErrorKind::ExpectedField(None),
} }
} }
fn unknown_field_error(name: &str) -> DecodeError {
DecodeError {
field: Some(name.to_string()),
kind: DecodeErrorKind::UnknownField,
}
}
} }
impl de::Deserializer for SubDecoder { impl de::Deserializer for SubDecoder {