aboutsummaryrefslogtreecommitdiff
path: root/patches/syn-2.patch
blob: 987faa392dcf470963093bac123dac766b6bdbb5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
From 1d2c6fa2ea2f3ab560c30c631fdde0034f5789a4 Mon Sep 17 00:00:00 2001
From: Matthew Maurer <mmaurer@google.com>
Date: Mon, 3 Apr 2023 16:13:04 +0000
Subject: [PATCH] Update to syn-2

Bug: 276463929
Test: m
Change-Id: If2f4b9e451716cae4e7cc5d037764de4582aa761
---
 src/lib.rs        | 20 ++++++++------------
 src/test.rs       | 31 -------------------------------
 tests/issue-16.rs |  9 +++++++++
 3 files changed, 17 insertions(+), 43 deletions(-)
 delete mode 100644 src/test.rs
 create mode 100644 tests/issue-16.rs

diff --git a/src/lib.rs b/src/lib.rs
index ef55e4b..0b821f9 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -170,16 +170,14 @@ impl NumTraits {
         // retrieve its value, and use it to create an `Ident` to be used
         // to import the `num_traits` crate.
         for attr in &ast.attrs {
-            if let Ok(syn::Meta::NameValue(mnv)) = attr.parse_meta() {
-                if mnv.path.is_ident("num_traits") {
-                    if let syn::Lit::Str(lit_str) = mnv.lit {
-                        return NumTraits {
-                            import: syn::Ident::new(&lit_str.value(), lit_str.span()),
-                            explicit: true,
-                        };
-                    } else {
-                        panic!("#[num_traits] attribute value must be a str");
-                    }
+            if attr.path().is_ident("num_traits") {
+                if let syn::Expr::Lit(syn::ExprLit { lit: syn::Lit::Str(ref lit_str), .. }) = attr.meta.require_name_value().unwrap().value {
+                  return NumTraits {
+                      import: syn::Ident::new(&lit_str.value(), lit_str.span()),
+                      explicit: true,
+                  }
+                } else {
+                    panic!("#[num_traits] attribute value must be a str");
                 }
             }
         }
@@ -954,5 +952,3 @@ pub fn float(input: TokenStream) -> TokenStream {
 
     import.wrap("Float", &name, impl_).into()
 }
-
-mod test;
diff --git a/src/test.rs b/src/test.rs
deleted file mode 100644
index c4cd7fe..0000000
--- a/src/test.rs
+++ /dev/null
@@ -1,31 +0,0 @@
-//! This module uses doc-tests on modules for `compile_fail`
-
-// We need "syn/full" to parse macros.
-// Use `--nocapture` to check the quality of the error message.
-#[cfg(not(feature = "full-syntax"))]
-/// ```compile_fail
-/// macro_rules! get_an_isize {
-///     () => (0_isize)
-/// }
-///
-/// #[derive(num_derive::FromPrimitive)]
-/// pub enum CLikeEnum {
-///     VarA = get_an_isize!(), // error without "syn/full"
-///     VarB = 2,
-/// }
-/// ```
-mod issue16 {}
-
-#[cfg(feature = "full-syntax")]
-/// ```
-/// macro_rules! get_an_isize {
-///     () => (0_isize)
-/// }
-///
-/// #[derive(num_derive::FromPrimitive)]
-/// pub enum CLikeEnum {
-///     VarA = get_an_isize!(), // ok with "syn/full"
-///     VarB = 2,
-/// }
-/// ```
-mod issue16 {}
diff --git a/tests/issue-16.rs b/tests/issue-16.rs
new file mode 100644
index 0000000..0db3b6f
--- /dev/null
+++ b/tests/issue-16.rs
@@ -0,0 +1,9 @@
+macro_rules! get_an_isize {
+    () => (0_isize)
+}
+
+#[derive(num_derive::FromPrimitive)]
+pub enum CLikeEnum {
+    VarA = get_an_isize!(),
+    VarB = 2,
+}
-- 
2.40.0.348.gf938b09366-goog