Skip to content

Emit warnings in #[function] macro expansion when invalid arguments used #73

@hiltontj

Description

@hiltontj

This is a follow on for #69 to cover the one TODO that was not cleaned up by #72.

The TODO can be found here:

impl Parse for FunctionMacroArgs {
fn parse(input: syn::parse::ParseStream) -> syn::Result<Self> {
let mut args = Self::default();
while !input.is_empty() {
let lookahead = input.lookahead1();
if lookahead.peek(kw::name) {
if args.name.is_some() {
return Err(input.error("expected only a single `name` argument"));
}
let name = input.parse::<StrArg<kw::name>>()?.value;
args.name = Some(name);
} else {
// TODO - may want to warn here when found a invalid arg - see how
// tracing::instrument stores warnings and emits them later when generating the
// expanded token stream.
let _ = input.parse::<proc_macro2::TokenTree>();
}
}
Ok(args)
}
}

I believe that if unsupported arguments are passed to the #[function] macro, it will just ignore them, but should instead emit compiler warnings.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions