diff --git a/src/config.rs b/src/config.rs index 905020a39c..db159a45ad 100644 --- a/src/config.rs +++ b/src/config.rs @@ -312,6 +312,8 @@ impl<'de> serde::Deserialize<'de> for Config { return Ok(Config::from_legacy(raw)); } + warn_on_invalid_fields(&raw); + use serde::de::Error; let mut table = match raw { Value::Table(t) => t, @@ -376,6 +378,17 @@ fn parse_env(key: &str) -> Option { .map(|key| key.to_lowercase().replace("__", ".").replace('_', "-")) } +fn warn_on_invalid_fields(table: &Value) { + let valid_items = ["book", "build", "rust", "output", "preprocessor"]; + + let table = table.as_table().expect("root must be a table"); + for item in table.keys() { + if !valid_items.contains(&item.as_str()) { + warn!("Invalid field {:?} in book.toml", &item); + } + } +} + fn is_legacy_format(table: &Value) -> bool { let legacy_items = [ "title",