summaryrefslogtreecommitdiffstats
path: root/fixes/init-module.cocci
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2010-02-02 19:33:24 -0500
committerDavid Malcolm <dmalcolm@redhat.com>2010-02-02 19:33:24 -0500
commit234a10d5bc133f9963db58fd4c08715fe43c2b94 (patch)
treeb0f25aa393b258c97370060e84e7a97402e9fea1 /fixes/init-module.cocci
parent98f387056959d6ab8554a2fd616d1639739c4735 (diff)
download2to3c-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.cocci76
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
-}