// Code generated by "stringer -type=CheckableKind checkable.go"; DO NOT EDIT.

package addrs

import "strconv"

func _() {
	// An "invalid array index" compiler error signifies that the constant values have changed.
	// Re-run the stringer command to generate them again.
	var x [1]struct{}
	_ = x[CheckableKindInvalid-0]
	_ = x[CheckableResource-82]
	_ = x[CheckableOutputValue-79]
	_ = x[CheckableCheck-67]
	_ = x[CheckableInputVariable-73]
}

const (
	_CheckableKind_name_0 = "CheckableKindInvalid"
	_CheckableKind_name_1 = "CheckableCheck"
	_CheckableKind_name_2 = "CheckableInputVariable"
	_CheckableKind_name_3 = "CheckableOutputValue"
	_CheckableKind_name_4 = "CheckableResource"
)

func (i CheckableKind) String() string {
	switch {
	case i == 0:
		return _CheckableKind_name_0
	case i == 67:
		return _CheckableKind_name_1
	case i == 73:
		return _CheckableKind_name_2
	case i == 79:
		return _CheckableKind_name_3
	case i == 82:
		return _CheckableKind_name_4
	default:
		return "CheckableKind(" + strconv.FormatInt(int64(i), 10) + ")"
	}
}
