[agent/codex:gpt-5.4-mini] Read ~/spec/code/core/go/i18n/RFC.md fully. Find features de... #190

Merged
Virgil merged 1 commit from agent/read---spec-code-core-go-i18n-rfc-md-ful into dev 2026-04-02 09:48:28 +00:00
2 changed files with 37 additions and 2 deletions

View file

@ -328,10 +328,11 @@ func loadGrammarNumber(fullKey string, v map[string]any, grammar *GrammarData) b
}
func isVerbFormObject(m map[string]any) bool {
_, hasBase := m["base"]
_, hasPast := m["past"]
_, hasGerund := m["gerund"]
return (hasBase || hasPast || hasGerund) && !isPluralObject(m)
// Verb objects are identified by their inflected forms. A bare "base"
// field is metadata, not enough to claim the object is a verb table.
return (hasPast || hasGerund) && !isPluralObject(m)
}
func isNounFormObject(m map[string]any) bool {

View file

@ -328,6 +328,40 @@ func TestFlattenWithGrammar(t *testing.T) {
}
}
func TestFlattenWithGrammar_DetectsSchemaObjectsOutsideGrammarPaths(t *testing.T) {
messages := make(map[string]Message)
grammar := &GrammarData{
Verbs: make(map[string]VerbForms),
Words: make(map[string]string),
}
raw := map[string]any{
"lexicon": map[string]any{
"base_only": map[string]any{
"base": "base",
},
},
"phrases": map[string]any{
"draft": map[string]any{
"past": "drafted",
"gerund": "drafting",
},
},
}
flattenWithGrammar("", raw, messages, grammar)
if _, ok := grammar.Verbs["draft"]; !ok {
t.Fatal("verb schema object outside gram.verb.* was not extracted")
}
if _, ok := messages["phrases.draft"]; ok {
t.Fatal("verb schema object should not be flattened into messages")
}
if _, ok := grammar.Verbs["base_only"]; ok {
t.Fatal("base-only object should not be detected as a verb table")
}
}
func TestMergeGrammarData(t *testing.T) {
const lang = "zz"
original := GetGrammarData(lang)