Serve a declared name's census default on an absent read

An absent read of a name the census declares now serves that name's own
default rather than its value type's, which is the rule for a declared
name. The census stages it exactly as it fills any absent field, as the
declared default's bytes, so the read reuses the census's own mechanism
instead of a second one; the compiler takes them when the name folds and
`set_layout` installs them beside the offset.

A name the census does not declare keeps the value type's default, which
is that case's own rule. One name carries one value type, checked when
the name folds, so the row's value type and width agree with the read's.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Dennis Kobert
2026-09-09 11:13:41 +00:00
parent 5eb80721dd
commit 6e22d6a412
11 changed files with 104 additions and 3 deletions

View File

@@ -392,6 +392,7 @@ impl ProtoNetwork {
lane_invariant,
named_writes: Vec::new(),
named_reads: Vec::new(),
named_read_defaults: Vec::new(),
layout,
}),
ConstructionArgs::Nodes(inputs) => node.resolved.layout_meta.as_ref().and_then(|meta| {