func()

in rules/terraform_variable_separate.go [56:87]


func (r *TerraformVariableSeparateRule) checkVariableSeparate(runner tflint.Runner, file *hcl.File) error {
	body, ok := file.Body.(*hclsyntax.Body)
	if !ok {
		logger.Debug("skip terraform_variable_separate check since it's not hcl file")
		return nil
	}
	blocks := body.Blocks

	var firstNonVarBlockRange *hcl.Range
	variableDefined := false
	for _, block := range blocks {
		switch block.Type {
		case "variable":
			if !variableDefined {
				variableDefined = true
			}
		default:
			if firstNonVarBlockRange == nil {
				firstNonVarBlockRange = ref(block.DefRange())
			}
		}
	}

	if variableDefined && firstNonVarBlockRange != nil {
		return runner.EmitIssue(
			r,
			"Putting variables and other types of blocks in the same file is not recommended",
			*firstNonVarBlockRange,
		)
	}
	return nil
}