woodpecker/vendor/github.com/nishanths/exhaustive
Lukas c28f7cb29f
Add golangci-lint (#502)
Initial part of #435
2021-11-14 21:01:54 +01:00
..
.gitignore Add golangci-lint (#502) 2021-11-14 21:01:54 +01:00
.travis.yml Add golangci-lint (#502) 2021-11-14 21:01:54 +01:00
enum.go Add golangci-lint (#502) 2021-11-14 21:01:54 +01:00
exhaustive.go Add golangci-lint (#502) 2021-11-14 21:01:54 +01:00
generated.go Add golangci-lint (#502) 2021-11-14 21:01:54 +01:00
go.mod Add golangci-lint (#502) 2021-11-14 21:01:54 +01:00
go.sum Add golangci-lint (#502) 2021-11-14 21:01:54 +01:00
LICENSE Add golangci-lint (#502) 2021-11-14 21:01:54 +01:00
README.md Add golangci-lint (#502) 2021-11-14 21:01:54 +01:00
regexp_flag.go Add golangci-lint (#502) 2021-11-14 21:01:54 +01:00
switch.go Add golangci-lint (#502) 2021-11-14 21:01:54 +01:00

exhaustive

Godoc

Build Status

The exhaustive package and command line program can be used to detect enum switch statements that are not exhaustive.

An enum switch statement is exhaustive if it has cases for each of the enum's members. See godoc for the definition of enum used by the program.

The exhaustive package provides an Analyzer that follows the guidelines described in the go/analysis package; this makes it possible to integrate into existing analysis driver programs.

Install

go get github.com/nishanths/exhaustive/...

Docs

https://godoc.org/github.com/nishanths/exhaustive

Example

Given the code:

package token

type Token int

const (
	Add Token = iota
	Subtract
	Multiply
+	Quotient
+	Remainder
)
package calc

import "token"

func processToken(t token.Token) {
	switch t {
	case token.Add:
		...
	case token.Subtract:
		...
	case token.Multiply:
		...
	}
}

Running the exhaustive command will print:

calc.go:6:2: missing cases in switch of type token.Token: Quotient, Remainder

Enums can also be defined using explicit constant values instead of iota.

License

BSD 2-Clause