Skip to content

Commit

Permalink
Add error handling + use test_* syntax instead
Browse files Browse the repository at this point in the history
  • Loading branch information
ichard26 committed Jan 9, 2023
1 parent fefac47 commit 9cdfc98
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 13 deletions.
4 changes: 3 additions & 1 deletion mypyc/lib-rt/misc_ops.c
Original file line number Diff line number Diff line change
Expand Up @@ -647,7 +647,9 @@ int CPyStatics_Initialize(PyObject **statics,
for (int i = 0; i < num_items; i++) {
PyObject *item = statics[*frozensets++];
Py_INCREF(item);
PySet_Add(obj, item);
if (PySet_Add(obj, item) == -1) {
return -1;
}
}
*result++ = obj;
}
Expand Down
2 changes: 2 additions & 0 deletions mypyc/test-data/fixtures/ir.py
Original file line number Diff line number Diff line change
Expand Up @@ -221,12 +221,14 @@ def clear(self) -> None: pass
def pop(self) -> T: pass
def update(self, x: Iterable[S]) -> None: pass
def __or__(self, s: Union[Set[S], FrozenSet[S]]) -> Set[Union[T, S]]: ...
def __xor__(self, s: Union[Set[S], FrozenSet[S]]) -> Set[Union[T, S]]: ...

class frozenset(Generic[T]):
def __init__(self, i: Optional[Iterable[T]] = None) -> None: pass
def __iter__(self) -> Iterator[T]: pass
def __len__(self) -> int: pass
def __or__(self, s: Union[Set[S], FrozenSet[S]]) -> FrozenSet[Union[T, S]]: ...
def __xor__(self, s: Union[Set[S], FrozenSet[S]]) -> FrozenSet[Union[T, S]]: ...

class slice: pass

Expand Down
23 changes: 11 additions & 12 deletions mypyc/test-data/run-sets.test
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ s = {1, 2, 3}
update(s, [5, 4, 3])
assert s == {1, 2, 3, 4, 5}

[case testPrecomputedFrozensets]
[case testPrecomputedFrozenSets]
from typing import Any
from typing_extensions import Final

Expand All @@ -136,16 +136,15 @@ s = set()
for i in {None, False, 1, 2.0, "3", b"4", 5j, (6,), CONST}:
s.add(i)

[file driver.py]
import native
from native import CONST, main_set, main_negated_set, non_final_name_set

for item in (None, False, 1, 2.0, "3", b"4", 5j, (6,), ((7,),), (), CONST):
assert main_set(item), f"{item!r} should be in set_main"
assert not main_negated_set(item), item
def test_in_set() -> None:
for item in (None, False, 1, 2.0, "3", b"4", 5j, (6,), ((7,),), (), CONST):
assert main_set(item), f"{item!r} should be in set_main"
assert not main_negated_set(item), item

assert non_final_name_set(native.non_const)
native.non_const = "updated"
assert non_final_name_set("updated")
assert non_final_name_set(non_const)
global non_const
non_const = "updated"
assert non_final_name_set("updated")

assert not native.s ^ {None, False, 1, 2.0, "3", b"4", 5j, (6,), CONST}, native.s
def test_for_set() -> None:
assert not s ^ {None, False, 1, 2.0, "3", b"4", 5j, (6,), CONST}, s

0 comments on commit 9cdfc98

Please sign in to comment.