Skip to content

Commit

Permalink
Extract the function kind
Browse files Browse the repository at this point in the history
  • Loading branch information
CLOVIS-AI committed Jun 14, 2022
1 parent 56b85cf commit 8125521
Showing 1 changed file with 11 additions and 1 deletion.
12 changes: 11 additions & 1 deletion pyo3-macros-backend/src/pymethod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1249,13 +1249,23 @@ fn generate_get_field_info(cls: &syn::Type, field: &PyMethod<'_>) -> (TokenStrea
let field_args_name = format_ident!("{}_args", ident_prefix);

let field_name = TokenTree::Literal(Literal::string(&*field.method_name));
let field_kind = match &field.spec.tp {
FnType::Getter(_) => quote!(pyo3::interface::FieldKind::Getter),
FnType::Setter(_) => quote!(pyo3::interface::FieldKind::Setter),
FnType::Fn(_) => quote!(pyo3::interface::FieldKind::Function),
FnType::FnNew => quote!(pyo3::interface::FieldKind::New),
FnType::FnClass => quote!(pyo3::interface::FieldKind::ClassMethod),
FnType::FnStatic => quote!(pyo3::interface::FieldKind::StaticMethod),
FnType::FnModule => todo!("FnModule is not currently supported"),
FnType::ClassAttribute => quote!(pyo3::interface::FieldKind::ClassAttribute),
};

let output = quote! {
const #field_args_name: [pyo3::interface::ArgumentInfo; 0] = []; //TODO

const #field_info_name: pyo3::interface::FieldInfo = pyo3::interface::FieldInfo {
name: #field_name,
kind: pyo3::interface::FieldKind::New, //TODO
kind: #field_kind,
py_type: None, //TODO
arguments: &#field_args_name,
};
Expand Down

0 comments on commit 8125521

Please sign in to comment.