mirror of
https://github.com/ModernRelay/omnigraph.git
synced 2026-06-09 01:35:18 +02:00
refactor(config): drop merge_layers .. so new fields can't be silently unmerged
merge_layers destructured OmnigraphConfig with a `..` rest-pattern, so a config field added later would be silently dropped from the cross-layer fold (a drift trap). Bind every field explicitly (intentionally-ignored ones as `_`) so a new field fails to compile here until it is dispositioned — the compiler is the guard.
This commit is contained in:
parent
1a6371d015
commit
938248dfcf
1 changed files with 9 additions and 4 deletions
|
|
@ -37,6 +37,12 @@ pub fn merge_layers(layers: Vec<LoadedLayer>) -> (OmnigraphConfig, Provenance) {
|
|||
let mut loaded_from_file = false;
|
||||
|
||||
for LoadedLayer { layer, config } in layers {
|
||||
// No `..` rest-pattern: every field is bound explicitly so a config field
|
||||
// added later FAILS TO COMPILE here until it is dispositioned (merged or
|
||||
// deliberately ignored). The compiler is the drift-guard. The `_`-bound
|
||||
// fields are intentionally not merged: `project` has no consumer; `server`
|
||||
// is folded into `serve` at load (empty here); `legacy_keys` drives the
|
||||
// per-layer warnings the caller emits before merge.
|
||||
let OmnigraphConfig {
|
||||
version: layer_version,
|
||||
defaults,
|
||||
|
|
@ -50,10 +56,9 @@ pub fn merge_layers(layers: Vec<LoadedLayer>) -> (OmnigraphConfig, Provenance) {
|
|||
queries,
|
||||
base_dir: layer_base_dir,
|
||||
loaded_from_file: layer_loaded,
|
||||
// Ignored: `project` (no consumer) and `server` (folded into `serve`
|
||||
// at load) are empty here; `legacy_keys` drives per-layer warnings the
|
||||
// caller emits before merge.
|
||||
..
|
||||
project: _,
|
||||
server: _,
|
||||
legacy_keys: _,
|
||||
} = config;
|
||||
|
||||
if layer_version.is_some() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue