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, nil

View on GitHub (pinned to 88a6234ea2)

Solutions

  1. Examine the statement shown in the wrapped error and fix its grammar (bad quotes, bad index, or truncated assignment)
  2. 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.