1414
1515use quote:: quote;
1616use syn:: {
17- parse_macro_input, punctuated:: Punctuated , spanned:: Spanned , Attribute , DeriveInput , Expr ,
18- ExprLit , FnArg , ItemFn , Lit , MetaNameValue , PatType , ReturnType , Signature , Type ,
17+ parse_macro_input, parse_quote, punctuated:: Punctuated , spanned:: Spanned , Attribute ,
18+ DeriveInput , Expr , ExprLit , FnArg , ItemFn , Lit , MetaNameValue , PatType , ReturnType , Signature ,
19+ Type ,
1920} ;
2021
2122/// Marks a test to be run by the Google Rust test runner.
@@ -75,7 +76,7 @@ pub fn gtest(
7576 _args : proc_macro:: TokenStream ,
7677 input : proc_macro:: TokenStream ,
7778) -> proc_macro:: TokenStream {
78- let ItemFn { attrs, sig, block, .. } = parse_macro_input ! ( input as ItemFn ) ;
79+ let ItemFn { mut attrs, sig, block, .. } = parse_macro_input ! ( input as ItemFn ) ;
7980 let test_case_hash: u64 = {
8081 use std:: collections:: hash_map:: DefaultHasher ;
8182 use std:: hash:: { Hash , Hasher } ;
@@ -185,6 +186,12 @@ pub fn gtest(
185186 )
186187 }
187188 } ;
189+ if !attrs. iter ( ) . any ( is_test_attribute) && !is_rstest_enabled {
190+ let test_attr: Attribute = parse_quote ! {
191+ #[ :: core:: prelude:: v1:: test]
192+ } ;
193+ attrs. push ( test_attr) ;
194+ } ;
188195 let function = quote ! {
189196 #( #attrs) *
190197 #outer_sig -> #outer_return_type {
@@ -200,17 +207,7 @@ pub fn gtest(
200207 #trailer
201208 }
202209 } ;
203-
204- let output = if attrs. iter ( ) . any ( is_test_attribute) || is_rstest_enabled {
205- function
206- } else {
207- quote ! {
208- #[ :: core:: prelude:: v1:: test]
209- #function
210- }
211- } ;
212-
213- output. into ( )
210+ function. into ( )
214211}
215212
216213/// Extract the optional "expected" string literal from a `should_panic`
0 commit comments