diff --git a/tests/snippets/test_sets.py b/tests/snippets/test_sets.py index 8a06ee364..a7ad7d19c 100644 --- a/tests/snippets/test_sets.py +++ b/tests/snippets/test_sets.py @@ -1,10 +1,14 @@ empty_set = set() non_empty_set = set([1,2,3]) +set_from_literal = {1,2,3} assert 1 in non_empty_set assert 4 not in non_empty_set +assert 1 in set_from_literal +assert 4 not in set_from_literal + # TODO: Assert that empty aruguments raises exception. non_empty_set.add('a') assert 'a' in non_empty_set diff --git a/vm/src/frame.rs b/vm/src/frame.rs index 5353846e0..420a3a866 100644 --- a/vm/src/frame.rs +++ b/vm/src/frame.rs @@ -225,8 +225,11 @@ impl Frame { Ok(None) } bytecode::Instruction::BuildSet { size, unpack } => { - let _elements = self.get_elements(vm, *size, *unpack)?; + let elements = self.get_elements(vm, *size, *unpack)?; let py_obj = vm.ctx.new_set(); + for item in elements { + vm.call_method(&py_obj, "add", vec![item])?; + } self.push_value(py_obj); Ok(None) }