Bump github.com/hashicorp/terraform-plugin-sdk/v2 from 2.26.1 to 2.27.0
Bumps [github.com/hashicorp/terraform-plugin-sdk/v2](https://github.com/hashicorp/terraform-plugin-sdk) from 2.26.1 to 2.27.0. - [Release notes](https://github.com/hashicorp/terraform-plugin-sdk/releases) - [Changelog](https://github.com/hashicorp/terraform-plugin-sdk/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/terraform-plugin-sdk/compare/v2.26.1...v2.27.0) --- updated-dependencies: - dependency-name: github.com/hashicorp/terraform-plugin-sdk/v2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
This commit is contained in:
10
vendor/github.com/hashicorp/hcl/v2/CHANGELOG.md
generated
vendored
10
vendor/github.com/hashicorp/hcl/v2/CHANGELOG.md
generated
vendored
@ -1,5 +1,15 @@
|
||||
# HCL Changelog
|
||||
|
||||
## 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](https://github.com/hashicorp/hcl/pull/590))
|
||||
|
||||
**Note:** This change effectively passes on [`cty`'s notion of backward compatibility](https://github.com/zclconf/go-cty/blob/main/COMPATIBILITY.md) 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](https://github.com/zclconf/go-cty/blob/7dcbae46a6f247e983efb1fa774d2bb68781a333/docs/refinements.md) 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
|
||||
|
77
vendor/github.com/hashicorp/hcl/v2/hclsyntax/expression.go
generated
vendored
77
vendor/github.com/hashicorp/hcl/v2/hclsyntax/expression.go
generated
vendored
@ -696,7 +696,59 @@ func (e *ConditionalExpr) Value(ctx *hcl.EvalContext) (cty.Value, hcl.Diagnostic
|
||||
return cty.UnknownVal(resultType), diags
|
||||
}
|
||||
if !condResult.IsKnown() {
|
||||
return cty.UnknownVal(resultType), diags
|
||||
// We might be able to offer a refined range for the result based on
|
||||
// the two possible outcomes.
|
||||
if trueResult.Type() == cty.Number && falseResult.Type() == cty.Number {
|
||||
// This case deals with the common case of (predicate ? 1 : 0) and
|
||||
// significantly decreases the range of the result in that case.
|
||||
if !(trueResult.IsNull() || falseResult.IsNull()) {
|
||||
if gt := trueResult.GreaterThan(falseResult); gt.IsKnown() {
|
||||
b := cty.UnknownVal(cty.Number).Refine()
|
||||
if gt.True() {
|
||||
b = b.
|
||||
NumberRangeLowerBound(falseResult, true).
|
||||
NumberRangeUpperBound(trueResult, true)
|
||||
} else {
|
||||
b = b.
|
||||
NumberRangeLowerBound(trueResult, true).
|
||||
NumberRangeUpperBound(falseResult, true)
|
||||
}
|
||||
b = b.NotNull() // If neither of the results is null then the result can't be either
|
||||
return b.NewValue().WithSameMarks(condResult).WithSameMarks(trueResult).WithSameMarks(falseResult), diags
|
||||
}
|
||||
}
|
||||
}
|
||||
if trueResult.Type().IsCollectionType() && falseResult.Type().IsCollectionType() {
|
||||
if trueResult.Type().Equals(falseResult.Type()) {
|
||||
if !(trueResult.IsNull() || falseResult.IsNull()) {
|
||||
trueLen := trueResult.Length()
|
||||
falseLen := falseResult.Length()
|
||||
if gt := trueLen.GreaterThan(falseLen); gt.IsKnown() {
|
||||
b := cty.UnknownVal(resultType).Refine()
|
||||
trueLen, _ := trueLen.AsBigFloat().Int64()
|
||||
falseLen, _ := falseLen.AsBigFloat().Int64()
|
||||
if gt.True() {
|
||||
b = b.
|
||||
CollectionLengthLowerBound(int(falseLen)).
|
||||
CollectionLengthUpperBound(int(trueLen))
|
||||
} else {
|
||||
b = b.
|
||||
CollectionLengthLowerBound(int(trueLen)).
|
||||
CollectionLengthUpperBound(int(falseLen))
|
||||
}
|
||||
b = b.NotNull() // If neither of the results is null then the result can't be either
|
||||
return b.NewValue().WithSameMarks(condResult).WithSameMarks(trueResult).WithSameMarks(falseResult), diags
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
trueRng := trueResult.Range()
|
||||
falseRng := falseResult.Range()
|
||||
ret := cty.UnknownVal(resultType)
|
||||
if trueRng.DefinitelyNotNull() && falseRng.DefinitelyNotNull() {
|
||||
ret = ret.RefineNotNull()
|
||||
}
|
||||
return ret.WithSameMarks(condResult).WithSameMarks(trueResult).WithSameMarks(falseResult), diags
|
||||
}
|
||||
condResult, err := convert.Convert(condResult, cty.Bool)
|
||||
if err != nil {
|
||||
@ -1632,11 +1684,15 @@ func (e *SplatExpr) Value(ctx *hcl.EvalContext) (cty.Value, hcl.Diagnostics) {
|
||||
// example, it is valid to use a splat on a single object to retrieve a
|
||||
// list of a single attribute, but we still need to check if that
|
||||
// attribute actually exists.
|
||||
upgradedUnknown = !sourceVal.IsKnown()
|
||||
if !sourceVal.IsKnown() {
|
||||
sourceRng := sourceVal.Range()
|
||||
if sourceRng.CouldBeNull() {
|
||||
upgradedUnknown = true
|
||||
}
|
||||
}
|
||||
|
||||
sourceVal = cty.TupleVal([]cty.Value{sourceVal})
|
||||
sourceTy = sourceVal.Type()
|
||||
|
||||
}
|
||||
|
||||
// We'll compute our result type lazily if we need it. In the normal case
|
||||
@ -1675,7 +1731,20 @@ func (e *SplatExpr) Value(ctx *hcl.EvalContext) (cty.Value, hcl.Diagnostics) {
|
||||
// checking to proceed.
|
||||
ty, tyDiags := resultTy()
|
||||
diags = append(diags, tyDiags...)
|
||||
return cty.UnknownVal(ty), diags
|
||||
ret := cty.UnknownVal(ty)
|
||||
if ty != cty.DynamicPseudoType {
|
||||
ret = ret.RefineNotNull()
|
||||
}
|
||||
if ty.IsListType() && sourceVal.Type().IsCollectionType() {
|
||||
// We can refine the length of an unknown list result based on
|
||||
// the source collection's own length.
|
||||
sourceRng := sourceVal.Range()
|
||||
ret = ret.Refine().
|
||||
CollectionLengthLowerBound(sourceRng.LengthLowerBound()).
|
||||
CollectionLengthUpperBound(sourceRng.LengthUpperBound()).
|
||||
NewValue()
|
||||
}
|
||||
return ret.WithSameMarks(sourceVal), diags
|
||||
}
|
||||
|
||||
// Unmark the collection, and save the marks to apply to the returned
|
||||
|
23
vendor/github.com/hashicorp/hcl/v2/hclsyntax/expression_template.go
generated
vendored
23
vendor/github.com/hashicorp/hcl/v2/hclsyntax/expression_template.go
generated
vendored
@ -38,11 +38,9 @@ func (e *TemplateExpr) Value(ctx *hcl.EvalContext) (cty.Value, hcl.Diagnostics)
|
||||
|
||||
if partVal.IsNull() {
|
||||
diags = append(diags, &hcl.Diagnostic{
|
||||
Severity: hcl.DiagError,
|
||||
Summary: "Invalid template interpolation value",
|
||||
Detail: fmt.Sprintf(
|
||||
"The expression result is null. Cannot include a null value in a string template.",
|
||||
),
|
||||
Severity: hcl.DiagError,
|
||||
Summary: "Invalid template interpolation value",
|
||||
Detail: "The expression result is null. Cannot include a null value in a string template.",
|
||||
Subject: part.Range().Ptr(),
|
||||
Context: &e.SrcRange,
|
||||
Expression: part,
|
||||
@ -83,16 +81,29 @@ func (e *TemplateExpr) Value(ctx *hcl.EvalContext) (cty.Value, hcl.Diagnostics)
|
||||
continue
|
||||
}
|
||||
|
||||
buf.WriteString(strVal.AsString())
|
||||
// If we're just continuing to validate after we found an unknown value
|
||||
// then we'll skip appending so that "buf" will contain only the
|
||||
// known prefix of the result.
|
||||
if isKnown && !diags.HasErrors() {
|
||||
buf.WriteString(strVal.AsString())
|
||||
}
|
||||
}
|
||||
|
||||
var ret cty.Value
|
||||
if !isKnown {
|
||||
ret = cty.UnknownVal(cty.String)
|
||||
if !diags.HasErrors() { // Invalid input means our partial result buffer is suspect
|
||||
if knownPrefix := buf.String(); knownPrefix != "" {
|
||||
ret = ret.Refine().StringPrefix(knownPrefix).NewValue()
|
||||
}
|
||||
}
|
||||
} else {
|
||||
ret = cty.StringVal(buf.String())
|
||||
}
|
||||
|
||||
// A template rendering result is never null.
|
||||
ret = ret.RefineNotNull()
|
||||
|
||||
// Apply the full set of marks to the returned value
|
||||
return ret.WithMarks(marks), diags
|
||||
}
|
||||
|
Reference in New Issue
Block a user