Skip to content

About

Find declarations that shadow any of Go's predeclared identifiers

Topics

Resources

Stars

31 stars

Watchers

3 watching

Forks

Latest commit

 

History

66 Commits

Folders and files

Repository files navigation

The predeclared static analysis finds declarations in Go source code that shadow any of Go's predeclared identifiers.

The analysis and the available flags are documented in the package comment in the 'passes/predeclared/predeclared.go' file. The documentation can be read using 'go doc' or on pkg.go.dev.

go doc github.com/nishanths/predeclared/passes/predeclared

https://pkg.go.dev/github.com/nishanths/predeclared/passes/predeclared

The list of predeclared identifiers can be found in the language specification. The predeclared identifiers, as of go1.26, are listed below for reference.

https://golang.org/ref/spec#Predeclared_identifiers

Types:
    any bool byte comparable
    complex64 complex128 error float32 float64
    int int8 int16 int32 int64 rune string
    uint uint8 uint16 uint32 uint64 uintptr

Constants:
    true false iota

Zero value:
    nil

Functions:
    append cap clear close complex copy delete imag len
    make max min new panic print println real recover

Usage

The standalone predeclared command can be installed using 'go install'.

go install github.com/nishanths/predeclared@latest

The Go package in the 'passes/predeclared' directory provides an analysis.Analyzer value that can be used by analysis driver programs. See https://golang.org/x/tools/go/analysis for more details.

Examples

For the source file:

package a

import "strconv"

func clear[S ~[]E, E any](s S) { ... }

func baz(s string) {
	const max = 8192
	int, err := strconv.Atoi(s)
	...
}

func copy(dst, src string) { ... }

the predeclared analysis reports these diagnostics:

a.go:5:6: clear: shadows predeclared identifier
a.go:8:8: max: shadows predeclared identifier
a.go:9:2: int: shadows predeclared identifier
a.go:14:6: copy: shadows predeclared identifier

About

Find declarations that shadow any of Go's predeclared identifiers

Topics

Resources

Stars

31 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages