iperf3exporter/vendor/github.com/nishanths/exhaustive
Marvin Preuss 2343c9588a
Some checks failed
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is failing
first commit
2021-10-20 10:08:56 +02:00
..
.gitignore first commit 2021-10-20 10:08:56 +02:00
.travis.yml first commit 2021-10-20 10:08:56 +02:00
enum.go first commit 2021-10-20 10:08:56 +02:00
exhaustive.go first commit 2021-10-20 10:08:56 +02:00
generated.go first commit 2021-10-20 10:08:56 +02:00
LICENSE first commit 2021-10-20 10:08:56 +02:00
README.md first commit 2021-10-20 10:08:56 +02:00
regexp_flag.go first commit 2021-10-20 10:08:56 +02:00
switch.go first commit 2021-10-20 10:08:56 +02: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