func()

in rules/terraform_required_version_declaration.go [69:104]


func (r *TerraformRequiredVersionDeclarationRule) checkBlock(runner tflint.Runner, block *hclsyntax.Block) error {
	msg := "The `required_version` field should be declared at the beginning of `terraform` block"
	versionAttr, defined := block.Body.Attributes["required_version"]
	if !defined {
		return runner.EmitIssue(
			r,
			msg,
			block.DefRange(),
		)
	}
	comparePos := func(pos1 hcl.Pos, pos2 hcl.Pos) bool {
		if pos1.Line != pos2.Line {
			return pos1.Line < pos2.Line
		}
		return pos1.Column < pos2.Column
	}
	for _, attr := range block.Body.Attributes {
		if attr.Name != "required_version" && comparePos(attr.Range().Start, versionAttr.Range().Start) {
			return runner.EmitIssue(
				r,
				msg,
				versionAttr.NameRange,
			)
		}
	}
	for _, nestedBlock := range block.Body.Blocks {
		if comparePos(nestedBlock.Range().Start, versionAttr.Range().Start) {
			return runner.EmitIssue(
				r,
				msg,
				versionAttr.NameRange,
			)
		}
	}
	return nil
}