11use std:: sync:: atomic:: { AtomicUsize , Ordering } ;
22
33use proc_macro:: TokenStream ;
4- use proc_macro2:: { Span , TokenStream as TokenStream2 } ;
4+ use proc_macro2:: TokenStream as TokenStream2 ;
55use quote:: { format_ident, quote} ;
66use syn:: spanned:: Spanned ;
77use syn:: {
@@ -183,8 +183,9 @@ fn parse_lua_attr(attrs: &[Attribute]) -> syn::Result<LuaAttr> {
183183 }
184184 match & attr. meta {
185185 Meta :: List ( _) => {
186+ lua_attr. span = Some ( attr. span ( ) ) ;
186187 attr. parse_nested_meta ( |meta| lua_attr. parse_inner ( meta) ) ?;
187- validate_lua_attr ( & lua_attr, attr . span ( ) ) ?;
188+ validate_lua_attr ( & lua_attr) ?;
188189 }
189190 Meta :: Path ( _) => { }
190191 Meta :: NameValue ( _) => {
@@ -198,11 +199,11 @@ fn parse_lua_attr(attrs: &[Attribute]) -> syn::Result<LuaAttr> {
198199 Ok ( lua_attr)
199200}
200201
201- fn validate_lua_attr ( attr : & LuaAttr , span : Span ) -> syn:: Result < ( ) > {
202+ fn validate_lua_attr ( attr : & LuaAttr ) -> syn:: Result < ( ) > {
202203 for ( set, name) in [ ( attr. get , "get" ) , ( attr. set , "set" ) ] {
203204 if set {
204205 return Err ( syn:: Error :: new (
205- span,
206+ attr . span ( ) ,
206207 format ! ( "`{name}` is not valid for methods" ) ,
207208 ) ) ;
208209 }
@@ -250,8 +251,8 @@ pub fn userdata_impl(attr: TokenStream, item: TokenStream) -> TokenStream {
250251 continue ;
251252 }
252253 if lua_attr. getter || lua_attr. setter {
253- return syn:: Error :: new_spanned (
254- & const_item . ident ,
254+ return syn:: Error :: new (
255+ lua_attr . span ( ) ,
255256 "const items do not support `getter` or `setter`" ,
256257 )
257258 . to_compile_error ( )
@@ -285,15 +286,15 @@ pub fn userdata_impl(attr: TokenStream, item: TokenStream) -> TokenStream {
285286 let primary = [ lua_attr. getter , lua_attr. setter , lua_attr. field ] ;
286287 let primary_count = primary. iter ( ) . filter ( |& & x| x) . count ( ) ;
287288 if primary_count > 1 {
288- return syn:: Error :: new_spanned (
289- & method . sig ,
289+ return syn:: Error :: new (
290+ lua_attr . span ( ) ,
290291 "at most one of `getter`, `setter`, `field` can be specified" ,
291292 )
292293 . to_compile_error ( )
293294 . into ( ) ;
294295 }
295296 if lua_attr. meta && primary_count == 1 && !lua_attr. field {
296- return syn:: Error :: new_spanned ( & method . sig , "`meta` can only be combined with `field`" )
297+ return syn:: Error :: new ( lua_attr . span ( ) , "`meta` can only be combined with `field`" )
297298 . to_compile_error ( )
298299 . into ( ) ;
299300 }
0 commit comments