diff options
author | David Malcolm <dmalcolm@redhat.com> | 2010-02-02 19:33:24 -0500 |
---|---|---|
committer | David Malcolm <dmalcolm@redhat.com> | 2010-02-02 19:33:24 -0500 |
commit | 234a10d5bc133f9963db58fd4c08715fe43c2b94 (patch) | |
tree | b0f25aa393b258c97370060e84e7a97402e9fea1 /fixes/init-module.cocci | |
parent | 98f387056959d6ab8554a2fd616d1639739c4735 (diff) | |
download | 2to3c-234a10d5bc133f9963db58fd4c08715fe43c2b94.tar.gz 2to3c-234a10d5bc133f9963db58fd4c08715fe43c2b94.tar.xz 2to3c-234a10d5bc133f9963db58fd4c08715fe43c2b94.zip |
introduce custom postprocessing code to (partly) deal with module initialization; add selftests for same
Diffstat (limited to 'fixes/init-module.cocci')
-rw-r--r-- | fixes/init-module.cocci | 76 |
1 files changed, 41 insertions, 35 deletions
diff --git a/fixes/init-module.cocci b/fixes/init-module.cocci index afeb89a..ca3bcc9 100644 --- a/fixes/init-module.cocci +++ b/fixes/init-module.cocci @@ -10,13 +10,43 @@ T FN(void) { ... } + + +@@ +identifier MOD_VAR; +expression MODULE_NAME, MODULE_METHODS, MODULE_DOC; +expression E; +@@ + if (E) { +- return; ++ return MOD_ERROR_VAL; + } + ... + MOD_VAR = Py_InitModule3(MODULE_NAME, MODULE_METHODS, MODULE_DOC); + + +@@ +identifier MOD_VAR; +expression MODULE_NAME, MODULE_METHODS, MODULE_DOC; +expression E; +@@ + MOD_VAR = Py_InitModule3(MODULE_NAME, MODULE_METHODS, MODULE_DOC); + ... + if (E) { +- return; ++ return MOD_ERROR_VAL; + } + + @@ type mod_init_fn.T; identifier mod_init_fn.FN; identifier mod_init_fn.MOD_VAR; expression MODULE_NAME, MODULE_METHODS, MODULE_DOC; +expression E; +statement list SL; @@ -+ #if PY_MAJOR_VERSION >= 3 ++struct __HASH_IF_PY_MAJOR_VERSION_ge_3; +static struct PyModuleDef moduledef = { + PyModuleDef_HEAD_INIT, + MODULE_NAME, /* m_name */ @@ -28,45 +58,21 @@ expression MODULE_NAME, MODULE_METHODS, MODULE_DOC; + NULL, /* m_clear */ + NULL, /* m_free */ +}; -+#define MOD_ERROR_VAL NULL -+#else -+#endif ++struct __HASH_DEFINE__MOD_ERROR_VAL__NULL; ++struct __HASH_ELSE; ++struct __HASH_DEFINE__MOD_ERROR_VAL__; ++struct __HASH_ENDIF; -T FN(void) { + T FN(void) { ... -+ #if PY_MAJOR_VERSION >= 3 ++__HASH_IF_PY_MAJOR_VERSION_ge_3; + MOD_VAR = PyModule_Create(&moduledef); -+ #else ++__HASH_ELSE; MOD_VAR = Py_InitModule3(MODULE_NAME, MODULE_METHODS, MODULE_DOC); -+ #endif - - ... -} - - ++__HASH_ENDIF; -@@ -type mod_init_fn.T; -identifier mod_init_fn.FN; -expression E; -@@ -T FN(void) { ... -- if (E) return; -+ if (E) return MOD_ERROR_VAL; - ... -} + } + -@@ -type mod_init_fn.T; -identifier mod_init_fn.FN; -identifier mod_init_fn.MOD_VAR; -@@ -T FN(void) { - ... -- return; -+ #if PY_MAJOR_VERSION >= 3 -+ return MOD_VAR; -+ #endif -} |