From d806a19c23c2447bed111d211f6e1e993ed00c05 Mon Sep 17 00:00:00 2001 From: alexpantyukhin Date: Wed, 27 Feb 2019 11:55:33 +0400 Subject: [PATCH 1/2] add kwarg handling for int --- tests/snippets/ints.py | 4 ++++ vm/src/obj/objint.rs | 6 ++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/tests/snippets/ints.py b/tests/snippets/ints.py index 9aa83eba4..5b5c8c89c 100644 --- a/tests/snippets/ints.py +++ b/tests/snippets/ints.py @@ -15,6 +15,10 @@ assert not 1 < 1.0 assert 1 >= 1.0 assert 1 <= 1.0 +# check for argument handling + +assert int("101", base=2) == 5 + # magic methods should only be implemented for other ints assert (1).__eq__(1) == True diff --git a/vm/src/obj/objint.rs b/vm/src/obj/objint.rs index 9f5e48893..8a88cf893 100644 --- a/vm/src/obj/objint.rs +++ b/vm/src/obj/objint.rs @@ -48,8 +48,10 @@ fn int_new(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult { return Err(vm.new_type_error(format!("{:?} is not a subtype of int", cls))); } - // TODO: extract kwargs: - let base = 10; + let base = match args.get_optional_kwarg("base") { + Some(argument) => get_value(&argument).to_u32().unwrap(), + None => 10 + }; let val = match val_option { Some(val) => to_int(vm, val, base)?, None => Zero::zero(), From 7e2c702c5ea3f2465b1b6c56827b8777e7688b52 Mon Sep 17 00:00:00 2001 From: apantykhin Date: Wed, 27 Feb 2019 21:22:24 +0000 Subject: [PATCH 2/2] fix fmt --- vm/src/obj/objint.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vm/src/obj/objint.rs b/vm/src/obj/objint.rs index 8a88cf893..19919ff01 100644 --- a/vm/src/obj/objint.rs +++ b/vm/src/obj/objint.rs @@ -50,7 +50,7 @@ fn int_new(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult { let base = match args.get_optional_kwarg("base") { Some(argument) => get_value(&argument).to_u32().unwrap(), - None => 10 + None => 10, }; let val = match val_option { Some(val) => to_int(vm, val, base)?,