@@ -2,6 +2,7 @@ extern crate proc_macro;
22
33use proc_macro:: TokenStream ;
44
5+ use proc_macro2:: Span as Span2 ;
56use syn:: { parse_macro_input, ItemFn } ;
67
78use quote:: quote;
@@ -26,7 +27,7 @@ pub fn test_case(args: TokenStream, input: TokenStream) -> TokenStream {
2627 let test_case = parse_macro_input ! ( args as TestCase ) ;
2728 let mut item = parse_macro_input ! ( input as ItemFn ) ;
2829
29- let mut test_cases = vec ! [ test_case] ;
30+ let mut test_cases = vec ! [ ( test_case, Span2 :: call_site ( ) ) ] ;
3031 let mut attrs_to_remove = vec ! [ ] ;
3132 let legal_test_case_names = [
3233 parse_quote ! ( test_case) ,
@@ -48,7 +49,7 @@ pub fn test_case(args: TokenStream, input: TokenStream) -> TokenStream {
4849 . into ( )
4950 }
5051 } ;
51- test_cases. push ( test_case) ;
52+ test_cases. push ( ( test_case, attr . span ( ) ) ) ;
5253 attrs_to_remove. push ( idx) ;
5354 }
5455 }
@@ -61,11 +62,11 @@ pub fn test_case(args: TokenStream, input: TokenStream) -> TokenStream {
6162}
6263
6364#[ allow( unused_mut) ]
64- fn render_test_cases ( test_cases : & [ TestCase ] , mut item : ItemFn ) -> TokenStream {
65+ fn render_test_cases ( test_cases : & [ ( TestCase , Span2 ) ] , mut item : ItemFn ) -> TokenStream {
6566 let mut rendered_test_cases = vec ! [ ] ;
6667
67- for test_case in test_cases {
68- rendered_test_cases. push ( test_case. render ( item. clone ( ) ) ) ;
68+ for ( test_case, span ) in test_cases {
69+ rendered_test_cases. push ( test_case. render ( item. clone ( ) , * span ) ) ;
6970 }
7071
7172 let mod_name = item. sig . ident . clone ( ) ;
0 commit comments