The language server produces various types of diagnostics as you type.
Starting in v0.8.0
we report diagnostics for invalid HCL syntax,
for example missing }
, "
or other "control characters" out of place.
HCL syntax alone does not account for the Terraform language with all its (in)valid keywords, block or attribute names etc. nor differences between Terraform versions, that is handled elsewhere.
Starting in v0.32.0
we report additional diagnostics for selected invalid Terraform language constructs
based on detected Terraform version and provider versions (if available).
This validation is enabled by default but can be controlled via
validation.enableEnhancedValidation
.
All validation rules currently implemented are considered universally applicable and not opinionated. If you believe a diagnostic is incorrect, this may be caused by mis-identified version of Terraform or provider version. You can temporarily disable validation in such a case and let us know by filing a new issue.
See supported rules below.
For blocks which have a maximum we check if the number was not exceeded.
For blocks which have an expected minimum we check if the number of blocks was met.
This validation has a limited scope to variables (var.*
/ variable
blocks)
and local values (local.*
/ locals
) for now.
Each entry in the file is checked against its corresponding variable
declaration
and entries without declaration are considered invalid.
Blocks are not considered as valid in variable files.