func()

in variable.go [213:243]


func (v *VariableBlock) validationCheck() error {
	var err error
	for _, nb := range v.HclBlock().NestedBlocks() {
		if nb.Type != "validation" {
			continue
		}
		ctx := v.c.EmptyEvalContext()
		ctx.Variables = map[string]cty.Value{
			"var": cty.ObjectVal(map[string]cty.Value{
				v.Name(): *v.variableValue,
			}),
		}
		var vb VariableValidation
		diag := gohcl.DecodeBody(nb.Body, ctx, &vb)
		if diag.HasErrors() {
			err = multierror.Append(err, diag)
			continue
		}
		v.Validations = append(v.Validations, vb)
	}
	if err != nil {
		return err
	}
	for _, validation := range v.Validations {
		if validation.Condition {
			continue
		}
		err = multierror.Append(err, fmt.Errorf("invalid value for variable %s\n%s\n%s", v.Name(), v.HclBlock().Range().String(), validation.ErrorMessage))
	}
	return err
}