Skip to content

build(deps): bump dev.gaijin.team/go/exhaustruct/v5 from 5.0.3 to 5.2.0 - #6786

Open
dependabot[bot] wants to merge 2 commits into
mainfrom
dependabot/go_modules/dev.gaijin.team/go/exhaustruct/v5-5.2.0
Open

build(deps): bump dev.gaijin.team/go/exhaustruct/v5 from 5.0.3 to 5.2.0#6786
dependabot[bot] wants to merge 2 commits into
mainfrom
dependabot/go_modules/dev.gaijin.team/go/exhaustruct/v5-5.2.0

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Sep 4, 2026

Copy link
Copy Markdown
Contributor

Fixes #6780

Bumps dev.gaijin.team/go/exhaustruct/v5 from 5.0.3 to 5.2.0.

Release notes

Sourced from dev.gaijin.team/go/exhaustruct/v5's releases.

v5.2.0

A minor release adding one option. -allow-empty-blank-assignments exempts an empty struct literal the blank identifier receives, so a compile-time interface check such as var _ Iface = T{} is no longer asked to fill fields nothing reads. The option is off by default; with it off, nothing changes.

Added

  • -allow-empty-blank-assignments (#153). var _ Iface = T{} exists to prove that T implements Iface, and the analyzer required every field of a value that is discarded on the spot. The only allowance that reached the shape, -allow-empty-declarations, let every declared literal through with it. The new option keys on what receives the value: the blank identifier reads no field, so no field is required. It covers var _ Iface = T{}, var _ = T{} and _ = T{}, with &T{} and parentheses on either side, at package or function level.

    type Handler interface{ Serve() }
    type Server struct {
    Addr string
    Port int
    }
    func (Server) Serve() {}
    var _ Handler = Server{}       // OK
    var _ Handler = &Server{}      // OK
    var _, s = Server{}, Server{}  // Server is missing fields Addr, Port

    A value is matched to its name by position, so in the last line the literal bound to s is still reported. A literal nested in the value (_ = []Server{{}}), a converted one (_ = Handler(Server{})) and a partial one stay reported: the blank identifier receives the slice, the conversion result, or a value with fields already named.

    The programmatic name is Config.AllowEmptyBlankAssignments.

Upgrading

go install dev.gaijin.team/go/exhaustruct/v5/cmd/exhaustruct@latest

CLI users reinstall and add the flag where they want it. Existing configuration is unchanged and no finding moves until the option is turned on.

golangci-lint users need a matching allow-empty-blank-assignments key under exhaustruct_v5 settings before they can turn it on. That key lives in the golangci-lint repository and is not part of this release.

v5.1.0

A release for Go 1.27 code. Literals that name promoted fields no longer crash the analyzer or get reported as incomplete, -fix writes source that compiles and keeps every field's optionality, and a set of resolution gaps that predate Go 1.27 are closed. The module now requires Go 1.26.

Breaking changes

  • Go 1.26 or newer is required. x/tools v0.40.0 cannot read the export data Go 1.27 writes, so every run on that toolchain failed with internal error: package "sync/atomic" without types. The v0.49.0 release that reads it needs go1.25; the floor goes to 1.26, which golangci-lint v2.13 already requires for this analyzer. Consumers on Go 1.24 or 1.25 cannot build this version.

Fixes

  • makeslice: cap out of range on promoted keys (#168). Go 1.27 lets a composite literal name a promoted field in place of the embedded field carrying it (golang/go#77245). A literal naming more promoted fields than the struct has direct ones drove a capacity estimate negative and took golangci-lint down with it.

  • Complete literals reported as incomplete (#161). Every promoted key counted as a key the struct did not have, so A{b: "foo", a: 1, c: "f"} was reported as missing the embedded field it filled through. Promoted keys now resolve through the embedded field tree: a literal that names nothing under an embedded field is missing that field, one that fills it partly is missing the fields under it, each nameable from the same literal.

... (truncated)

Commits
  • 86742de [docs] describe the blank assignment allowance
  • 22246ce [analyzer] allow an empty literal the blank identifier receives
  • bfe250b [analyzer] cover a tag whose last value never closes
  • 08fe951 [analyzer] cover a no-core constraint embedded beside a struct term
  • c55756c [structure] drop the type origin nothing reads
  • 32b99ce [docs] describe comment forms, blank fields and type parameters
  • 1cc028a [directive] ask only the comment lines code can share
  • 12e9d08 [directive] resolve one line's directives by source order alone
  • 3dd5a00 [all] read every unadjusted position through one helper
  • 0a6943d [structure] cover one anonymous struct resolved from two packages
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [dev.gaijin.team/go/exhaustruct/v5](https://github.com/GaijinEntertainment/go-exhaustruct) from 5.0.3 to 5.2.0.
- [Release notes](https://github.com/GaijinEntertainment/go-exhaustruct/releases)
- [Commits](GaijinEntertainment/go-exhaustruct@v5.0.3...v5.2.0)

---
updated-dependencies:
- dependency-name: dev.gaijin.team/go/exhaustruct/v5
  dependency-version: 5.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Relates to an upstream dependency go Pull requests that update Go code labels Sep 4, 2026
@ldez
ldez self-requested a review September 4, 2026 17:34
@ldez ldez added linter: update version Update version of linter blocked: until next minor Will be a part of the next minor release labels Sep 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

blocked: until next minor Will be a part of the next minor release dependencies Relates to an upstream dependency go Pull requests that update Go code linter: update version Update version of linter

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Panic and false positives on Go 1.27 promoted-field keys in composite literals

1 participant