diff options
author | Matthew Maurer <mmaurer@google.com> | 2023-05-27 02:07:09 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2023-05-27 02:07:09 +0000 |
commit | f559f9cf6587a63bad4189b8720f63ed969f9bc8 (patch) | |
tree | 013695c6c3323ccdb9c6dccb7357753d563bcf9e | |
parent | a5e9676fa6c5f27c82fe23f13c3534af7e977817 (diff) | |
parent | d11887ffec7705f36bffc9b1a3e93bc82ca3c29a (diff) | |
download | num-derive-f559f9cf6587a63bad4189b8720f63ed969f9bc8.tar.gz |
Update to syn-2 am: 559b5f3107 am: fd2dcef001 am: fe0607416e am: 8ebd4e87c0 am: d11887ffec
Original change: https://android-review.googlesource.com/c/platform/external/rust/crates/num-derive/+/2520538
Change-Id: I16a697557716e3d54557760e5479fdb6aabaec76
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r-- | Cargo.toml | 2 | ||||
-rw-r--r-- | patches/syn-2.patch | 106 | ||||
-rw-r--r-- | src/lib.rs | 20 | ||||
-rw-r--r-- | src/test.rs | 31 | ||||
-rw-r--r-- | tests/issue-16.rs | 9 |
5 files changed, 124 insertions, 44 deletions
@@ -44,7 +44,7 @@ version = "1" version = "1" [dependencies.syn] -version = "1" +version = "2" [dev-dependencies.num] version = "0.3" diff --git a/patches/syn-2.patch b/patches/syn-2.patch new file mode 100644 index 0000000..987faa3 --- /dev/null +++ b/patches/syn-2.patch @@ -0,0 +1,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 + @@ -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, +} |