Skip to content

[Bug]: dead_code/unused_imports warnings for unix-only CLI dispatch and daemon symbols on Windows builds #2579

Description

@1688mengdie

Three Windows cargo check warnings in the CLI crate point at symbols whose only production consumers are already unix-only, while the symbols themselves are compiled unconditionally.

Symptom

  • src/apps/cli/src/dispatch/runner.rs:2unused_imports: std::time::Duration is consumed only inside #[cfg(unix)] code paths (the unix process-group wait in wait_for_process_group_exit and a unix-only test case), so on Windows the import dangles.
  • src/apps/cli/src/dispatch/runner.rs:337dead_code: arguments_match_action is called from the target_os = "linux" and target_os = "macos" service paths (both of which imply unix) and from the platform-agnostic unit tests, but never on Windows.
  • src/apps/cli/src/daemon/service.rs:88dead_code: run_command is only called from the macOS launchd and the systemd service management paths, all of which are unix-only.

Root cause

The definitions are unconditional while every consumer is gated behind unix cfgs, so Windows builds carry symbols with no reachable caller.

Proposed fix

Mirror the real consumer surfaces with precise cfg gates: #[cfg(unix)] on the import and on run_command, and #[cfg(any(unix, test))] on arguments_match_action so the platform-agnostic unit tests keep compiling on every platform. No behavior changes, no test removals, no assertions weakened; Linux and macOS builds keep every symbol exactly as before.

Verification

  • cargo check --locked -p bitfun-cli on Windows: 0 errors, and the three warnings no longer appear.
  • cargo test --locked -p bitfun-cli dispatch::runner: 7 passed, 0 failed (the cfg(any(unix, test)) gate keeps the runner tests compiling on Windows).
  • The unix-side compilation surface is confirmed by the repository CI platform matrix (ubuntu/macos jobs).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions