summaryrefslogtreecommitdiffstats
path: root/Lib/test/clinic.test.c
diff options
context:
space:
mode:
authorDonghee Na <donghee.na@python.org>2023-11-18 23:05:49 (GMT)
committerGitHub <noreply@github.com>2023-11-18 23:05:49 (GMT)
commite52cc80f7fc3a560bf3d0053e0821a2db070cdd1 (patch)
tree4cc599be3fb9c5f828ed6699656cfae010ed0f21 /Lib/test/clinic.test.c
parent607b5e30c67bad35b90240d9ac176131e51423a5 (diff)
downloadcpython-e52cc80f7fc3a560bf3d0053e0821a2db070cdd1.zip
cpython-e52cc80f7fc3a560bf3d0053e0821a2db070cdd1.tar.gz
cpython-e52cc80f7fc3a560bf3d0053e0821a2db070cdd1.tar.bz2
gh-112213: Add @critical_section target directive to Argument Clinic (gh-112232)
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
Diffstat (limited to 'Lib/test/clinic.test.c')
-rw-r--r--Lib/test/clinic.test.c170
1 files changed, 170 insertions, 0 deletions
diff --git a/Lib/test/clinic.test.c b/Lib/test/clinic.test.c
index da730c5..81f88c4 100644
--- a/Lib/test/clinic.test.c
+++ b/Lib/test/clinic.test.c
@@ -5542,3 +5542,173 @@ exit:
static PyObject *
test_critical_section_meth_o_impl(PyObject *module, PyObject *a)
/*[clinic end generated code: output=7a9d7420802d1202 input=376533f51eceb6c3]*/
+
+/*[clinic input]
+@critical_section a
+test_critical_section_object
+ a: object(subclass_of="&PyUnicode_Type")
+ /
+test_critical_section_object
+[clinic start generated code]*/
+
+PyDoc_STRVAR(test_critical_section_object__doc__,
+"test_critical_section_object($module, a, /)\n"
+"--\n"
+"\n"
+"test_critical_section_object");
+
+#define TEST_CRITICAL_SECTION_OBJECT_METHODDEF \
+ {"test_critical_section_object", (PyCFunction)test_critical_section_object, METH_O, test_critical_section_object__doc__},
+
+static PyObject *
+test_critical_section_object_impl(PyObject *module, PyObject *a);
+
+static PyObject *
+test_critical_section_object(PyObject *module, PyObject *arg)
+{
+ PyObject *return_value = NULL;
+ PyObject *a;
+
+ if (!PyUnicode_Check(arg)) {
+ _PyArg_BadArgument("test_critical_section_object", "argument", "str", arg);
+ goto exit;
+ }
+ a = arg;
+ Py_BEGIN_CRITICAL_SECTION(a);
+ return_value = test_critical_section_object_impl(module, a);
+ Py_END_CRITICAL_SECTION();
+
+exit:
+ return return_value;
+}
+
+static PyObject *
+test_critical_section_object_impl(PyObject *module, PyObject *a)
+/*[clinic end generated code: output=ec06df92232b0fb5 input=6f67f91b523c875f]*/
+
+PyDoc_STRVAR(test_critical_section_object__doc__,
+"test_critical_section_object($module, a, /)\n"
+"--\n"
+"\n"
+"test_critical_section_object");
+
+#define TEST_CRITICAL_SECTION_OBJECT_METHODDEF \
+ {"test_critical_section_object", (PyCFunction)test_critical_section_object, METH_O, test_critical_section_object__doc__},
+
+static PyObject *
+test_critical_section_object_impl(PyObject *module, PyObject *a);
+
+static PyObject *
+test_critical_section_object(PyObject *module, PyObject *arg)
+{
+ PyObject *return_value = NULL;
+ PyObject *a;
+
+ if (!PyUnicode_Check(arg)) {
+ _PyArg_BadArgument("test_critical_section_object", "argument", "str", arg);
+ goto exit;
+ }
+ a = arg;
+ Py_BEGIN_CRITICAL_SECTION(a);
+ return_value = test_critical_section_object_impl(module, a);
+ Py_END_CRITICAL_SECTION();
+
+exit:
+ return return_value;
+}
+
+/*[clinic input]
+@critical_section a b
+test_critical_section_object2
+ a: object(subclass_of="&PyUnicode_Type")
+ b: object(subclass_of="&PyUnicode_Type")
+ /
+test_critical_section_object2
+[clinic start generated code]*/
+
+PyDoc_STRVAR(test_critical_section_object2__doc__,
+"test_critical_section_object2($module, a, b, /)\n"
+"--\n"
+"\n"
+"test_critical_section_object2");
+
+#define TEST_CRITICAL_SECTION_OBJECT2_METHODDEF \
+ {"test_critical_section_object2", _PyCFunction_CAST(test_critical_section_object2), METH_FASTCALL, test_critical_section_object2__doc__},
+
+static PyObject *
+test_critical_section_object2_impl(PyObject *module, PyObject *a,
+ PyObject *b);
+
+static PyObject *
+test_critical_section_object2(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
+{
+ PyObject *return_value = NULL;
+ PyObject *a;
+ PyObject *b;
+
+ if (!_PyArg_CheckPositional("test_critical_section_object2", nargs, 2, 2)) {
+ goto exit;
+ }
+ if (!PyUnicode_Check(args[0])) {
+ _PyArg_BadArgument("test_critical_section_object2", "argument 1", "str", args[0]);
+ goto exit;
+ }
+ a = args[0];
+ if (!PyUnicode_Check(args[1])) {
+ _PyArg_BadArgument("test_critical_section_object2", "argument 2", "str", args[1]);
+ goto exit;
+ }
+ b = args[1];
+ Py_BEGIN_CRITICAL_SECTION2(a, b);
+ return_value = test_critical_section_object2_impl(module, a, b);
+ Py_END_CRITICAL_SECTION2();
+
+exit:
+ return return_value;
+}
+
+static PyObject *
+test_critical_section_object2_impl(PyObject *module, PyObject *a,
+ PyObject *b)
+/*[clinic end generated code: output=d73a1657c18df17a input=638824e41419a466]*/
+
+PyDoc_STRVAR(test_critical_section_object2__doc__,
+"test_critical_section_object2($module, a, b, /)\n"
+"--\n"
+"\n"
+"test_critical_section_object2");
+
+#define TEST_CRITICAL_SECTION_OBJECT2_METHODDEF \
+ {"test_critical_section_object2", _PyCFunction_CAST(test_critical_section_object2), METH_FASTCALL, test_critical_section_object2__doc__},
+
+static PyObject *
+test_critical_section_object2_impl(PyObject *module, PyObject *a,
+ PyObject *b);
+
+static PyObject *
+test_critical_section_object2(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
+{
+ PyObject *return_value = NULL;
+ PyObject *a;
+ PyObject *b;
+
+ if (!_PyArg_CheckPositional("test_critical_section_object2", nargs, 2, 2)) {
+ goto exit;
+ }
+ if (!PyUnicode_Check(args[0])) {
+ _PyArg_BadArgument("test_critical_section_object2", "argument 1", "str", args[0]);
+ goto exit;
+ }
+ a = args[0];
+ if (!PyUnicode_Check(args[1])) {
+ _PyArg_BadArgument("test_critical_section_object2", "argument 2", "str", args[1]);
+ goto exit;
+ }
+ b = args[1];
+ Py_BEGIN_CRITICAL_SECTION2(a, b);
+ return_value = test_critical_section_object2_impl(module, a, b);
+ Py_END_CRITICAL_SECTION2();
+
+exit:
+ return return_value;
+}