Skip to content

Commit 98b8f51

Browse files
committed
Delay setting tp_base in tests
1 parent d0d165a commit 98b8f51

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed

graalpython/com.oracle.graal.python.test/src/tests/cpyext/__init__.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -545,6 +545,10 @@ def compile_module_from_file(module_name: str):
545545

546546

547547
def CPyExtType(name, code='', **kwargs):
548+
kwargs['set_base_code'] = ''
549+
# We set tp_base later, because MSVC doesn't see the usual &PySomething_Type expressions as constants
550+
if tp_base := kwargs.get('tp_base'):
551+
kwargs['set_base_code'] = f'{name}Type.tp_base = {tp_base};'
548552
mod_template = """
549553
static PyModuleDef {name}module = {{
550554
PyModuleDef_HEAD_INIT,
@@ -561,6 +565,7 @@ def CPyExtType(name, code='', **kwargs):
561565
if (m == NULL)
562566
return NULL;
563567
568+
{set_base_code}
564569
{ready_code}
565570
if (PyType_Ready(&{name}Type) < 0)
566571
return NULL;
@@ -705,7 +710,7 @@ def CPyExtTypeDecl(name, code='', **kwargs):
705710
{name}_methods, /* tp_methods */
706711
{name}_members, /* tp_members */
707712
{name}_getset, /* tp_getset */
708-
{tp_base}, /* tp_base */
713+
0, /* set later */ /* tp_base */
709714
{tp_dict}, /* tp_dict */
710715
{tp_descr_get}, /* tp_descr_get */
711716
{tp_descr_set}, /* tp_descr_set */

graalpython/com.oracle.graal.python.test/src/tests/cpyext/test_err.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,10 +204,10 @@ def raise_erorr():
204204
"ExceptionSubclass",
205205
'',
206206
struct_base='PyBaseExceptionObject base;',
207+
tp_base='(PyTypeObject*)PyExc_Exception',
207208
tp_new='0',
208209
tp_alloc='0',
209210
tp_free='0',
210-
ready_code='ExceptionSubclassType.tp_base = (PyTypeObject*)PyExc_Exception;'
211211
)
212212

213213

0 commit comments

Comments
 (0)