Skip to content

Commit fbc3742

Browse files
committed
Fix #[derive(GcDerserialize)] for NullTrace enums
1 parent 64b8f99 commit fbc3742

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

libs/derive/src/derive.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -437,9 +437,9 @@ impl TraceDeriveInput {
437437
generics, TraceDeriveKind::Deserialize, gc_lifetime,
438438
&mut |kind, initial, id, gc_lt| {
439439
assert!(matches!(kind, TraceDeriveKind::Deserialize));
440-
let id_is_generic = self.generics.original.type_params()
441-
.any(|param| id.is_ident(&param.ident));
442440
let mut generics = initial.unwrap();
441+
let id_is_generic = generics.type_params()
442+
.any(|param| id.is_ident(&param.ident));
443443
generics.params.push(parse_quote!('deserialize));
444444
let requirement = quote!(for<'deser2> zerogc::serde::GcDeserialize::<#gc_lt, 'deser2, #id>);
445445
for target in self.generics.regular_type_params() {

libs/derive/tests/deserialize.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use zerogc_derive::{GcDeserialize, Trace};
1+
use zerogc_derive::{GcDeserialize, NullTrace, Trace};
22

33
use zerogc::SimpleAllocCollectorId;
44
use zerogc::prelude::*;
@@ -14,4 +14,9 @@ struct BasicDeserialize<'gc> {
1414
#[zerogc(collector_ids(Id))]
1515
struct DeserializeParameterized<'gc, T: GcSafe<'gc, Id>, Id: SimpleAllocCollectorId> {
1616
test: Gc<'gc, Vec<T>, Id>
17+
}
18+
19+
#[derive(NullTrace, GcDeserialize)]
20+
enum PlainEnum {
21+
1722
}

0 commit comments

Comments
 (0)