Avoid bypassing setter checks by making fn.params.skip private

This commit is contained in:
J Henry Waugh
2020-08-27 23:08:34 -05:00
parent fedc4c5338
commit 62dc142c58
3 changed files with 20 additions and 12 deletions

View File

@@ -56,7 +56,7 @@ pub(crate) fn generate_body(
// NB: these are token streams, because reparsing messes up "> >" vs ">>"
let mut gen_fn_tokens: Vec<proc_macro2::TokenStream> = Vec::new();
for function in fns {
if function.params.skip {
if function.skipped() {
continue;
}
let fn_token_name = syn::Ident::new(
@@ -64,7 +64,7 @@ pub(crate) fn generate_body(
function.name().span(),
);
let reg_name = function
.params
.params()
.name
.clone()
.unwrap_or_else(|| function.name().to_string());
@@ -151,8 +151,8 @@ pub(crate) fn check_rename_collisions(fns: &Vec<ExportedFn>) -> Result<(), syn::
let mut renames = HashMap::<String, proc_macro2::Span>::new();
let mut names = HashMap::<String, proc_macro2::Span>::new();
for itemfn in fns.iter() {
if let Some(ref name) = itemfn.params.name {
let current_span = itemfn.params.span.as_ref().unwrap();
if let Some(ref name) = itemfn.params().name {
let current_span = itemfn.params().span.as_ref().unwrap();
let key = itemfn.arg_list().fold(name.clone(), |mut argstr, fnarg| {
let type_string: String = match fnarg {
syn::FnArg::Receiver(_) => unimplemented!("receiver rhai_fns not implemented"),