design-md-consolidation 3.1: remove 2 Rust code blocks from Decision 10 (Type::Fn + Suppress) — schema lives in §Data-model

This commit is contained in:
2026-05-10 12:43:49 +02:00
parent 500aafb307
commit a100389c2f
+8 -25
View File
@@ -1022,21 +1022,9 @@ The form-A surface for fn signatures gains mode wrappers:
```
Internally, this is *not* a new `Type` variant. Modes are
metadata on `Type::Fn`:
```rust
Type::Fn {
params: Vec<Type>,
param_modes: Vec<ParamMode>, // same length as params
ret: Box<Type>,
ret_mode: ParamMode,
effects: Vec<String>,
}
enum ParamMode { Implicit, Own, Borrow } // default: Implicit
```
The substantive reasons for per-position metadata over a
metadata on `Type::Fn` — `paramModes` and `retMode` fields run
parallel to `params` and `ret` (see §"Data model" for the JSON
schema). The substantive reasons for per-position metadata over a
`Type::Borrow` / `Type::Own` variant approach:
- **Semantic locality.** Modes are properties of fn-signature
@@ -1127,16 +1115,11 @@ All four are skipped during serialisation when absent / false /
None so canonical-JSON hashes of every fixture remain stable
until the fixture intentionally adopts the feature.
**`FnDef.suppress`.**
```rust
FnDef.suppress: Vec<Suppress> ; advisory diagnostic suppress list
struct Suppress {
code: String, // diagnostic code being suppressed
because: String, // mandatory non-empty reason
}
```
**`FnDef.suppress`.** The `suppress` field on `FnDef` carries a
list of advisory-diagnostic suppress entries; each entry has a
`code` (the diagnostic being suppressed) and a `because` (a
mandatory non-empty reason). See §"Data model" for the canonical
schema.
Form-A surface: `(suppress (code "...") (because "..."))` clause
between fn name and `(type ...)`. Multiple clauses allowed; one