diff options
author | Christian Duerr <chrisduerr@users.noreply.github.com> | 2018-09-28 19:53:57 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-09-28 19:53:57 +0000 |
commit | 93837110aace817f1cbb2a4de7a7facd3cde4a7b (patch) | |
tree | 766c07ace83a2da7ee59c6883837c7449d329959 | |
parent | 5e97fcbea4d763ab7059cce201d110ba9fb6c19f (diff) | |
download | alacritty-93837110aace817f1cbb2a4de7a7facd3cde4a7b.tar.gz alacritty-93837110aace817f1cbb2a4de7a7facd3cde4a7b.zip |
Fix deserialization of old decorations values
The deprecated `window.decoration` values `true` and `false` were using
the `visit_bool` visitor for serde. However, only the `str` visitor was ever
called.
To print the correct deprecation notice, the bool visitor has been
removed and the warning has been added for the `"true"` and `"false"`
str visitor.
-rw-r--r-- | src/config.rs | 44 |
1 files changed, 25 insertions, 19 deletions
diff --git a/src/config.rs b/src/config.rs index 66cf1a6f..0f250522 100644 --- a/src/config.rs +++ b/src/config.rs @@ -279,29 +279,27 @@ impl<'de> Deserialize<'de> for Decorations { f.write_str("Some subset of full|transparent|buttonless|none") } - fn visit_bool<E>(self, value: bool) -> ::std::result::Result<Decorations, E> - where E: de::Error - { - if value { - eprintln!("deprecated decorations boolean value, use one of \ - default|transparent|buttonless|none instead; Falling back to \"full\""); - Ok(Decorations::Full) - } else { - eprintln!("deprecated decorations boolean value, use one of \ - default|transparent|buttonless|none instead; Falling back to \"none\""); - Ok(Decorations::None) - } - } - #[cfg(target_os = "macos")] fn visit_str<E>(self, value: &str) -> ::std::result::Result<Decorations, E> where E: de::Error { - match value { + match value.to_lowercase().as_str() { "transparent" => Ok(Decorations::Transparent), "buttonless" => Ok(Decorations::Buttonless), "none" => Ok(Decorations::None), "full" => Ok(Decorations::Full), + "true" => { + eprintln!("deprecated decorations boolean value, \ + use one of transparent|buttonless|none|full instead; \ + Falling back to \"full\""); + Ok(Decorations::Full) + }, + "false" => { + eprintln!("deprecated decorations boolean value, \ + use one of transparent|buttonless|none|full instead; \ + Falling back to \"none\""); + Ok(Decorations::None) + }, _ => { eprintln!("invalid decorations value: {}; Using default value", value); Ok(Decorations::Full) @@ -316,14 +314,22 @@ impl<'de> Deserialize<'de> for Decorations { match value.to_lowercase().as_str() { "none" => Ok(Decorations::None), "full" => Ok(Decorations::Full), - "transparent" => { - eprintln!("macos-only decorations value: {}; Using default value", value); + "true" => { + eprintln!("deprecated decorations boolean value, \ + use one of none|full instead; \ + Falling back to \"full\""); Ok(Decorations::Full) }, - "buttonless" => { + "false" => { + eprintln!("deprecated decorations boolean value, \ + use one of none|full instead; \ + Falling back to \"none\""); + Ok(Decorations::None) + }, + "transparent" | "buttonless" => { eprintln!("macos-only decorations value: {}; Using default value", value); Ok(Decorations::Full) - } + }, _ => { eprintln!("invalid decorations value: {}; Using default value", value); Ok(Decorations::Full) |