tomnomnom/gron · error
ungron failed for `%s`
Error message
ungron failed for `%s`
What it means
statements.toInterface wraps a fatal (non-recoverable) error returned by ungronTokens for a specific statement, aborting the whole conversion. Only errRecoverable errors are skipped; anything else — invalid quoted/integer keys, unexpected tokens, etc. — triggers this wrap identifying the offending statement text.
Source
Thrown at statements.go:288
}
return s, nil
}
// ungron turns statements into a proper datastructure
func (ss statements) toInterface() (interface{}, error) {
// Get all the individually parsed statements
var parsed []interface{}
for _, s := range ss {
u, err := ungronTokens(s)
switch err.(type) {
case nil:
// no problem :)
case errRecoverable:
continue
default:
return nil, errors.Wrapf(err, "ungron failed for `%s`", s)
}
parsed = append(parsed, u)
}
if len(parsed) == 0 {
return nil, fmt.Errorf("no statements were parsed")
}
merged := parsed[0]
for _, p := range parsed[1:] {
m, err := recursiveMerge(merged, p)
if err != nil {
return nil, errors.Wrap(err, "failed to merge statements")
}
merged = m
}
return merged, nilView on GitHub (pinned to 88a6234ea2)
Solutions
- Examine the statement shown in the wrapped error and fix its grammar (bad quotes, bad index, or truncated assignment)
- Compare against valid Gron statement syntax: key path = value;
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at statements.go:288 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of tomnomnom/gron@88a6234ea2 (2026-09-06).
Data as JSON: /api/errors/38b4e5f708d29182.
Report an issue: GitHub.