~ruther/avr-device

ba0df30a6024e79a121c7ca540af68176e2a9f4f — Rahix 4 years ago 1969ec3
Update proc-macro dependencies

Update to syn 1.0 and fix the interrupt macro to work well with the new
version.

Signed-off-by: Rahix <rahix@rahix.de>
2 files changed, 13 insertions(+), 13 deletions(-)

M macros/Cargo.toml
M macros/src/lib.rs
M macros/Cargo.toml => macros/Cargo.toml +3 -3
@@ 8,9 8,9 @@ edition = "2018"
proc-macro = true

[dependencies]
quote = "0.6.12"
proc-macro2 = "0.4.30"
quote = "1.0.7"
proc-macro2 = "1.0.19"

[dependencies.syn]
version = "0.15.39"
version = "1.0.35"
features = ["extra-traits", "full"]

M macros/src/lib.rs => macros/src/lib.rs +10 -10
@@ 10,16 10,16 @@ pub fn interrupt(
    input: proc_macro::TokenStream,
) -> proc_macro::TokenStream {
    // Adapted from https://github.com/rust-embedded/cortex-m-rt/blob/master/macros/src/lib.rs
    let f: syn::ItemFn = syn::parse(input).expect("`#[interrupt]` must be applied to a function");
    let f = syn::parse_macro_input!(input as syn::ItemFn);
    let args: Vec<_> = args.into_iter().collect();

    let fspan = f.span();
    let ident = f.ident;
    let ident = f.sig.ident;
    let ident_s = ident.to_string();
    let attrs = f.attrs;
    let block = f.block;
    let stmts = block.stmts;
    let unsafety = f.unsafety;
    let unsafety = f.sig.unsafety;

    let chip = if let Some(tree) = args.get(0) {
        if let proc_macro::TokenTree::Ident(ident) = tree {


@@ 41,14 41,14 @@ pub fn interrupt(
        .into();
    };

    let valid_signature = f.constness.is_none()
    let valid_signature = f.sig.constness.is_none()
        && f.vis == syn::Visibility::Inherited
        && f.abi.is_none()
        && f.decl.inputs.is_empty()
        && f.decl.generics.params.is_empty()
        && f.decl.generics.where_clause.is_none()
        && f.decl.variadic.is_none()
        && match f.decl.output {
        && f.sig.abi.is_none()
        && f.sig.inputs.is_empty()
        && f.sig.generics.params.is_empty()
        && f.sig.generics.where_clause.is_none()
        && f.sig.variadic.is_none()
        && match f.sig.output {
            syn::ReturnType::Default => true,
            syn::ReturnType::Type(_, ref ty) => match **ty {
                syn::Type::Tuple(ref tuple) => tuple.elems.is_empty(),

Do not follow this link