Forward cfgs on pyclass fields to the method defs
This commit is contained in:
parent
55592afdb9
commit
44310ec7e0
|
@ -519,7 +519,15 @@ pub fn impl_py_setter_def(
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let mut cfg_attrs = TokenStream::new();
|
||||||
|
if let PropertyType::Descriptor { field, .. } = &property_type {
|
||||||
|
for attr in field.attrs.iter().filter(|attr| attr.path.is_ident("cfg")) {
|
||||||
|
attr.to_tokens(&mut cfg_attrs);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let associated_method = quote! {
|
let associated_method = quote! {
|
||||||
|
#cfg_attrs
|
||||||
unsafe fn #wrapper_ident(
|
unsafe fn #wrapper_ident(
|
||||||
_py: _pyo3::Python<'_>,
|
_py: _pyo3::Python<'_>,
|
||||||
_slf: *mut _pyo3::ffi::PyObject,
|
_slf: *mut _pyo3::ffi::PyObject,
|
||||||
|
@ -538,6 +546,7 @@ pub fn impl_py_setter_def(
|
||||||
};
|
};
|
||||||
|
|
||||||
let method_def = quote! {
|
let method_def = quote! {
|
||||||
|
#cfg_attrs
|
||||||
_pyo3::class::PyMethodDefType::Setter({
|
_pyo3::class::PyMethodDefType::Setter({
|
||||||
#deprecations
|
#deprecations
|
||||||
_pyo3::class::PySetterDef::new(
|
_pyo3::class::PySetterDef::new(
|
||||||
|
@ -653,7 +662,15 @@ pub fn impl_py_getter_def(
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let mut cfg_attrs = TokenStream::new();
|
||||||
|
if let PropertyType::Descriptor { field, .. } = &property_type {
|
||||||
|
for attr in field.attrs.iter().filter(|attr| attr.path.is_ident("cfg")) {
|
||||||
|
attr.to_tokens(&mut cfg_attrs);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let associated_method = quote! {
|
let associated_method = quote! {
|
||||||
|
#cfg_attrs
|
||||||
unsafe fn #wrapper_ident(
|
unsafe fn #wrapper_ident(
|
||||||
_py: _pyo3::Python<'_>,
|
_py: _pyo3::Python<'_>,
|
||||||
_slf: *mut _pyo3::ffi::PyObject
|
_slf: *mut _pyo3::ffi::PyObject
|
||||||
|
@ -665,6 +682,7 @@ pub fn impl_py_getter_def(
|
||||||
};
|
};
|
||||||
|
|
||||||
let method_def = quote! {
|
let method_def = quote! {
|
||||||
|
#cfg_attrs
|
||||||
_pyo3::class::PyMethodDefType::Getter({
|
_pyo3::class::PyMethodDefType::Getter({
|
||||||
#deprecations
|
#deprecations
|
||||||
_pyo3::class::PyGetterDef::new(
|
_pyo3::class::PyGetterDef::new(
|
||||||
|
|
|
@ -34,3 +34,28 @@ pub struct Bar {
|
||||||
pub enum Enum {
|
pub enum Enum {
|
||||||
Var0,
|
Var0,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[crate::pyclass]
|
||||||
|
#[pyo3(crate = "crate")]
|
||||||
|
pub struct Foo3 {
|
||||||
|
#[pyo3(get, set)]
|
||||||
|
#[cfg(FALSE)]
|
||||||
|
field: i32,
|
||||||
|
|
||||||
|
#[pyo3(get, set)]
|
||||||
|
#[cfg(not(FALSE))]
|
||||||
|
field: u32,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[crate::pyclass]
|
||||||
|
#[pyo3(crate = "crate")]
|
||||||
|
pub struct Foo4 {
|
||||||
|
#[pyo3(get, set)]
|
||||||
|
#[cfg(FALSE)]
|
||||||
|
#[cfg(not(FALSE))]
|
||||||
|
field: i32,
|
||||||
|
|
||||||
|
#[pyo3(get, set)]
|
||||||
|
#[cfg(any(not(FALSE)))]
|
||||||
|
field: u32,
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue