hclsyntax: When evaluating string templates that have a long known constant prefix, HCL will truncate the known prefix to avoid creating excessively-large refinements. String prefix refinements are intended primarily for relatively-short fixed prefixes, such as https:// at the start of a URL known to use that scheme. (#617)
ext/tryfunc: The "try" and "can" functions now handle unknown values slightly more precisely, and so can return known values in more situations when given expressions referring to unknown symbols. (#622)
Bugs Fixed
ext/typeexpr: Will no longer try to refine unknown values of unknown type when dealing with a user-specified type constraint containing the any keyword, avoiding an incorrect panic at runtime. (#625)
ext/typeexpr: Now correctly handles attempts to declare the same object type attribute multiple times by returning an error. Previously this could potentially panic by creating an incoherent internal state. (#624)
v2.17.0
Enhancements
HCL now uses a newer version of the upstream cty library which has improved treatment of unknown values: it can now track additional optional information that reduces the range of an unknown value, which allows some operations against unknown values to return known or partially-known results. (#590)
Note: This change effectively passes on cty's notion of backward compatibility whereby unknown values can become "more known" in later releases. In particular, if your caller is using cty.Value.RawEquals in its tests against the results of operations with unknown values then you may see those tests begin failing after upgrading, due to the values now being more "refined".
If so, you should review the refinements with consideration to the cty refinements docs and update your expected results to match only if the reported refinements seem correct for the given situation. The RawEquals method is intended only for making exact value comparisons in test cases, so main application code should not use it; use Equals instead for real logic, which will take refinements into account automatically.
v2.16.2
Bugs Fixed
ext/typeexpr: Verify type assumptions when applying default values, and ignore input values that do not match type assumptions. (#594)
v2.16.1
Bugs Fixed
hclsyntax: Report correct Range.End for FunctionCall with incomplete argument (#588)
v2.16.0
Enhancements
ext/typeexpr: Modify the Defaults functionality to implement additional flexibility. HCL will now upcast lists and sets into tuples, and maps into objects, when applying default values if the applied defaults cause the elements within a target collection to have differing types. Previously, this would have resulted in a panic, now HCL will return a modified overall type. (hashicorp/hcl#574)
Users should return to the advice provided by v2.14.0, and apply the go-cty convert functionality after setting defaults on a given cty.Value, rather than before.
ext/typeexpr: Skip null objects when applying defaults. This prevents crashes when null objects are creating inside collections, and stops incomplete objects being created with only optional attributes set. (#567)
ext/typeexpr: Ensure default values do not have optional metadata attached. This prevents crashes when default values are inserted into concrete go-cty values that have also been stripped of their optional metadata. (#568)
hclsyntax: When evaluating string templates that have a long known constant prefix, HCL will truncate the known prefix to avoid creating excessively-large refinements. String prefix refinements are intended primarily for relatively-short fixed prefixes, such as https:// at the start of a URL known to use that scheme. (#617)
ext/tryfunc: The "try" and "can" functions now handle unknown values slightly more precisely, and so can return known values in more situations when given expressions referring to unknown symbols. (#622)
Bugs Fixed
ext/typeexpr: Will no longer try to refine unknown values of unknown type when dealing with a user-specified type constraint containing the any keyword, avoiding an incorrect panic at runtime. (#625)
ext/typeexpr: Now correctly handles attempts to declare the same object type attribute multiple times by returning an error. Previously this could potentially panic by creating an incoherent internal state. (#624)
v2.17.0 (May 31, 2023)
Enhancements
HCL now uses a newer version of the upstream cty library which has improved treatment of unknown values: it can now track additional optional information that reduces the range of an unknown value, which allows some operations against unknown values to return known or partially-known results. (#590)
Note: This change effectively passes on cty's notion of backward compatibility whereby unknown values can become "more known" in later releases. In particular, if your caller is using cty.Value.RawEquals in its tests against the results of operations with unknown values then you may see those tests begin failing after upgrading, due to the values now being more "refined".
If so, you should review the refinements with consideration to the cty refinements docs and update your expected results to match only if the reported refinements seem correct for the given situation. The RawEquals method is intended only for making exact value comparisons in test cases, so main application code should not use it; use Equals instead for real logic, which will take refinements into account automatically.
v2.16.2 (March 9, 2023)
Bugs Fixed
ext/typeexpr: Verify type assumptions when applying default values, and ignore input values that do not match type assumptions. (#594)
v2.16.1 (February 13, 2023)
Bugs Fixed
hclsyntax: Report correct Range.End for FunctionCall with incomplete argument (#588)
v2.16.0 (January 30, 2023)
Enhancements
ext/typeexpr: Modify the Defaults functionality to implement additional flexibility. HCL will now upcast lists and sets into tuples, and maps into objects, when applying default values if the applied defaults cause the elements within a target collection to have differing types. Previously, this would have resulted in a panic, now HCL will return a modified overall type. (#574)
Users should return to the advice provided by v2.14.0, and apply the go-cty convert functionality after setting defaults on a given cty.Value, rather than before.
Most Recent Ignore Conditions Applied to This Pull Request
| Dependency Name | Ignore Conditions |
| --- | --- |
| github.com/hashicorp/hcl/v2 | [>= 2.16.a, < 2.17] |
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps github.com/hashicorp/hcl/v2 from 2.14.0 to 2.17.1.
Release notes
Sourced from github.com/hashicorp/hcl/v2's releases.
... (truncated)
Changelog
Sourced from github.com/hashicorp/hcl/v2's changelog.
... (truncated)
Commits
fef0406
v2.17.1 release6b8265e
Merge pull request #624 from hashicorp/terraform-337573617411
hcldec: A test case for attributes set to cty.DynamicVal with refinementsed6d4bf
ext/typeexpr: Avoid refinements on dynamic values4259e4b
Check for duplicate keys in objects when building types from expressionsa9f8d65
Merge pull request #622 from hashicorp/jbardin/can-try-unknowns6af2870
Allow can and try functions to handle more unknown527ec31
hclsyntax: Impose an upper limit on a refined prefix in TemplateExpr7208bce
v2.17.0 release58cc29f
Update CHANGELOG.mdMost Recent Ignore Conditions Applied to This Pull Request
| Dependency Name | Ignore Conditions | | --- | --- | | github.com/hashicorp/hcl/v2 | [>= 2.16.a, < 2.17] |Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show