v0.5.0 Unmapped reads any parsed value, UnknownKeys refuses what it names, decode errors name the key path
Test / test (push) Canceled after 0s
Test / test (push) Canceled after 0s
* Unmapped reads any parsed value; decode errors name the key path Unmapped(data, v) names the keys of a value Parse produced that no field of v's type takes, a table inside a document included, so a caller holding a tree (after macro expansion, say) can refuse them as a Document's caller does; Document.Unmapped calls it. A decode error names where it failed by the key path the document spells, rooms[1].width or by_key."a b".width, rather than by Go type and field names and "index n" / "map key" segments; a key that cannot be bare, or runs past 32 bytes, is quoted and cut as parse errors quote one. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Rsnp29663hDvPHPua37MhN * UnknownKeys, the error naming the keys a caller refuses A caller that refuses what Unmapped names returns UnknownKeys(keys), "unknown key \"a\"" or "unknown keys \"a\", \"b.c\"", so every refusal words them alike. vif's settings already format their own; its FSM dialect would be the second copy. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Rsnp29663hDvPHPua37MhN --------- Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
1 parent
170e71f10a
commit
5c0a1c757a
5 files changed
+80
-16
No files matched your search
@@ -195,6 +195,7 @@ func TestDocumentRefusesAnEditItCannotPlace(t *testing.T) {
|
||||
// TestUnmappedNamesWhatDecodeIgnores: keys no field takes, by tag or field name,
|
||||
// unexported and "-" fields included, are named once each, under arrays of tables
|
||||
// without their index; a map or interface destination takes every key under it.
|
||||
// A parsed tree is read as its document is, and UnknownKeys quotes each.
|
||||
func TestUnmappedNamesWhatDecodeIgnores(t *testing.T) {
|
||||
doc := `top = 1
|
||||
skip = 2
|
||||
@@ -248,6 +249,12 @@ nope = 1
|
||||
if !slices.Equal(got, want) {
|
||||
t.Fatalf("unmapped %q, want %q", got, want)
|
||||
}
|
||||
if tree := Unmapped(d.Tree(), &v); !slices.EqualFunc(tree, d.Unmapped(&v), slices.Equal) {
|
||||
t.Fatalf("the tree's unmapped %q differ from the document's", tree)
|
||||
}
|
||||
if err := UnknownKeys(d.Unmapped(&v)[:2]).Error(); err != `unknown keys "byname.one.nope", "hidden"` {
|
||||
t.Fatalf("error %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
// TestKeyStringQuotesWhatABareKeyCannotHold
|
||||
|
||||
Reference in new issue
Block a user