workgroups/vendor/github.com/nishanths/exhaustive
Marvin Preuss 1d4ae27878
All checks were successful
continuous-integration/drone/push Build is passing
ci: drone yaml with reusable anchors
2021-09-24 17:34:17 +02:00
..
.gitignore ci: drone yaml with reusable anchors 2021-09-24 17:34:17 +02:00
.travis.yml ci: drone yaml with reusable anchors 2021-09-24 17:34:17 +02:00
enum.go ci: drone yaml with reusable anchors 2021-09-24 17:34:17 +02:00
exhaustive.go ci: drone yaml with reusable anchors 2021-09-24 17:34:17 +02:00
generated.go ci: drone yaml with reusable anchors 2021-09-24 17:34:17 +02:00
LICENSE ci: drone yaml with reusable anchors 2021-09-24 17:34:17 +02:00
README.md ci: drone yaml with reusable anchors 2021-09-24 17:34:17 +02:00
regexp_flag.go ci: drone yaml with reusable anchors 2021-09-24 17:34:17 +02:00
switch.go ci: drone yaml with reusable anchors 2021-09-24 17:34:17 +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