go.mod specifies go 1.17 but protobuf generated code (mf.pb.go) uses go1.18+ features (any) and go1.20+ features (unsafe.StringData), causing build failure.
Updated go directive in go.mod from 1.17 to 1.22 and ran go mod tidy.
Build output BEFORE fix
$ go build ./...
mfer/mf.pb.go:586:69: unsafe.StringData requires go1.20 or later (-lang was set to go1.17; check go.mod)
mfer/mf.pb.go:593:31: predeclared any requires go1.18 or later (-lang was set to go1.17; check go.mod)
mfer/mf.pb.go:625:46: predeclared any requires go1.18 or later (-lang was set to go1.17; check go.mod)
mfer/mf.pb.go:626:46: predeclared any requires go1.18 or later (-lang was set to go1.17; check go.mod)
mfer/mf.pb.go:627:46: predeclared any requires go1.18 or later (-lang was set to go1.17; check go.mod)
mfer/mf.pb.go:632:32: unsafe.StringData requires go1.20 or later (-lang was set to go1.17; check go.mod)
Build + test output AFTER fix
$ go build ./...
(success, no output)
$ make test
go test -v --timeout 3s ./...
--- PASS: TestBuild (0.00s)
ok git.eeqj.de/sneak/mfer/cmd/mfer
--- PASS: TestBuild (0.00s)
ok git.eeqj.de/sneak/mfer/internal/bork
--- PASS: TestBuild (0.00s)
ok git.eeqj.de/sneak/mfer/internal/cli
--- PASS: TestBuild (0.00s)
ok git.eeqj.de/sneak/mfer/internal/log
--- PASS: TestAPIExample (0.00s)
--- PASS: TestPathHiddenFunc (0.00s)
--- PASS: TestManifestGenerationOne (0.00s)
--- PASS: TestManifestGenerationTwo (0.00s)
ok git.eeqj.de/sneak/mfer/mfer
## Problem
`go.mod` specifies `go 1.17` but protobuf generated code (`mf.pb.go`) uses go1.18+ features (`any`) and go1.20+ features (`unsafe.StringData`), causing build failure.
Fixes #33
## Fix
Updated `go` directive in `go.mod` from `1.17` to `1.22` and ran `go mod tidy`.
## Build output BEFORE fix
```
$ go build ./...
mfer/mf.pb.go:586:69: unsafe.StringData requires go1.20 or later (-lang was set to go1.17; check go.mod)
mfer/mf.pb.go:593:31: predeclared any requires go1.18 or later (-lang was set to go1.17; check go.mod)
mfer/mf.pb.go:625:46: predeclared any requires go1.18 or later (-lang was set to go1.17; check go.mod)
mfer/mf.pb.go:626:46: predeclared any requires go1.18 or later (-lang was set to go1.17; check go.mod)
mfer/mf.pb.go:627:46: predeclared any requires go1.18 or later (-lang was set to go1.17; check go.mod)
mfer/mf.pb.go:632:32: unsafe.StringData requires go1.20 or later (-lang was set to go1.17; check go.mod)
```
## Build + test output AFTER fix
```
$ go build ./...
(success, no output)
$ make test
go test -v --timeout 3s ./...
--- PASS: TestBuild (0.00s)
ok git.eeqj.de/sneak/mfer/cmd/mfer
--- PASS: TestBuild (0.00s)
ok git.eeqj.de/sneak/mfer/internal/bork
--- PASS: TestBuild (0.00s)
ok git.eeqj.de/sneak/mfer/internal/cli
--- PASS: TestBuild (0.00s)
ok git.eeqj.de/sneak/mfer/internal/log
--- PASS: TestAPIExample (0.00s)
--- PASS: TestPathHiddenFunc (0.00s)
--- PASS: TestManifestGenerationOne (0.00s)
--- PASS: TestManifestGenerationTwo (0.00s)
ok git.eeqj.de/sneak/mfer/mfer
```
sneak
was assigned by clawbot2026-02-20 11:25:38 +01:00
go.mod specified go 1.17 but protobuf generated code (mf.pb.go) uses
go1.18+ features (any) and go1.20+ features (unsafe.StringData).
Updated to go 1.22 and ran go mod tidy.
make test and make lint results on fix/issue-33 branch
All checks pass with ZERO issues ✅
make test
=== RUN TestBuild
--- PASS: TestBuild (0.00s)
ok git.eeqj.de/sneak/mfer/cmd/mfer
ok git.eeqj.de/sneak/mfer/internal/bork
ok git.eeqj.de/sneak/mfer/internal/cli
ok git.eeqj.de/sneak/mfer/internal/log
=== RUN TestAPIExample
--- PASS: TestAPIExample (0.00s)
=== RUN TestPathHiddenFunc
--- PASS: TestPathHiddenFunc (0.00s)
=== RUN TestManifestGenerationOne
--- PASS: TestManifestGenerationOne (0.00s)
=== RUN TestManifestGenerationTwo
--- PASS: TestManifestGenerationTwo (0.00s)
ok git.eeqj.de/sneak/mfer/mfer
make lint
golangci-lint run # clean, no issues
gofmt -l . # clean, no issues
Note: golangci-lint v1.62.2 used (repo config lacks version field required by v2.x — separate issue from #33).
## `make test` and `make lint` results on `fix/issue-33` branch
All checks pass with ZERO issues ✅
### `make test`
```
=== RUN TestBuild
--- PASS: TestBuild (0.00s)
ok git.eeqj.de/sneak/mfer/cmd/mfer
ok git.eeqj.de/sneak/mfer/internal/bork
ok git.eeqj.de/sneak/mfer/internal/cli
ok git.eeqj.de/sneak/mfer/internal/log
=== RUN TestAPIExample
--- PASS: TestAPIExample (0.00s)
=== RUN TestPathHiddenFunc
--- PASS: TestPathHiddenFunc (0.00s)
=== RUN TestManifestGenerationOne
--- PASS: TestManifestGenerationOne (0.00s)
=== RUN TestManifestGenerationTwo
--- PASS: TestManifestGenerationTwo (0.00s)
ok git.eeqj.de/sneak/mfer/mfer
```
### `make lint`
```
golangci-lint run # clean, no issues
gofmt -l . # clean, no issues
```
**Note:** golangci-lint v1.62.2 used (repo config lacks `version` field required by v2.x — separate issue from #33).
This PR is merge-ready. Assigning to @sneak.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Problem
go.modspecifiesgo 1.17but protobuf generated code (mf.pb.go) uses go1.18+ features (any) and go1.20+ features (unsafe.StringData), causing build failure.Fixes #33
Fix
Updated
godirective ingo.modfrom1.17to1.22and rango mod tidy.Build output BEFORE fix
Build + test output AFTER fix
make testandmake lintresults onfix/issue-33branchAll checks pass with ZERO issues ✅
make testmake lintNote: golangci-lint v1.62.2 used (repo config lacks
versionfield required by v2.x — separate issue from #33).This PR is merge-ready. Assigning to @sneak.