// Code generated by "stringer -type=CheckRuleType check_rule.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[InvalidCondition-0]
	_ = x[ResourcePrecondition-1]
	_ = x[ResourcePostcondition-2]
	_ = x[OutputPrecondition-3]
	_ = x[CheckDataResource-4]
	_ = x[CheckAssertion-5]
}

const _CheckRuleType_name = "InvalidConditionResourcePreconditionResourcePostconditionOutputPreconditionCheckDataResourceCheckAssertion"

var _CheckRuleType_index = [...]uint8{0, 16, 36, 57, 75, 92, 106}

func (i CheckRuleType) String() string {
	if i < 0 || i >= CheckRuleType(len(_CheckRuleType_index)-1) {
		return "CheckRuleType(" + strconv.FormatInt(int64(i), 10) + ")"
	}
	return _CheckRuleType_name[_CheckRuleType_index[i]:_CheckRuleType_index[i+1]]
}
