From 691c1b8fec0bc0cbfc72e67be7159a0b6410bebd Mon Sep 17 00:00:00 2001 From: "A. R. Shajii" Date: Sat, 4 Mar 2023 16:46:38 -0500 Subject: [PATCH] Add PyFunction::keywords field --- codon/cir/llvm/llvisitor.cpp | 24 ++++++++++++++---------- codon/cir/pyextension.h | 1 + 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/codon/cir/llvm/llvisitor.cpp b/codon/cir/llvm/llvisitor.cpp index 8bffd3a0..36fc5e0e 100644 --- a/codon/cir/llvm/llvisitor.cpp +++ b/codon/cir/llvm/llvisitor.cpp @@ -756,16 +756,20 @@ void LLVMVisitor::writeToPythonExtension(const PyModule &pymod, std::vector pyMethods; for (auto &pyfunc : functions) { int flag = 0; - switch (pyfunc.nargs) { - case 0: - flag = PYEXT_METH_NOARGS; - break; - case 1: - flag = PYEXT_METH_O; - break; - default: - flag = PYEXT_METH_FASTCALL; - break; + if (pyfunc.keywords) { + flag = PYEXT_METH_FASTCALL | PYEXT_METH_KEYWORDS; + } else { + switch (pyfunc.nargs) { + case 0: + flag = PYEXT_METH_NOARGS; + break; + case 1: + flag = PYEXT_METH_O; + break; + default: + flag = PYEXT_METH_FASTCALL; + break; + } } switch (pyfunc.type) { diff --git a/codon/cir/pyextension.h b/codon/cir/pyextension.h index 70be5156..f01f97b7 100644 --- a/codon/cir/pyextension.h +++ b/codon/cir/pyextension.h @@ -18,6 +18,7 @@ struct PyFunction { Func *func = nullptr; Type type = Type::TOPLEVEL; int nargs = 0; + bool keywords = false; bool coexist = false; };