Skip to content

Commit d16585c

Browse files
committed
Ensure raw identifiers are supported as well
1 parent 3701416 commit d16585c

File tree

3 files changed

+17
-10
lines changed

3 files changed

+17
-10
lines changed

soa-derive-internal/src/slice.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,12 @@ pub fn derive(input: &Input) -> TokenStream {
2323
let first_field = &fields_names[0];
2424

2525
let fields_names_hygienic_1 = input.fields.iter()
26-
.map(|field| field.ident.as_ref().unwrap())
27-
.map(|ident| Ident::new(&format!("___soa_derive_private_1_{}", ident), Span::call_site()))
26+
.enumerate()
27+
.map(|(i, _)| Ident::new(&format!("___soa_derive_private_1_{}", i), Span::call_site()))
2828
.collect::<Vec<_>>();
2929
let fields_names_hygienic_2 = input.fields.iter()
30-
.map(|field| field.ident.as_ref().unwrap())
31-
.map(|ident| Ident::new(&format!("___soa_derive_private_2_{}", ident), Span::call_site()))
30+
.enumerate()
31+
.map(|(i, _)| Ident::new(&format!("___soa_derive_private_2_{}", i), Span::call_site()))
3232
.collect::<Vec<_>>();
3333

3434
let fields_types = &input.fields.iter()
@@ -256,12 +256,12 @@ pub fn derive_mut(input: &Input) -> TokenStream {
256256
let fields_names_2 = &fields_names;
257257
let first_field = &fields_names[0];
258258
let slice_names_1 = &input.fields.iter()
259-
.map(|field| field.ident.as_ref().unwrap().to_string())
260-
.map(|ident| Ident::new(&format!("{}_slice_1", ident), Span::call_site()))
259+
.enumerate()
260+
.map(|(i, _)| Ident::new(&format!("___soa_derive_private_slice_1_{}", i), Span::call_site()))
261261
.collect::<Vec<_>>();
262262
let slice_names_2 = &input.fields.iter()
263-
.map(|field| field.ident.as_ref().unwrap().to_string())
264-
.map(|ident| Ident::new(&format!("{}_slice_2", ident), Span::call_site()))
263+
.enumerate()
264+
.map(|(i, _)| Ident::new(&format!("___soa_derive_private_slice_2_{}", i), Span::call_site()))
265265
.collect::<Vec<_>>();
266266

267267
let fields_types = &input.fields.iter()

soa-derive-internal/src/vec.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ pub fn derive(input: &Input) -> TokenStream {
2222
.collect::<Vec<_>>();
2323

2424
let fields_names_hygienic = input.fields.iter()
25-
.map(|field| field.ident.as_ref().unwrap())
26-
.map(|ident| Ident::new(&format!("___soa_derive_private_{}", ident), Span::call_site()))
25+
.enumerate()
26+
.map(|(i, _)| Ident::new(&format!("___soa_derive_private_{}", i), Span::call_site()))
2727
.collect::<Vec<_>>();
2828

2929
let first_field = &fields_names[0];

tests/extreme.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,3 +45,10 @@ pub struct BadNames {
4545
pub capacity: String,
4646
pub buf: String,
4747
}
48+
49+
// Raw identifiers
50+
#[derive(Debug, Clone, PartialEq, StructOfArray)]
51+
pub struct RawIdent {
52+
pub r#for: String,
53+
pub r#in: String,
54+
}

0 commit comments

Comments
 (0)