Skip to content

Commit 94740a6

Browse files
bors[bot]dtolnay
andauthored
Merge #203
203: Update to Syn 1.0 r=korken89 a=dtolnay Release notes: https://github.com/dtolnay/syn/releases/tag/1.0.0 Co-authored-by: David Tolnay <[email protected]>
2 parents 1ff0a25 + 37909ec commit 94740a6

File tree

2 files changed

+61
-65
lines changed

2 files changed

+61
-65
lines changed

cortex-m-rt/macros/Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@ version = "0.1.5"
1313
proc-macro = true
1414

1515
[dependencies]
16-
quote = "0.6.8"
17-
proc-macro2 = "0.4.20"
16+
quote = "1.0"
17+
proc-macro2 = "1.0"
1818

1919
[dependencies.syn]
2020
features = ["extra-traits", "full"]
21-
version = "0.15.13"
21+
version = "1.0"
2222

2323
[dependencies.rand]
2424
version = "0.5.5"

cortex-m-rt/macros/src/lib.rs

Lines changed: 58 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ use std::sync::atomic::{AtomicUsize, Ordering};
1717
use std::time::{SystemTime, UNIX_EPOCH};
1818
use syn::{
1919
parse, spanned::Spanned, AttrStyle, Attribute, FnArg, Ident, Item, ItemFn, ItemStatic,
20-
PathArguments, ReturnType, Stmt, Type, Visibility,
20+
ReturnType, Stmt, Type, Visibility,
2121
};
2222

2323
static CALL_COUNT: AtomicUsize = AtomicUsize::new(0);
@@ -86,14 +86,14 @@ pub fn entry(args: TokenStream, input: TokenStream) -> TokenStream {
8686
let f = parse_macro_input!(input as ItemFn);
8787

8888
// check the function signature
89-
let valid_signature = f.constness.is_none()
89+
let valid_signature = f.sig.constness.is_none()
9090
&& f.vis == Visibility::Inherited
91-
&& f.abi.is_none()
92-
&& f.decl.inputs.is_empty()
93-
&& f.decl.generics.params.is_empty()
94-
&& f.decl.generics.where_clause.is_none()
95-
&& f.decl.variadic.is_none()
96-
&& match f.decl.output {
91+
&& f.sig.abi.is_none()
92+
&& f.sig.inputs.is_empty()
93+
&& f.sig.generics.params.is_empty()
94+
&& f.sig.generics.where_clause.is_none()
95+
&& f.sig.variadic.is_none()
96+
&& match f.sig.output {
9797
ReturnType::Default => false,
9898
ReturnType::Type(_, ref ty) => match **ty {
9999
Type::Never(_) => true,
@@ -118,7 +118,7 @@ pub fn entry(args: TokenStream, input: TokenStream) -> TokenStream {
118118

119119
// XXX should we blacklist other attributes?
120120
let attrs = f.attrs;
121-
let unsafety = f.unsafety;
121+
let unsafety = f.sig.unsafety;
122122
let hash = random_ident();
123123
let (statics, stmts) = match extract_static_muts(f.block.stmts) {
124124
Err(e) => return e.to_compile_error().into(),
@@ -282,7 +282,7 @@ pub fn exception(args: TokenStream, input: TokenStream) -> TokenStream {
282282
}
283283

284284
let fspan = f.span();
285-
let ident = f.ident;
285+
let ident = f.sig.ident;
286286

287287
enum Exception {
288288
DefaultHandler,
@@ -309,19 +309,19 @@ pub fn exception(args: TokenStream, input: TokenStream) -> TokenStream {
309309
let attrs = f.attrs;
310310
let block = f.block;
311311
let stmts = block.stmts;
312-
let unsafety = f.unsafety;
312+
let unsafety = f.sig.unsafety;
313313

314314
let hash = random_ident();
315315
match exn {
316316
Exception::DefaultHandler => {
317-
let valid_signature = f.constness.is_none()
317+
let valid_signature = f.sig.constness.is_none()
318318
&& f.vis == Visibility::Inherited
319-
&& f.abi.is_none()
320-
&& f.decl.inputs.len() == 1
321-
&& f.decl.generics.params.is_empty()
322-
&& f.decl.generics.where_clause.is_none()
323-
&& f.decl.variadic.is_none()
324-
&& match f.decl.output {
319+
&& f.sig.abi.is_none()
320+
&& f.sig.inputs.len() == 1
321+
&& f.sig.generics.params.is_empty()
322+
&& f.sig.generics.where_clause.is_none()
323+
&& f.sig.variadic.is_none()
324+
&& match f.sig.output {
325325
ReturnType::Default => true,
326326
ReturnType::Type(_, ref ty) => match **ty {
327327
Type::Tuple(ref tuple) => tuple.elems.is_empty(),
@@ -339,8 +339,8 @@ pub fn exception(args: TokenStream, input: TokenStream) -> TokenStream {
339339
.into();
340340
}
341341

342-
let arg = match f.decl.inputs[0] {
343-
FnArg::Captured(ref arg) => arg,
342+
let arg = match f.sig.inputs[0] {
343+
FnArg::Typed(ref arg) => arg,
344344
_ => unreachable!(),
345345
};
346346

@@ -360,21 +360,21 @@ pub fn exception(args: TokenStream, input: TokenStream) -> TokenStream {
360360
.into()
361361
}
362362
Exception::HardFault => {
363-
let valid_signature = f.constness.is_none()
363+
let valid_signature = f.sig.constness.is_none()
364364
&& f.vis == Visibility::Inherited
365-
&& f.abi.is_none()
366-
&& f.decl.inputs.len() == 1
367-
&& match f.decl.inputs[0] {
368-
FnArg::Captured(ref arg) => match arg.ty {
369-
Type::Reference(ref r) => r.lifetime.is_none() && r.mutability.is_none(),
365+
&& f.sig.abi.is_none()
366+
&& f.sig.inputs.len() == 1
367+
&& match &f.sig.inputs[0] {
368+
FnArg::Typed(arg) => match arg.ty.as_ref() {
369+
Type::Reference(r) => r.lifetime.is_none() && r.mutability.is_none(),
370370
_ => false,
371371
},
372372
_ => false,
373373
}
374-
&& f.decl.generics.params.is_empty()
375-
&& f.decl.generics.where_clause.is_none()
376-
&& f.decl.variadic.is_none()
377-
&& match f.decl.output {
374+
&& f.sig.generics.params.is_empty()
375+
&& f.sig.generics.where_clause.is_none()
376+
&& f.sig.variadic.is_none()
377+
&& match f.sig.output {
378378
ReturnType::Default => false,
379379
ReturnType::Type(_, ref ty) => match **ty {
380380
Type::Never(_) => true,
@@ -391,8 +391,8 @@ pub fn exception(args: TokenStream, input: TokenStream) -> TokenStream {
391391
.into();
392392
}
393393

394-
let arg = match f.decl.inputs[0] {
395-
FnArg::Captured(ref arg) => arg,
394+
let arg = match f.sig.inputs[0] {
395+
FnArg::Typed(ref arg) => arg,
396396
_ => unreachable!(),
397397
};
398398

@@ -413,14 +413,14 @@ pub fn exception(args: TokenStream, input: TokenStream) -> TokenStream {
413413
.into()
414414
}
415415
Exception::Other => {
416-
let valid_signature = f.constness.is_none()
416+
let valid_signature = f.sig.constness.is_none()
417417
&& f.vis == Visibility::Inherited
418-
&& f.abi.is_none()
419-
&& f.decl.inputs.is_empty()
420-
&& f.decl.generics.params.is_empty()
421-
&& f.decl.generics.where_clause.is_none()
422-
&& f.decl.variadic.is_none()
423-
&& match f.decl.output {
418+
&& f.sig.abi.is_none()
419+
&& f.sig.inputs.is_empty()
420+
&& f.sig.generics.params.is_empty()
421+
&& f.sig.generics.where_clause.is_none()
422+
&& f.sig.variadic.is_none()
423+
&& match f.sig.output {
424424
ReturnType::Default => true,
425425
ReturnType::Type(_, ref ty) => match **ty {
426426
Type::Tuple(ref tuple) => tuple.elems.is_empty(),
@@ -564,23 +564,23 @@ pub fn interrupt(args: TokenStream, input: TokenStream) -> TokenStream {
564564
}
565565

566566
let fspan = f.span();
567-
let ident = f.ident;
567+
let ident = f.sig.ident;
568568
let ident_s = ident.to_string();
569569

570570
// XXX should we blacklist other attributes?
571571
let attrs = f.attrs;
572572
let block = f.block;
573573
let stmts = block.stmts;
574-
let unsafety = f.unsafety;
574+
let unsafety = f.sig.unsafety;
575575

576-
let valid_signature = f.constness.is_none()
576+
let valid_signature = f.sig.constness.is_none()
577577
&& f.vis == Visibility::Inherited
578-
&& f.abi.is_none()
579-
&& f.decl.inputs.is_empty()
580-
&& f.decl.generics.params.is_empty()
581-
&& f.decl.generics.where_clause.is_none()
582-
&& f.decl.variadic.is_none()
583-
&& match f.decl.output {
578+
&& f.sig.abi.is_none()
579+
&& f.sig.inputs.is_empty()
580+
&& f.sig.generics.params.is_empty()
581+
&& f.sig.generics.where_clause.is_none()
582+
&& f.sig.variadic.is_none()
583+
&& match f.sig.output {
584584
ReturnType::Default => true,
585585
ReturnType::Type(_, ref ty) => match **ty {
586586
Type::Tuple(ref tuple) => tuple.elems.is_empty(),
@@ -669,15 +669,15 @@ pub fn pre_init(args: TokenStream, input: TokenStream) -> TokenStream {
669669
let f = parse_macro_input!(input as ItemFn);
670670

671671
// check the function signature
672-
let valid_signature = f.constness.is_none()
672+
let valid_signature = f.sig.constness.is_none()
673673
&& f.vis == Visibility::Inherited
674-
&& f.unsafety.is_some()
675-
&& f.abi.is_none()
676-
&& f.decl.inputs.is_empty()
677-
&& f.decl.generics.params.is_empty()
678-
&& f.decl.generics.where_clause.is_none()
679-
&& f.decl.variadic.is_none()
680-
&& match f.decl.output {
674+
&& f.sig.unsafety.is_some()
675+
&& f.sig.abi.is_none()
676+
&& f.sig.inputs.is_empty()
677+
&& f.sig.generics.params.is_empty()
678+
&& f.sig.generics.where_clause.is_none()
679+
&& f.sig.variadic.is_none()
680+
&& match f.sig.output {
681681
ReturnType::Default => true,
682682
ReturnType::Type(_, ref ty) => match **ty {
683683
Type::Tuple(ref tuple) => tuple.elems.is_empty(),
@@ -702,7 +702,7 @@ pub fn pre_init(args: TokenStream, input: TokenStream) -> TokenStream {
702702

703703
// XXX should we blacklist other attributes?
704704
let attrs = f.attrs;
705-
let ident = f.ident;
705+
let ident = f.sig.ident;
706706
let block = f.block;
707707

708708
quote!(
@@ -799,9 +799,5 @@ fn extract_cfgs(attrs: Vec<Attribute>) -> (Vec<Attribute>, Vec<Attribute>) {
799799

800800
/// Returns `true` if `attr.path` matches `name`
801801
fn eq(attr: &Attribute, name: &str) -> bool {
802-
attr.style == AttrStyle::Outer && attr.path.segments.len() == 1 && {
803-
let pair = attr.path.segments.first().unwrap();
804-
let segment = pair.value();
805-
segment.arguments == PathArguments::None && segment.ident.to_string() == name
806-
}
802+
attr.style == AttrStyle::Outer && attr.path.is_ident(name)
807803
}

0 commit comments

Comments
 (0)