From 1277bfe0fb256059232dbbfd565bd4ffa9b5c6c6 Mon Sep 17 00:00:00 2001 From: est31 Date: Mon, 9 Sep 2019 13:02:25 +0200 Subject: [PATCH] Fix setting configuration params Fixes #627 Fixes a regression caused by #579, specifically commit cc8872b4eec3f39896ccb11d9c25a30a79c04dd7 . The code was intended to perform a comparison between the wanted output type and "Tagged" in order to be able to provide a special-cased path for Tagged. When I wrote the code, I used "name" as a variable name and only later realized that it shadowed the "name" param to the function, so I renamed it to type_name, but forgot to change the comparison. This broke the special-casing, as the name param only contains the name of the struct without generics (like "Tagged"), while `std::any::type_name` (in the current implementation) contains the full paths of the struct including all generic params (like "nu::object::meta::Tagged"). --- src/parser/deserializer.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/parser/deserializer.rs b/src/parser/deserializer.rs index 33a23189f1..d4d492966c 100644 --- a/src/parser/deserializer.rs +++ b/src/parser/deserializer.rs @@ -328,7 +328,7 @@ impl<'de, 'a> de::Deserializer<'de> for &'a mut ConfigDeserializer<'de> { let type_name = std::any::type_name::(); let tagged_val_name = std::any::type_name::>(); - if name == tagged_val_name { + if type_name == tagged_val_name { return visit::, _>(value.val, name, fields, visitor); }