Skip to content

Warnings (product) fails on every PR since #7250 — two denied warnings in gc/barrier_arming #7277

Description

@proggeramlug

The Warnings (product) job in Tests builds with warnings denied. Since #7250 landed it fails on two warnings from the new gc/barrier_arming module, so every PR opened after that commit inherits a red Warnings (product) regardless of its content.

From the job log (Warnings (product), run 30762914997):

error: glob import doesn't reexport anything with visibility `pub(crate)`
       because no imported item is public enough
70 | pub(crate) use barrier_arming::*;
   = help: reduce the glob import's visibility or increase visibility of imported items

error: function `remembered_reconstruct_census` is never used
   --> crates/perry-runtime/src/gc/barrier_arming.rs:118:15

error: could not compile `perry-runtime` (lib) due to 2 previous errors

Both reproduce locally on a plain cargo build --profile perry-dev -p perry -p perry-runtime-static -p perry-stdlib-static (as a warning rather than an error, since that build does not deny).

Why it was not caught

main's last Tests run was c9cd73ba5 at 2026-08-02 07:41, and barrier_arming.rs landed in c7893c4ac at 2026-08-02 12:58 — about five hours later. git merge-base --is-ancestor c7893c4ac c9cd73ba5 is false, so no main run has ever compiled this module under the warnings gate. The most recent main Tests run showing Warnings (product): success predates the code entirely.

This is the "a gate can be unable to fail" family from CLAUDE.md, in its fourth form: the job is genuinely running and genuinely green on main, but its subject never reached it.

Fix sketch

  1. gc/mod.rs:70 — either give barrier_arming's intended exports pub(crate) visibility, or drop the pub(crate) use barrier_arming::*; glob if nothing is meant to be re-exported.
  2. gc/barrier_arming.rs:118remembered_reconstruct_census is dead. Either wire it into the diagnostic path it was written for, gate it behind the relevant cfg, or delete it. Given perf(gc): stop maintaining a remembered set nothing has read yet (#7187 Phase A) #7250's lazily-armed remembered set, a census helper that nothing calls is worth a second look before it is simply silenced — an #[allow(dead_code)] would hide the question rather than answer it.

Notes

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions