diff --git a/internal/plans/objchange/plan_valid.go b/internal/plans/objchange/plan_valid.go index c20241267b..5e9ac2a832 100644 --- a/internal/plans/objchange/plan_valid.go +++ b/internal/plans/objchange/plan_valid.go @@ -447,14 +447,10 @@ func assertPlannedObjectValid(schema *configschema.Object, prior, config, planne } case configschema.NestingSet: - if !planned.IsKnown() || !config.IsKnown() { - // if either is unknown we cannot check the lengths - return errs - } + plannedL := planned.Length() + configL := config.Length() - plannedL := planned.LengthInt() - configL := config.LengthInt() - if plannedL != configL { + if ok := plannedL.Range().Includes(configL); ok.IsKnown() && ok.False() { errs = append(errs, path.NewErrorf("count in plan (%#v) disagrees with count in config (%#v)", plannedL, configL)) return errs } diff --git a/internal/plans/objchange/plan_valid_test.go b/internal/plans/objchange/plan_valid_test.go index 56fb4cfa81..2b1a502f63 100644 --- a/internal/plans/objchange/plan_valid_test.go +++ b/internal/plans/objchange/plan_valid_test.go @@ -1700,7 +1700,7 @@ func TestAssertPlanValid(t *testing.T) { &configschema.Block{ Attributes: map[string]*configschema.Attribute{ "set": { - //Computed: true, + Computed: true, Optional: true, NestedType: &configschema.Object{ Nesting: configschema.NestingSet,