├── .github └── workflows │ └── ci.yml ├── .gitignore ├── LICENSE ├── Makefile ├── README.md ├── cmd └── exhaustive │ └── exhaustive.go ├── comment.go ├── comment_go121.go ├── comment_pre_go121.go ├── comment_test.go ├── common.go ├── common_test.go ├── doc.go ├── enum.go ├── enum_test.go ├── exhaustive.go ├── exhaustive_test.go ├── fact.go ├── fact_test.go ├── flag.go ├── flag_test.go ├── go.mod ├── go.sum ├── map.go ├── switch.go ├── switch_test.go └── testdata ├── src ├── complexpkg │ └── complexpkg.go ├── default-case-required │ ├── default-not-required │ │ └── default_not_required.go │ ├── default-required │ │ └── default_required.go │ └── default_case_required.go ├── default-signifies-exhaustive │ ├── default-absent │ │ └── default_absent.go │ ├── default-present │ │ └── default_present.go │ └── default_signifies_exhaustive.go ├── duplicate-enum-value │ ├── duplicate_enum_value.go │ └── otherpkg │ │ └── otherpkg.go ├── enforce-comment │ ├── direction.go │ ├── enforce_comment_map.go │ └── enforce_comment_switch.go ├── enum │ ├── enum.go │ ├── scope.go │ ├── typealias │ │ ├── anotherpkg │ │ │ └── another.go │ │ ├── otherpkg │ │ │ └── other.go │ │ └── typealias.go │ └── types.go ├── general │ ├── dotimport │ │ └── dotimport.go │ ├── x │ │ ├── directive.go │ │ ├── general.go │ │ ├── general_go116.go │ │ ├── irrelevant.go │ │ ├── is_exhaustive.go │ │ ├── paren.go │ │ └── typeconv.go │ └── y │ │ └── y.go ├── generated-file │ ├── check-generated-off │ │ ├── a.go │ │ ├── generated_0.go │ │ ├── generated_3.go │ │ ├── generated_4.go │ │ ├── generated_doc_0.go │ │ ├── generated_doc_1.go │ │ ├── not_generated_1.go │ │ ├── not_generated_2.go │ │ └── not_generated_doc_2.go │ └── check-generated-on │ │ ├── a.go │ │ ├── generated_0.go │ │ ├── generated_3.go │ │ ├── generated_4.go │ │ ├── generated_doc_0.go │ │ ├── generated_doc_1.go │ │ ├── not_generated_1.go │ │ ├── not_generated_2.go │ │ └── not_generated_doc_2.go ├── ignore-comment │ ├── a.go │ ├── ignore_comment_map.go │ └── ignore_comment_switch.go ├── ignore-pattern │ ├── ignore_constant.go │ ├── ignore_type.go │ └── same_value.go ├── scope │ ├── allscope │ │ └── allscope.go │ └── pkgscope │ │ └── pkgscope.go ├── typealias │ ├── bar │ │ └── bar.go │ ├── foo │ │ └── foo.go │ ├── quux │ │ └── quux.go │ └── typealias.go └── typeparam │ ├── build.go │ ├── funcs.go │ └── types.go ├── switchtest ├── a.go ├── otherpkg │ └── otherpkg.go └── switchtest.go └── xxx ├── calc └── calc.go └── token └── token.go /.github/workflows/ci.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/.github/workflows/ci.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/.gitignore -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/LICENSE -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/Makefile -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/README.md -------------------------------------------------------------------------------- /cmd/exhaustive/exhaustive.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/cmd/exhaustive/exhaustive.go -------------------------------------------------------------------------------- /comment.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/comment.go -------------------------------------------------------------------------------- /comment_go121.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/comment_go121.go -------------------------------------------------------------------------------- /comment_pre_go121.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/comment_pre_go121.go -------------------------------------------------------------------------------- /comment_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/comment_test.go -------------------------------------------------------------------------------- /common.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/common.go -------------------------------------------------------------------------------- /common_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/common_test.go -------------------------------------------------------------------------------- /doc.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/doc.go -------------------------------------------------------------------------------- /enum.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/enum.go -------------------------------------------------------------------------------- /enum_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/enum_test.go -------------------------------------------------------------------------------- /exhaustive.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/exhaustive.go -------------------------------------------------------------------------------- /exhaustive_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/exhaustive_test.go -------------------------------------------------------------------------------- /fact.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/fact.go -------------------------------------------------------------------------------- /fact_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/fact_test.go -------------------------------------------------------------------------------- /flag.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/flag.go -------------------------------------------------------------------------------- /flag_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/flag_test.go -------------------------------------------------------------------------------- /go.mod: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/go.mod -------------------------------------------------------------------------------- /go.sum: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/go.sum -------------------------------------------------------------------------------- /map.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/map.go -------------------------------------------------------------------------------- /switch.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/switch.go -------------------------------------------------------------------------------- /switch_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/switch_test.go -------------------------------------------------------------------------------- /testdata/src/complexpkg/complexpkg.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/complexpkg/complexpkg.go -------------------------------------------------------------------------------- /testdata/src/default-case-required/default-not-required/default_not_required.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/default-case-required/default-not-required/default_not_required.go -------------------------------------------------------------------------------- /testdata/src/default-case-required/default-required/default_required.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/default-case-required/default-required/default_required.go -------------------------------------------------------------------------------- /testdata/src/default-case-required/default_case_required.go: -------------------------------------------------------------------------------- 1 | package dcr 2 | 3 | type T int 4 | 5 | const ( 6 | A T = iota 7 | B 8 | ) 9 | -------------------------------------------------------------------------------- /testdata/src/default-signifies-exhaustive/default-absent/default_absent.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/default-signifies-exhaustive/default-absent/default_absent.go -------------------------------------------------------------------------------- /testdata/src/default-signifies-exhaustive/default-present/default_present.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/default-signifies-exhaustive/default-present/default_present.go -------------------------------------------------------------------------------- /testdata/src/default-signifies-exhaustive/default_signifies_exhaustive.go: -------------------------------------------------------------------------------- 1 | package dse 2 | 3 | type T int 4 | 5 | const ( 6 | A T = iota 7 | B 8 | ) 9 | -------------------------------------------------------------------------------- /testdata/src/duplicate-enum-value/duplicate_enum_value.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/duplicate-enum-value/duplicate_enum_value.go -------------------------------------------------------------------------------- /testdata/src/duplicate-enum-value/otherpkg/otherpkg.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/duplicate-enum-value/otherpkg/otherpkg.go -------------------------------------------------------------------------------- /testdata/src/enforce-comment/direction.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/enforce-comment/direction.go -------------------------------------------------------------------------------- /testdata/src/enforce-comment/enforce_comment_map.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/enforce-comment/enforce_comment_map.go -------------------------------------------------------------------------------- /testdata/src/enforce-comment/enforce_comment_switch.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/enforce-comment/enforce_comment_switch.go -------------------------------------------------------------------------------- /testdata/src/enum/enum.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/enum/enum.go -------------------------------------------------------------------------------- /testdata/src/enum/scope.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/enum/scope.go -------------------------------------------------------------------------------- /testdata/src/enum/typealias/anotherpkg/another.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/enum/typealias/anotherpkg/another.go -------------------------------------------------------------------------------- /testdata/src/enum/typealias/otherpkg/other.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/enum/typealias/otherpkg/other.go -------------------------------------------------------------------------------- /testdata/src/enum/typealias/typealias.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/enum/typealias/typealias.go -------------------------------------------------------------------------------- /testdata/src/enum/types.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/enum/types.go -------------------------------------------------------------------------------- /testdata/src/general/dotimport/dotimport.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/general/dotimport/dotimport.go -------------------------------------------------------------------------------- /testdata/src/general/x/directive.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/general/x/directive.go -------------------------------------------------------------------------------- /testdata/src/general/x/general.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/general/x/general.go -------------------------------------------------------------------------------- /testdata/src/general/x/general_go116.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/general/x/general_go116.go -------------------------------------------------------------------------------- /testdata/src/general/x/irrelevant.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/general/x/irrelevant.go -------------------------------------------------------------------------------- /testdata/src/general/x/is_exhaustive.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/general/x/is_exhaustive.go -------------------------------------------------------------------------------- /testdata/src/general/x/paren.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/general/x/paren.go -------------------------------------------------------------------------------- /testdata/src/general/x/typeconv.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/general/x/typeconv.go -------------------------------------------------------------------------------- /testdata/src/general/y/y.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/general/y/y.go -------------------------------------------------------------------------------- /testdata/src/generated-file/check-generated-off/a.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/generated-file/check-generated-off/a.go -------------------------------------------------------------------------------- /testdata/src/generated-file/check-generated-off/generated_0.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/generated-file/check-generated-off/generated_0.go -------------------------------------------------------------------------------- /testdata/src/generated-file/check-generated-off/generated_3.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/generated-file/check-generated-off/generated_3.go -------------------------------------------------------------------------------- /testdata/src/generated-file/check-generated-off/generated_4.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/generated-file/check-generated-off/generated_4.go -------------------------------------------------------------------------------- /testdata/src/generated-file/check-generated-off/generated_doc_0.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/generated-file/check-generated-off/generated_doc_0.go -------------------------------------------------------------------------------- /testdata/src/generated-file/check-generated-off/generated_doc_1.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/generated-file/check-generated-off/generated_doc_1.go -------------------------------------------------------------------------------- /testdata/src/generated-file/check-generated-off/not_generated_1.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/generated-file/check-generated-off/not_generated_1.go -------------------------------------------------------------------------------- /testdata/src/generated-file/check-generated-off/not_generated_2.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/generated-file/check-generated-off/not_generated_2.go -------------------------------------------------------------------------------- /testdata/src/generated-file/check-generated-off/not_generated_doc_2.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/generated-file/check-generated-off/not_generated_doc_2.go -------------------------------------------------------------------------------- /testdata/src/generated-file/check-generated-on/a.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/generated-file/check-generated-on/a.go -------------------------------------------------------------------------------- /testdata/src/generated-file/check-generated-on/generated_0.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/generated-file/check-generated-on/generated_0.go -------------------------------------------------------------------------------- /testdata/src/generated-file/check-generated-on/generated_3.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/generated-file/check-generated-on/generated_3.go -------------------------------------------------------------------------------- /testdata/src/generated-file/check-generated-on/generated_4.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/generated-file/check-generated-on/generated_4.go -------------------------------------------------------------------------------- /testdata/src/generated-file/check-generated-on/generated_doc_0.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/generated-file/check-generated-on/generated_doc_0.go -------------------------------------------------------------------------------- /testdata/src/generated-file/check-generated-on/generated_doc_1.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/generated-file/check-generated-on/generated_doc_1.go -------------------------------------------------------------------------------- /testdata/src/generated-file/check-generated-on/not_generated_1.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/generated-file/check-generated-on/not_generated_1.go -------------------------------------------------------------------------------- /testdata/src/generated-file/check-generated-on/not_generated_2.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/generated-file/check-generated-on/not_generated_2.go -------------------------------------------------------------------------------- /testdata/src/generated-file/check-generated-on/not_generated_doc_2.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/generated-file/check-generated-on/not_generated_doc_2.go -------------------------------------------------------------------------------- /testdata/src/ignore-comment/a.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/ignore-comment/a.go -------------------------------------------------------------------------------- /testdata/src/ignore-comment/ignore_comment_map.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/ignore-comment/ignore_comment_map.go -------------------------------------------------------------------------------- /testdata/src/ignore-comment/ignore_comment_switch.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/ignore-comment/ignore_comment_switch.go -------------------------------------------------------------------------------- /testdata/src/ignore-pattern/ignore_constant.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/ignore-pattern/ignore_constant.go -------------------------------------------------------------------------------- /testdata/src/ignore-pattern/ignore_type.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/ignore-pattern/ignore_type.go -------------------------------------------------------------------------------- /testdata/src/ignore-pattern/same_value.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/ignore-pattern/same_value.go -------------------------------------------------------------------------------- /testdata/src/scope/allscope/allscope.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/scope/allscope/allscope.go -------------------------------------------------------------------------------- /testdata/src/scope/pkgscope/pkgscope.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/scope/pkgscope/pkgscope.go -------------------------------------------------------------------------------- /testdata/src/typealias/bar/bar.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/typealias/bar/bar.go -------------------------------------------------------------------------------- /testdata/src/typealias/foo/foo.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/typealias/foo/foo.go -------------------------------------------------------------------------------- /testdata/src/typealias/quux/quux.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/typealias/quux/quux.go -------------------------------------------------------------------------------- /testdata/src/typealias/typealias.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/typealias/typealias.go -------------------------------------------------------------------------------- /testdata/src/typeparam/build.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/typeparam/build.go -------------------------------------------------------------------------------- /testdata/src/typeparam/funcs.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/typeparam/funcs.go -------------------------------------------------------------------------------- /testdata/src/typeparam/types.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/src/typeparam/types.go -------------------------------------------------------------------------------- /testdata/switchtest/a.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/switchtest/a.go -------------------------------------------------------------------------------- /testdata/switchtest/otherpkg/otherpkg.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/switchtest/otherpkg/otherpkg.go -------------------------------------------------------------------------------- /testdata/switchtest/switchtest.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/switchtest/switchtest.go -------------------------------------------------------------------------------- /testdata/xxx/calc/calc.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/xxx/calc/calc.go -------------------------------------------------------------------------------- /testdata/xxx/token/token.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nishanths/exhaustive/HEAD/testdata/xxx/token/token.go --------------------------------------------------------------------------------