From 7195c3b77c3b8399a1d23a80cea2f4d540f82706 Mon Sep 17 00:00:00 2001
From: Anders Kaseorg <andersk@mit.edu>
Date: Wed, 17 Jul 2024 11:30:36 -0700
Subject: [PATCH] Fix dead code warnings in tests

Signed-off-by: Anders Kaseorg <andersk@mit.edu>
---
 gc/tests/finalize.rs     |  2 +-
 gc/tests/from_box.rs     |  7 ++++++-
 gc/tests/gc_semantics.rs |  2 +-
 gc/tests/ignore_trace.rs |  2 +-
 gc/tests/trace_impl.rs   | 20 +++++++++++++++-----
 5 files changed, 24 insertions(+), 9 deletions(-)

diff --git a/gc/tests/finalize.rs b/gc/tests/finalize.rs
index 7df3e16..f717f84 100644
--- a/gc/tests/finalize.rs
+++ b/gc/tests/finalize.rs
@@ -41,7 +41,7 @@ struct X(Box<dyn Trace>);
 fn drop_triggers_finalize() {
     FLAGS.with(|f| assert_eq!(f.get(), Flags(0, 0)));
     {
-        let _x = A { b: B };
+        let _x = X(Box::new(A { b: B }));
         FLAGS.with(|f| assert_eq!(f.get(), Flags(0, 0)));
     }
     FLAGS.with(|f| assert_eq!(f.get(), Flags(1, 1)));
diff --git a/gc/tests/from_box.rs b/gc/tests/from_box.rs
index 567b7b5..51787e9 100644
--- a/gc/tests/from_box.rs
+++ b/gc/tests/from_box.rs
@@ -1,9 +1,14 @@
-use gc::{Finalize, Gc, Trace};
+use gc::Gc;
+#[cfg(feature = "nightly")]
+use gc::{Finalize, Trace};
 
+#[cfg(feature = "nightly")]
 trait Foo: Trace {}
 
+#[cfg(feature = "nightly")]
 #[derive(Trace, Finalize)]
 struct Bar;
+#[cfg(feature = "nightly")]
 impl Foo for Bar {}
 
 #[test]
diff --git a/gc/tests/gc_semantics.rs b/gc/tests/gc_semantics.rs
index 3934d38..959dbf7 100644
--- a/gc/tests/gc_semantics.rs
+++ b/gc/tests/gc_semantics.rs
@@ -303,7 +303,7 @@ fn as_ptr() {
     let a_ptr = Gc::as_ptr(&a);
     assert_eq!(a_ptr, Gc::as_ptr(&aa));
 
-    let b =  Gc::new(B(a.clone()));
+    let b = Gc::new(B(a.clone()));
     assert_eq!(a_ptr, Gc::as_ptr(&b.0));
     let bb = Gc::new(B(a.clone()));
     assert_eq!(a_ptr, Gc::as_ptr(&bb.0));
diff --git a/gc/tests/ignore_trace.rs b/gc/tests/ignore_trace.rs
index 5fe0e69..5b0d718 100644
--- a/gc/tests/ignore_trace.rs
+++ b/gc/tests/ignore_trace.rs
@@ -7,6 +7,6 @@ struct S(#[unsafe_ignore_trace] Gc<()>);
 /// cycles through that `Gc`, but it should not result in panics.
 #[test]
 fn ignore_trace_gc() {
-    Gc::new(S(Gc::new(())));
+    *Gc::new(S(Gc::new(()))).0;
     force_collect();
 }
diff --git a/gc/tests/trace_impl.rs b/gc/tests/trace_impl.rs
index ee6bdc7..a831c2b 100644
--- a/gc/tests/trace_impl.rs
+++ b/gc/tests/trace_impl.rs
@@ -34,11 +34,6 @@ struct InnerBoxStr {
     inner: Box<str>,
 }
 
-#[derive(Trace, Clone, Finalize)]
-struct InnerRcSlice {
-    inner: Box<[u32]>,
-}
-
 #[derive(Trace, Clone, Finalize)]
 struct InnerRcStr {
     inner: Rc<str>,
@@ -52,6 +47,21 @@ struct Baz {
 
 #[test]
 fn test() {
+    unsafe {
+        InnerBoxSlice {
+            inner: Box::new([1, 2, 3]),
+        }
+        .trace();
+        InnerBoxStr {
+            inner: "abc".into(),
+        }
+        .trace();
+        InnerRcStr {
+            inner: "abc".into(),
+        }
+        .trace();
+    }
+
     let bar = Bar { inner: Foo };
     unsafe {
         bar.trace();