@@ -911,76 +911,20 @@ impl<'a> FnSpec<'a> {
911911 FnType :: FnStatic => quote ! { . flags( #pyo3_path:: ffi:: METH_STATIC ) } ,
912912 _ => quote ! { } ,
913913 } ;
914- match self . convention {
915- CallingConvention :: Noargs => quote ! {
916- #pyo3_path:: impl_:: pymethods:: PyMethodDef :: noargs(
917- #python_name,
918- {
919- unsafe extern "C" fn trampoline(
920- _slf: * mut #pyo3_path:: ffi:: PyObject ,
921- _args: * mut #pyo3_path:: ffi:: PyObject ,
922- ) -> * mut #pyo3_path:: ffi:: PyObject
923- {
924- unsafe {
925- #pyo3_path:: impl_:: trampoline:: noargs(
926- _slf,
927- _args,
928- #wrapper
929- )
930- }
931- }
932- trampoline
933- } ,
934- #doc,
935- ) #flags
936- } ,
937- CallingConvention :: Fastcall => quote ! {
938- #pyo3_path:: impl_:: pymethods:: PyMethodDef :: fastcall_cfunction_with_keywords(
939- #python_name,
940- {
941- unsafe extern "C" fn trampoline(
942- _slf: * mut #pyo3_path:: ffi:: PyObject ,
943- _args: * const * mut #pyo3_path:: ffi:: PyObject ,
944- _nargs: #pyo3_path:: ffi:: Py_ssize_t ,
945- _kwnames: * mut #pyo3_path:: ffi:: PyObject
946- ) -> * mut #pyo3_path:: ffi:: PyObject
947- {
948- #pyo3_path:: impl_:: trampoline:: fastcall_with_keywords(
949- _slf,
950- _args,
951- _nargs,
952- _kwnames,
953- #wrapper
954- )
955- }
956- trampoline
957- } ,
958- #doc,
959- ) #flags
960- } ,
961- CallingConvention :: Varargs => quote ! {
962- #pyo3_path:: impl_:: pymethods:: PyMethodDef :: cfunction_with_keywords(
963- #python_name,
964- {
965- unsafe extern "C" fn trampoline(
966- _slf: * mut #pyo3_path:: ffi:: PyObject ,
967- _args: * mut #pyo3_path:: ffi:: PyObject ,
968- _kwargs: * mut #pyo3_path:: ffi:: PyObject ,
969- ) -> * mut #pyo3_path:: ffi:: PyObject
970- {
971- #pyo3_path:: impl_:: trampoline:: cfunction_with_keywords(
972- _slf,
973- _args,
974- _kwargs,
975- #wrapper
976- )
977- }
978- trampoline
979- } ,
980- #doc,
981- ) #flags
982- } ,
914+ let trampoline = match self . convention {
915+ CallingConvention :: Noargs => Ident :: new ( "noargs" , Span :: call_site ( ) ) ,
916+ CallingConvention :: Fastcall => {
917+ Ident :: new ( "fastcall_cfunction_with_keywords" , Span :: call_site ( ) )
918+ }
919+ CallingConvention :: Varargs => Ident :: new ( "cfunction_with_keywords" , Span :: call_site ( ) ) ,
983920 CallingConvention :: TpNew => unreachable ! ( "tp_new cannot get a methoddef" ) ,
921+ } ;
922+ quote ! {
923+ #pyo3_path:: impl_:: pymethods:: PyMethodDef :: #trampoline(
924+ #python_name,
925+ #pyo3_path:: impl_:: trampoline:: get_trampoline_function!( #trampoline, #wrapper) ,
926+ #doc,
927+ ) #flags
984928 }
985929 }
986930
0 commit comments