mirror of
https://github.com/ModernRelay/omnigraph.git
synced 2026-07-06 02:52:11 +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;
|
let mut loaded_from_file = false;
|
||||||
|
|
||||||
for LoadedLayer { layer, config } in layers {
|
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 {
|
let OmnigraphConfig {
|
||||||
version: layer_version,
|
version: layer_version,
|
||||||
defaults,
|
defaults,
|
||||||
|
|
@ -50,10 +56,9 @@ pub fn merge_layers(layers: Vec<LoadedLayer>) -> (OmnigraphConfig, Provenance) {
|
||||||
queries,
|
queries,
|
||||||
base_dir: layer_base_dir,
|
base_dir: layer_base_dir,
|
||||||
loaded_from_file: layer_loaded,
|
loaded_from_file: layer_loaded,
|
||||||
// Ignored: `project` (no consumer) and `server` (folded into `serve`
|
project: _,
|
||||||
// at load) are empty here; `legacy_keys` drives per-layer warnings the
|
server: _,
|
||||||
// caller emits before merge.
|
legacy_keys: _,
|
||||||
..
|
|
||||||
} = config;
|
} = config;
|
||||||
|
|
||||||
if layer_version.is_some() {
|
if layer_version.is_some() {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue