Skip to content

Commit 9cdfc98

Browse files
committed
Add error handling + use test_* syntax instead
1 parent fefac47 commit 9cdfc98

File tree

3 files changed

+16
-13
lines changed

3 files changed

+16
-13
lines changed

mypyc/lib-rt/misc_ops.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -647,7 +647,9 @@ int CPyStatics_Initialize(PyObject **statics,
647647
for (int i = 0; i < num_items; i++) {
648648
PyObject *item = statics[*frozensets++];
649649
Py_INCREF(item);
650-
PySet_Add(obj, item);
650+
if (PySet_Add(obj, item) == -1) {
651+
return -1;
652+
}
651653
}
652654
*result++ = obj;
653655
}

mypyc/test-data/fixtures/ir.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,12 +221,14 @@ def clear(self) -> None: pass
221221
def pop(self) -> T: pass
222222
def update(self, x: Iterable[S]) -> None: pass
223223
def __or__(self, s: Union[Set[S], FrozenSet[S]]) -> Set[Union[T, S]]: ...
224+
def __xor__(self, s: Union[Set[S], FrozenSet[S]]) -> Set[Union[T, S]]: ...
224225

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

231233
class slice: pass
232234

mypyc/test-data/run-sets.test

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ s = {1, 2, 3}
116116
update(s, [5, 4, 3])
117117
assert s == {1, 2, 3, 4, 5}
118118

119-
[case testPrecomputedFrozensets]
119+
[case testPrecomputedFrozenSets]
120120
from typing import Any
121121
from typing_extensions import Final
122122

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

139-
[file driver.py]
140-
import native
141-
from native import CONST, main_set, main_negated_set, non_final_name_set
142-
143-
for item in (None, False, 1, 2.0, "3", b"4", 5j, (6,), ((7,),), (), CONST):
144-
assert main_set(item), f"{item!r} should be in set_main"
145-
assert not main_negated_set(item), item
139+
def test_in_set() -> None:
140+
for item in (None, False, 1, 2.0, "3", b"4", 5j, (6,), ((7,),), (), CONST):
141+
assert main_set(item), f"{item!r} should be in set_main"
142+
assert not main_negated_set(item), item
146143

147-
assert non_final_name_set(native.non_const)
148-
native.non_const = "updated"
149-
assert non_final_name_set("updated")
144+
assert non_final_name_set(non_const)
145+
global non_const
146+
non_const = "updated"
147+
assert non_final_name_set("updated")
150148

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

0 commit comments

Comments
 (0)