Skip to content

Commit 37025d8

Browse files
committed
fix: use unsuffixed numeric literal for tuple index
See <rust-lang/rust#60210> for more context. This has been a future-incompatibility warning since Rust 1.27, where tuple index subexpressions with invalid suffixes (in this case, `.0usize`) was erroneously accidentally accepted. This will become a hard error in Rust 1.91 after <rust-lang/rust#145463> rejects the remaining carve-outs.
1 parent 256af3c commit 37025d8

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

validates_derive/src/lib.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ extern crate syn;
55
#[macro_use]
66
extern crate quote;
77

8-
use proc_macro::TokenStream;
8+
use proc_macro::{TokenStream};
99
use syn::Attribute;
1010
use syn::Data;
1111
use syn::DeriveInput;
@@ -53,6 +53,7 @@ pub fn derive_validates(input: TokenStream) -> TokenStream {
5353
},
5454
Fields::Unnamed(d) => {
5555
let ctor_fields: Vec<_> = d.unnamed.iter().enumerate().map(|(name, f)| {
56+
let name = proc_macro2::Literal::usize_unsuffixed(name);
5657
let mangle = compute_mangle_expr(&f.attrs, format!("#{}", name));
5758
return quote! {
5859
::validates::Validates::validate(self.#name) #mangle ?,
@@ -68,6 +69,7 @@ pub fn derive_validates(input: TokenStream) -> TokenStream {
6869
}).collect();
6970
struct_args = quote! { ( #( #struct_fields )* ); };
7071
let clone_fields: Vec<_> = d.unnamed.iter().enumerate().map(|(name, _f)| {
72+
let name = proc_macro2::Literal::usize_unsuffixed(name);
7173
return quote! {
7274
::std::clone::Clone::clone(&self.#name),
7375
};

0 commit comments

Comments
 (0)