Skip to content

ST1023: importing syscall package prevents the check from reporting errors #1706

@arp242

Description

@arp242

With this package:

% cat a.go
package x

import "reflect"

func A() {
        rv := reflect.ValueOf("a")
        var iv any = rv.Interface()
        _ = iv
}
% cat b.go
package x

import (
        "os"
        "syscall"
)

func B() {
        _, err := os.Stat("b.go")
        _ = err == syscall.ENOENT
}

staticcheck reports no errors:

% staticcheck -checks=ST1023
[no error]

if b.go is changed to:

package x

import "os"

func B() {
        _, err := os.Stat("b.go")
        _ = err
}

Then it (correctly) reports that any is superfluous here:

% staticcheck -checks=ST1023
a.go:7:9: should omit type any from declaration; it will be inferred from the right-hand side (ST1023)

I'm confused why it doesn't report the error if it imports syscall anywhere in the package? I think this might be a bug?


% staticcheck -debug.version
staticcheck (devel, v0.7.0-0.dev.0.20260225220524-31e1ee5e554a)

Compiled with Go version: go1.26.1
Main module:
        honnef.co/go/[email protected]
Dependencies:
        github.com/BurntSushi/[email protected] (sum: h1:pxW6RcqyfI9/kWtOwnv/G+AzdKuy2ZrqINhenH4HyNs=)
        golang.org/x/exp/[email protected] (sum: h1:1P7xPZEwZMoBoz0Yze5Nx2/4pxj6nw9ZqHWXqP0iRgQ=)
        golang.org/x/[email protected] (sum: h1:HaW9xtz0+kOcWKwli0ZXy79Ix+UW/vOfmWI5QVd2tgI=)
        golang.org/x/[email protected] (sum: h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4=)
        golang.org/x/[email protected] (sum: h1:CHVDrNHx9ZoOrNN9kKWYIbT5Rj+WF2rlwPkhbQQ5V4U=)


% go version
go version go1.26.1 linux/amd64

% go env -changed
CC='cc'
CXX='c++'
GOBIN='/home/martin/.local/gobin'
GOCACHE='/tmp/go/cache'
GOFLAGS='-modcacherw'
GOTMPDIR='/tmp/go/tmp'

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions