]> git.proxmox.com Git - rustc.git/blobdiff - src/stdarch/crates/simd-test-macro/src/lib.rs
New upstream version 1.45.0+dfsg1
[rustc.git] / src / stdarch / crates / simd-test-macro / src / lib.rs
index 4d1170cc7e9208c0460ad92f3ccca459c7cee6e8..6df48b1e6a51083ca2e502cd6f2a6599351ca245 100644 (file)
@@ -8,7 +8,7 @@ extern crate proc_macro2;
 #[macro_use]
 extern crate quote;
 
-use proc_macro2::{Ident, Literal, Span, TokenStream, TokenTree};
+use proc_macro2::{Delimiter, Ident, Literal, Span, TokenStream, TokenTree};
 use quote::ToTokens;
 use std::env;
 
@@ -146,8 +146,18 @@ fn find_name(item: TokenStream) -> Ident {
         }
     }
 
-    match tokens.next() {
-        Some(TokenTree::Ident(word)) => word,
-        _ => panic!("failed to find function name"),
+    fn get_ident(tt: TokenTree) -> Option<Ident> {
+        match tt {
+            TokenTree::Ident(i) => Some(i),
+            TokenTree::Group(g) if g.delimiter() == Delimiter::None => {
+                get_ident(g.stream().into_iter().next()?)
+            }
+            _ => None,
+        }
     }
+
+    tokens
+        .next()
+        .and_then(get_ident)
+        .expect("failed to find function name")
 }