Commit 9b46190c authored by Kevin Modzelewski's avatar Kevin Modzelewski

Fix this set issue

parent 09470b2e
...@@ -1664,11 +1664,11 @@ Value ASTInterpreter::visit_dict(AST_Dict* node) { ...@@ -1664,11 +1664,11 @@ Value ASTInterpreter::visit_dict(AST_Dict* node) {
} }
Value ASTInterpreter::visit_set(AST_Set* node) { Value ASTInterpreter::visit_set(AST_Set* node) {
BoxedSet* set = (BoxedSet*)createSet();
try { try {
// insert the elements in reverse like cpython does // insert the elements in reverse like cpython does
// important for {1, 1L} // important for {1, 1L}
llvm::SmallVector<RewriterVar*, 8> items; llvm::SmallVector<RewriterVar*, 8> items;
BoxedSet* set = (BoxedSet*)createSet();
for (auto it = node->elts.rbegin(), it_end = node->elts.rend(); it != it_end; ++it) { for (auto it = node->elts.rbegin(), it_end = node->elts.rend(); it != it_end; ++it) {
Value v = visit_expr(*it); Value v = visit_expr(*it);
_setAddStolen(set, v.o); _setAddStolen(set, v.o);
...@@ -1676,7 +1676,8 @@ Value ASTInterpreter::visit_set(AST_Set* node) { ...@@ -1676,7 +1676,8 @@ Value ASTInterpreter::visit_set(AST_Set* node) {
} }
return Value(set, jit ? jit->emitCreateSet(items) : NULL); return Value(set, jit ? jit->emitCreateSet(items) : NULL);
} catch (ExcInfo e) { } catch (ExcInfo e) {
RELEASE_ASSERT(0, "this leaks in case of an exception"); Py_DECREF(set);
throw e;
} }
} }
......
...@@ -540,3 +540,4 @@ False ...@@ -540,3 +540,4 @@ False
set([1L]) set([1]) set([1]) set([1L]) set([1L]) set([1]) set([1]) set([1L])
set([1]) set([1])
4 4
unhashable type: 'dict'
...@@ -274,3 +274,8 @@ from api_test import set_size ...@@ -274,3 +274,8 @@ from api_test import set_size
s = set([1, 2, 3, 4]) s = set([1, 2, 3, 4])
print(set_size(s)) print(set_size(s))
try:
{{}}
except Exception as e:
print e
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment