diff options
Diffstat (limited to 'src/test/ui/suggestions/auxiliary/issue-61963-1.rs')
| -rw-r--r-- | src/test/ui/suggestions/auxiliary/issue-61963-1.rs | 40 |
1 files changed, 0 insertions, 40 deletions
diff --git a/src/test/ui/suggestions/auxiliary/issue-61963-1.rs b/src/test/ui/suggestions/auxiliary/issue-61963-1.rs deleted file mode 100644 index 6c2df7e84e0..00000000000 --- a/src/test/ui/suggestions/auxiliary/issue-61963-1.rs +++ /dev/null @@ -1,40 +0,0 @@ -// force-host -// no-prefer-dynamic -#![crate_type = "proc-macro"] - -extern crate proc_macro; - -use proc_macro::{Group, TokenStream, TokenTree}; - -// This macro exists as part of a reproduction of #61963 but without using quote/syn/proc_macro2. - -#[proc_macro_derive(DomObject)] -pub fn expand_token_stream(input: TokenStream) -> TokenStream { - // Construct a dummy span - `#0 bytes(0..0)` - which is present in the input because - // of the specially crafted generated tokens in the `attribute-crate` proc-macro. - let dummy_span = input.clone().into_iter().nth(0).unwrap().span(); - - // Define what the macro would output if constructed properly from the source using syn/quote. - let output: TokenStream = "impl Bar for ((), Qux<Qux<Baz> >) { } - impl Bar for ((), Box<Bar>) { }".parse().unwrap(); - - let mut tokens: Vec<_> = output.into_iter().collect(); - // Adjust token spans to match the original crate (which would use `quote`). Some of the - // generated tokens point to the dummy span. - for token in tokens.iter_mut() { - if let TokenTree::Group(group) = token { - let mut tokens: Vec<_> = group.stream().into_iter().collect(); - for token in tokens.iter_mut().skip(2) { - token.set_span(dummy_span); - } - - let mut stream = TokenStream::new(); - stream.extend(tokens); - *group = Group::new(group.delimiter(), stream); - } - } - - let mut output = TokenStream::new(); - output.extend(tokens); - output -} |
