From ac86f4c9415adc37e49aa645f2e930dc89fa5f8a Mon Sep 17 00:00:00 2001
From: Oliver Schneider <git1984941651981@oli-obk.de>
Date: Mon, 20 Apr 2015 12:29:58 +0200
Subject: updated to master

---
 src/decoder/mod.rs   |  4 ++++
 src/decoder/serde.rs | 14 +++++++++++++-
 2 files changed, 17 insertions(+), 1 deletion(-)

(limited to 'src/decoder')

diff --git a/src/decoder/mod.rs b/src/decoder/mod.rs
index a3cc29a..62de223 100644
--- a/src/decoder/mod.rs
+++ b/src/decoder/mod.rs
@@ -35,6 +35,8 @@ pub enum DecodeErrorKind {
     ApplicationError(String),
     /// A field was expected, but none was found.
     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.
     ExpectedType(/* expected */ &'static str, /* found */ &'static str),
     /// 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"),
                 }
             }
+            UnknownField => write!(f, "unknown field"),
             ExpectedType(expected, found) => {
                 fn humanize(s: &str) -> String {
                     if s == "section" {
@@ -194,6 +197,7 @@ impl error::Error for DecodeError {
         match self.kind {
             ApplicationError(ref s) => &**s,
             ExpectedField(..) => "expected a field",
+            UnknownField => "found an unknown field",
             ExpectedType(..) => "expected a type",
             ExpectedMapKey(..) => "expected a map key",
             ExpectedMapElement(..) => "expected a map element",
diff --git a/src/decoder/serde.rs b/src/decoder/serde.rs
index 6f60892..326f7ee 100644
--- a/src/decoder/serde.rs
+++ b/src/decoder/serde.rs
@@ -15,7 +15,13 @@ fn se2toml(err: de::value::Error, ty: &'static str) -> DecodeError {
                 field: Some(s.to_string()),
                 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),
         }
     }
+    fn unknown_field_error(name: &str) -> DecodeError {
+        DecodeError {
+            field: Some(name.to_string()),
+            kind: DecodeErrorKind::UnknownField,
+        }
+    }
 }
 
 impl de::Deserializer for SubDecoder {
-- 
cgit v1.2.3