From 294cbf1c7a4cf46fdfc64405950e9b572dbe2320 Mon Sep 17 00:00:00 2001 From: philippeitis <33013301+philippeitis@users.noreply.github.com> Date: Fri, 28 Feb 2020 11:54:35 -0800 Subject: [PATCH 1/2] Raise TypeError when kwargs are not dict. --- vm/src/frame.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/vm/src/frame.rs b/vm/src/frame.rs index 61b4abe12..f3c91bad5 100644 --- a/vm/src/frame.rs +++ b/vm/src/frame.rs @@ -935,8 +935,12 @@ impl Frame { } bytecode::CallType::Ex(has_kwargs) => { let kwargs = if *has_kwargs { - let kw_dict: PyDictRef = - self.pop_value().downcast().expect("Kwargs must be a dict."); + let kw_dict: PyDictRe = match self.pop_value().downcast() { + Err(_) => { + return Err(vm.new_type_error("Kwargs must be a dict.".to_owned())); + } + Ok(x) => x + }; let mut kwargs = IndexMap::new(); for (key, value) in kw_dict.into_iter() { if let Some(key) = key.payload_if_subclass::(vm) { From a6cc502fb93c8fad2345b8091a813dbb41925365 Mon Sep 17 00:00:00 2001 From: philippeitis <33013301+philippeitis@users.noreply.github.com> Date: Fri, 28 Feb 2020 12:08:08 -0800 Subject: [PATCH 2/2] Formatting. --- vm/src/frame.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vm/src/frame.rs b/vm/src/frame.rs index f3c91bad5..97b4f9d83 100644 --- a/vm/src/frame.rs +++ b/vm/src/frame.rs @@ -935,11 +935,11 @@ impl Frame { } bytecode::CallType::Ex(has_kwargs) => { let kwargs = if *has_kwargs { - let kw_dict: PyDictRe = match self.pop_value().downcast() { + let kw_dict: PyDictRef = match self.pop_value().downcast() { Err(_) => { return Err(vm.new_type_error("Kwargs must be a dict.".to_owned())); } - Ok(x) => x + Ok(x) => x, }; let mut kwargs = IndexMap::new(); for (key, value) in kw_dict.into_iter() {