Fix Errors

作者 warpdotdev2a03b403b4f8無授權條款收錄於 2026年10月8日更新於 2026年10月8日

Fix compilation errors, linting issues, and test failures in the warp Rust codebase. Covers presubmit checks, WASM-specific errors, and running specific tests. Use when the user hits build errors, clippy or fmt failures, test failures, or needs to run or interpret presubmit before a PR.

AI 產生的概覽

指導修復 warp Rust 程式庫中的編譯、lint、格式化、WASM 與測試失敗。

功能
此技能提供在 warp Rust 程式庫中診斷並修復建置與測試失敗的說明,涵蓋編譯錯誤、clippy 警告、格式違規、WASM 特有錯誤以及測試失敗。它列出相關的 cargo、clippy、nextest、clang-format 和 presubmit 指令,並說明常見錯誤模式,例如未使用的匯入、型別不符、結構欄位變更、函式簽章變更、列舉變體變更和 trait 實作問題。它也說明如何為 WASM 建置將依賴檔案系統的程式碼與測試置於 local_fs 特性之後,並建議執行最小可用的指令,而不是反覆進行全工作區驗證。
適用情境
當開發者在 warp Rust 程式庫中遇到建置錯誤、clippy 或 fmt 失敗、測試失敗或 WASM 目標錯誤時使用。它也用於在提交 PR 之前執行或解讀 presubmit 檢查。
執行需求
需要 warp Rust 程式庫及其工具鏈:cargo、rustfmt、clippy、cargo nextest、wasm32-unknown-unknown 目標,以及倉庫指令碼如 ./script/presubmit、./script/format 和 ./script/run-clang-format.py。此技能本身不附帶指令碼,僅為說明文件。

fix-errors

Fix compilation errors, linting issues, and test failures in the warp Rust codebase.

Overview

This skill helps resolve common issues encountered during development, including:

  • Compilation errors (unused imports, type mismatches, etc.)
  • Linting failures (clippy warnings)
  • Formatting violations
  • WASM-specific errors
  • Test failures

Fix the reported failure with the narrowest useful command. Do not turn a targeted repair into repeated full-workspace validation.

Full Presubmit

Run the full presubmit only when the user, task, or approved spec explicitly requires it:

bash
./script/presubmit

This runs formatting checks, linting, and all tests. It is intentionally broader and more expensive than the default implementation workflow.

Individual Checks

Run checks separately when debugging specific issues:

Rust formatting:

bash
cargo fmt -- --check

Clippy (full workspace):

bash
cargo clippy --workspace --all-targets --tests -- -D warnings

WASM Clippy:

bash
cargo clippy --target wasm32-unknown-unknown --profile release-wasm-debug_assertions --no-deps

Objective-C/C/C++ formatting:

bash
./script/run-clang-format.py -r --extensions 'c,h,cpp,m' ./crates/warpui/src/ ./app/src/

All tests:

bash
cargo nextest run --no-fail-fast --workspace --exclude command-signatures-v2cargo nextest run -p warp_completer --features v2

Doc tests:

bash
cargo test --doc

Running Specific Tests

Single package:

bash
cargo nextest run -p <package_name>

Filter by test name:

bash
cargo nextest run -E 'test(<substring>)'

Specific package with filter:

bash
cargo nextest run -p <package_name> -E 'test(<substring>)'

With output (no capture):

bash
cargo nextest run -p <package> --nocapture

Common Error Types

Unused Imports

Remove unused use statements identified by the compiler.

Unused Constants

Remove constants that are defined but never used.

Unknown Imports

Add the correct use statement for undefined types. Search the codebase to find the correct module path.

Type Mismatches

Update function calls to pass arguments of the correct type. Common fixes:

  • Use .as_str() instead of .clone() when a &str is expected
  • Use &value when a reference is needed
  • Use .to_string() when String is expected but &str is provided

Struct Field Changes

When a struct adds/removes fields, update all places where it's constructed or destructured:

  • Struct initialization
  • Pattern matching (match, if let)
  • Destructuring assignments

Function Signature Changes

When a function adds a new parameter, update all call sites to provide the new argument:

  • For bool params: pass true or false based on context
  • For Option<T> params: pass None as default or Some(value) if needed

Enum Variant Changes

When adding a new enum variant, update exhaustive match statements:

  • Add a new match arm with appropriate handling
  • Mirror the implementation pattern of similar variants

Incorrect Trait Implementation

Fix trait implementations that return the wrong type or don't satisfy trait bounds.

WASM-Specific Errors

WASM builds (wasm32-unknown-unknown target) don't support filesystem operations. Code that uses filesystem APIs must be gated behind the local_fs feature flag.

Common WASM errors:

  • Dead code warnings for code only used in non-WASM builds
  • Unused code that's only relevant when local_fs is available
  • Tests that require filesystem access

Fixes:

Gate tests behind local_fs:

rust
#[test]#[cfg(feature = "local_fs")]fn test_find_git_repo_with_worktree() {    // Test that uses filesystem operations}

Conditionally allow dead code for types only used when local_fs is enabled:

rust
#[cfg_attr(not(feature = "local_fs"), allow(dead_code))]#[derive(Clone, EnumDiscriminants, Serialize)]pub enum ExampleType {    // Variants only used when local_fs is enabled    Variant1,    Variant2,    Variant3,}

WASM errors are discovered by running:

bash
cargo clippy --target wasm32-unknown-unknown --profile release-wasm-debug_assertions --no-deps

Best Practices

Before fixing:

  • Read the full error message to understand the root cause
  • Check if multiple errors are related (fixing one may resolve others)
  • For trait/type errors, verify you understand the expected vs actual types
  • For WASM errors, check if code needs to be gated behind local_fs

When fixing:

  • Fix one error type at a time when there are multiple issues
  • Run the smallest applicable cargo check when it helps resolve compiler errors; do not repeat broad checks without a relevant code change
  • For WASM errors, run WASM clippy to verify the fix
  • For complex changes, run relevant tests after fixing

After fixing:

  • Run the relevant cargo nextest tests and fix the code until they pass
  • Run the applicable Clippy invocation and fix its findings; return to affected tests only when a fix materially changes behavior
  • Run ./script/format once after all other code changes are complete
  • Do not rerun tests or Clippy after formatting, and do not add a full presubmit run, unless explicitly required
  • If you only fixed a formatting failure and made no behavioral code change, rerun only the formatter

來源與署名

來源:warpdotdev/common-skills位於.agents/skills/fix-errors提交2a03b40

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架