You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Follow-up from the comprehensive review of PR #239 (LSP server). Line numbers reference the PR branch at review time.
Severity: minor — architectural debt in the IDE stack, fine for v1 but worth tracking.
The IDE/LSP stack transitively links the WASM/Rocq backend (ide/ide-db/Cargo.toml): ide-db depends on the full inference orchestration crate to reach the shared project front end, which also pulls inference-wasm-codegen, inference-wasm-to-v-translator, inference-wasm-linker and inf-wasmparser into a stack that only parses and type-checks. Build-time and binary-size cost for every LSP build; rust-analyzer deliberately keeps its front end a leaf. Direction: extract the project front end (project.rs walk + FileLoader seam) into a leaf crate (e.g. core/project-model) that both inference and ide-db depend on.
Memoized queries read through &mut self (ide/ide/src/lib.rs:91): Analysis { db: &'a mut RootDatabase } because analyses are computed-and-memoized on read. Fine for the single-threaded loop, but it forecloses request cancellation and parallel reads without a RootDatabase rewrite, and only the single-threading is documented — not this constraint. This is the on-ramp for Adopt Salsa #157 (Adopt Salsa); until then, document the constraint on RootDatabase.
ResilientProjectParse exposes a public warnings field documented "Always empty" (core/inference/src/project.rs:177) — an API wart; drop it or populate it.
serde_json declared per-crate instead of via [workspace.dependencies] (apps/lsp/Cargo.toml:17) — third un-inherited spec in the workspace.
ide/ide/src/syntax.rs duplicates ide-db's private children_of descent — expose it from ide-db instead (noted at ship time, never filed).
Trivial: duplicated 5-line comment block in load_project_resilient (core/inference/src/project.rs:306-315).
Follow-up from the comprehensive review of PR #239 (LSP server). Line numbers reference the PR branch at review time.
Severity: minor — architectural debt in the IDE stack, fine for v1 but worth tracking.
ide/ide-db/Cargo.toml): ide-db depends on the fullinferenceorchestration crate to reach the shared project front end, which also pullsinference-wasm-codegen,inference-wasm-to-v-translator,inference-wasm-linkerandinf-wasmparserinto a stack that only parses and type-checks. Build-time and binary-size cost for every LSP build; rust-analyzer deliberately keeps its front end a leaf. Direction: extract the project front end (project.rswalk + FileLoader seam) into a leaf crate (e.g.core/project-model) that bothinferenceandide-dbdepend on.&mut self(ide/ide/src/lib.rs:91):Analysis { db: &'a mut RootDatabase }because analyses are computed-and-memoized on read. Fine for the single-threaded loop, but it forecloses request cancellation and parallel reads without a RootDatabase rewrite, and only the single-threading is documented — not this constraint. This is the on-ramp for AdoptSalsa#157 (Adopt Salsa); until then, document the constraint on RootDatabase.ResilientProjectParseexposes a publicwarningsfield documented "Always empty" (core/inference/src/project.rs:177) — an API wart; drop it or populate it.serde_jsondeclared per-crate instead of via[workspace.dependencies](apps/lsp/Cargo.toml:17) — third un-inherited spec in the workspace.ide/ide/src/syntax.rsduplicates ide-db's privatechildren_ofdescent — expose it from ide-db instead (noted at ship time, never filed).load_project_resilient(core/inference/src/project.rs:306-315).