@@ -109,8 +109,8 @@ pub(crate) fn query_group(args: TokenStream, input: TokenStream) -> TokenStream
109
109
110
110
// Extract keys.
111
111
let mut iter = method. sig . inputs . iter ( ) ;
112
- match iter. next ( ) {
113
- Some ( FnArg :: Receiver ( sr) ) if sr. mutability . is_none ( ) => ( ) ,
112
+ let self_receiver = match iter. next ( ) {
113
+ Some ( FnArg :: Receiver ( sr) ) if sr. mutability . is_none ( ) => sr ,
114
114
_ => {
115
115
return Error :: new (
116
116
sig_span,
@@ -119,7 +119,7 @@ pub(crate) fn query_group(args: TokenStream, input: TokenStream) -> TokenStream
119
119
. to_compile_error ( )
120
120
. into ( ) ;
121
121
}
122
- }
122
+ } ;
123
123
let mut keys: Vec < ( Ident , Type ) > = vec ! [ ] ;
124
124
for ( idx, arg) in iter. enumerate ( ) {
125
125
match arg {
@@ -176,6 +176,7 @@ pub(crate) fn query_group(args: TokenStream, input: TokenStream) -> TokenStream
176
176
query_type : lookup_query_type,
177
177
query_name : format ! ( "{}" , lookup_fn_name) ,
178
178
fn_name : lookup_fn_name,
179
+ receiver : self_receiver. clone ( ) ,
179
180
attrs : vec ! [ ] , // FIXME -- some automatically generated docs on this method?
180
181
storage : QueryStorage :: InternedLookup {
181
182
intern_query_type : query_type. clone ( ) ,
@@ -193,6 +194,7 @@ pub(crate) fn query_group(args: TokenStream, input: TokenStream) -> TokenStream
193
194
query_type,
194
195
query_name,
195
196
fn_name : method. sig . ident ,
197
+ receiver : self_receiver. clone ( ) ,
196
198
attrs,
197
199
storage,
198
200
keys,
@@ -218,10 +220,11 @@ pub(crate) fn query_group(args: TokenStream, input: TokenStream) -> TokenStream
218
220
let fn_name = & query. fn_name ;
219
221
let qt = & query. query_type ;
220
222
let attrs = & query. attrs ;
223
+ let self_receiver = & query. receiver ;
221
224
222
225
query_fn_declarations. extend ( quote ! {
223
226
#( #attrs) *
224
- fn #fn_name( & self , #( #key_names: #keys) , * ) -> #value;
227
+ fn #fn_name( #self_receiver , #( #key_names: #keys) , * ) -> #value;
225
228
} ) ;
226
229
227
230
// Special case: transparent queries don't create actual storage,
@@ -277,7 +280,7 @@ pub(crate) fn query_group(args: TokenStream, input: TokenStream) -> TokenStream
277
280
specific durability instead of the default of
278
281
`Durability::LOW`. You can use `Durability::MAX`
279
282
to promise that its value will never change again.
280
-
283
+
281
284
See `{fn_name}` for details.
282
285
283
286
*Note:* Setting values will trigger cancellation
@@ -720,6 +723,7 @@ fn filter_attrs(attrs: Vec<Attribute>) -> (Vec<Attribute>, Vec<SalsaAttr>) {
720
723
#[ derive( Debug ) ]
721
724
struct Query {
722
725
fn_name : Ident ,
726
+ receiver : syn:: Receiver ,
723
727
query_name : String ,
724
728
attrs : Vec < syn:: Attribute > ,
725
729
query_type : Ident ,
0 commit comments