Skip to content

Commit a3e51d0

Browse files
author
Nathaniel Ringo
committed
Fixes really incorrect tuple impls.
1 parent 2303cba commit a3e51d0

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

gc/src/trace.rs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ macro_rules! simple_empty_finalize_trace {
113113
}
114114
}
115115

116-
simple_empty_finalize_trace![isize, usize, bool, i8, u8, i16, u16, i32, u32, i64, u64, f32, f64, char, String, Path, PathBuf];
116+
simple_empty_finalize_trace![(), isize, usize, bool, i8, u8, i16, u16, i32, u32, i64, u64, f32, f64, char, String, Path, PathBuf];
117117

118118
macro_rules! fn_finalize_trace_one {
119119
($ty:ty $(,$args:ident)*) => {
@@ -139,9 +139,18 @@ macro_rules! fn_finalize_trace_group {
139139
}
140140

141141
macro_rules! tuple_finalize_trace {
142+
() => {};
142143
($($args:ident),*) => {
143144
impl<$($args),*> Finalize for ($($args,)*) {}
144-
unsafe impl<$($args),*> Trace for ($($args,)*) { unsafe_empty_trace!(); }
145+
unsafe impl<$($args: $crate::Trace),*> Trace for ($($args,)*) {
146+
custom_trace!(this, {
147+
#[allow(non_snake_case, unused_unsafe)]
148+
fn avoid_lints<$($args: $crate::Trace),*>(&($(ref $args,)*): &($($args,)*)) {
149+
unsafe { $(mark($args);)* }
150+
}
151+
avoid_lints(this)
152+
});
153+
}
145154
}
146155
}
147156

0 commit comments

Comments
 (0)