in src/bindgen/ir/function.rs [248:288]
fn as_argument(&self) -> Result<Option<FunctionArgument>, String> {
match *self {
syn::FnArg::Typed(syn::PatType {
ref pat, ref ty, ..
}) => {
let ty = match Type::load(ty)? {
Some(x) => x,
None => return Ok(None),
};
let name = match **pat {
syn::Pat::Wild(..) => None,
syn::Pat::Ident(syn::PatIdent { ref ident, .. }) => {
if ty == Type::Primitive(super::PrimitiveType::VaList) {
None
} else {
Some(ident.unraw().to_string())
}
}
_ => {
return Err(format!(
"Parameter has an unsupported argument name: {:?}",
pat
))
}
};
if let Type::Array(..) = ty {
return Err("Array as function arguments are not supported".to_owned());
}
Ok(Some(FunctionArgument {
name,
ty,
array_length: None,
}))
}
syn::FnArg::Receiver(ref receiver) => Ok(Some(FunctionArgument {
name: Some("self".to_string()),
ty: gen_self_type(receiver)?,
array_length: None,
})),
}
}