From 5bba89fef1a129adbf6f9236d9ca9984bd5d09f8 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Wed, 25 Dec 2024 18:05:52 -0800 Subject: [PATCH] Add repetition test with array of array error[E0599]: the method `quote_into_iter` exists for struct `RepInterp<&[u8; 2]>`, but its trait bounds were not satisfied --> tests/test.rs:110:13 | 110 | let _ = quote!(#(#(#array_of_array)*)*); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method cannot be called on `RepInterp<&[u8; 2]>` due to unsatisfied trait bounds | ::: /git/quote/src/runtime.rs:158:1 | 158 | pub struct RepInterp(pub T); | ----------------------- doesn't satisfy 5 bounds | note: there's an earlier shadowed binding `array_of_array` of type `[[u8; 2]; 2]` that has method `quote_into_iter` available --> tests/test.rs:109:9 | 109 | let array_of_array: [[u8; 2]; 2] = [[0; 2]; 2]; | ^^^^^^^^^^^^^^ `array_of_array` of type `[[u8; 2]; 2]` that has method `quote_into_iter` defined earlier here 110 | let _ = quote!(#(#(#array_of_array)*)*); | ------------------------------- earlier `array_of_array` shadowed here with type `RepInterp<&[u8; 2]>` = note: the following trait bounds were not satisfied: `RepInterp<&[u8; 2]>: Iterator` which is required by `RepInterp<&[u8; 2]>: ext::RepIteratorExt` `&RepInterp<&[u8; 2]>: Iterator` which is required by `&RepInterp<&[u8; 2]>: ext::RepIteratorExt` `RepInterp<&[u8; 2]>: quote::ToTokens` which is required by `RepInterp<&[u8; 2]>: ext::RepToTokensExt` `&[u8; 2]: ext::RepAsIteratorExt<'_>` which is required by `RepInterp<&[u8; 2]>: ext::RepAsIteratorExt<'_>` `&mut RepInterp<&[u8; 2]>: Iterator` which is required by `&mut RepInterp<&[u8; 2]>: ext::RepIteratorExt` = note: this error originates in the macro `$crate::quote_bind_into_iter` which comes from the expansion of the macro `quote` (in Nightly builds, run with -Z macro-backtrace for more info) --- tests/test.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/test.rs b/tests/test.rs index 6ff1402..bf4fb88 100644 --- a/tests/test.rs +++ b/tests/test.rs @@ -105,6 +105,9 @@ fn test_array() { let ref_slice: &[X] = &[X, X]; let _ = quote!(#(#ref_slice #ref_slice)*); + + let array_of_array: [[u8; 2]; 2] = [[0; 2]; 2]; + let _ = quote!(#(#(#array_of_array)*)*); } #[test]