Skip to content

Commit de41238

Browse files
limit the amount of additional remove deprecation mark calls
1 parent 29f717f commit de41238

11 files changed

+71
-47
lines changed

internal/deprecation/deprecation.go

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -84,12 +84,15 @@ func (d *Deprecations) deprecationMarksToDiagnostics(deprecationMarks []marks.De
8484
// ValidateAsConfig checks the given value for deprecation marks and returns diagnostics
8585
// for each deprecation found, unless deprecation warnings are suppressed for the given module.
8686
// It checks for deeply nested deprecation marks as well.
87-
func (d *Deprecations) ValidateAsConfig(value cty.Value, schema *configschema.Block, module addrs.Module) tfdiags.Diagnostics {
87+
func (d *Deprecations) ValidateAsConfig(value cty.Value, schema *configschema.Block, module addrs.Module) (cty.Value, tfdiags.Diagnostics) {
8888
var diags tfdiags.Diagnostics
89-
_, pvms := value.UnmarkDeepWithPaths()
89+
unmarked, pvms := value.UnmarkDeepWithPaths()
9090

91-
if len(pvms) == 0 || d.IsModuleCallDeprecationSuppressed(module) {
92-
return diags
91+
// Even if we don't want to get deprecation warnings we want to remove the marks
92+
newVal := unmarked.MarkWithPaths(marks.RemoveAll(pvms, marks.Deprecation))
93+
94+
if d.IsModuleCallDeprecationSuppressed(module) {
95+
return newVal, diags
9396
}
9497

9598
for _, pvm := range pvms {
@@ -118,7 +121,8 @@ func (d *Deprecations) ValidateAsConfig(value cty.Value, schema *configschema.Bl
118121
}
119122
}
120123
}
121-
return diags
124+
125+
return newVal, diags
122126
}
123127

124128
func (d *Deprecations) IsModuleCallDeprecationSuppressed(addr addrs.Module) bool {

internal/terraform/node_action_instance.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,8 @@ func (n *NodeActionDeclarationInstance) Execute(ctx EvalContext, _ walkOperation
7171
valDiags := validateResourceForbiddenEphemeralValues(ctx, configVal, n.Schema.ConfigSchema)
7272
diags = diags.Append(valDiags.InConfigBody(n.Config.Config, n.Addr.String()))
7373

74-
deprecationDiags := ctx.Deprecations().ValidateAsConfig(configVal, n.Schema.ConfigSchema, n.ModulePath())
74+
var deprecationDiags tfdiags.Diagnostics
75+
configVal, deprecationDiags = ctx.Deprecations().ValidateAsConfig(configVal, n.Schema.ConfigSchema, n.ModulePath())
7576
diags = diags.Append(deprecationDiags.InConfigBody(n.Config.Config, n.Addr.String()))
7677

7778
if diags.HasErrors() {

internal/terraform/node_action_partialexp.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,8 @@ func (n *NodeActionDeclarationPartialExpanded) Execute(ctx EvalContext, op walkO
6868
if diags.HasErrors() {
6969
return diags
7070
}
71-
72-
deprecationDiags := ctx.Deprecations().ValidateAsConfig(configVal, n.Schema.ConfigSchema, n.ActionAddr().Module)
71+
var deprecationDiags tfdiags.Diagnostics
72+
configVal, deprecationDiags = ctx.Deprecations().ValidateAsConfig(configVal, n.Schema.ConfigSchema, n.ActionAddr().Module)
7373
diags = diags.Append(deprecationDiags)
7474
if diags.HasErrors() {
7575
return diags

internal/terraform/node_action_validate.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,9 @@ func (n *NodeValidatableAction) Execute(ctx EvalContext, _ walkOperation) tfdiag
101101
return diags
102102
}
103103
}
104-
105-
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(configVal, schema.ConfigSchema, n.ModulePath()).InConfigBody(n.Config.Config, n.Addr.String()))
104+
var deprecationDiags tfdiags.Diagnostics
105+
configVal, deprecationDiags = ctx.Deprecations().ValidateAsConfig(configVal, schema.ConfigSchema, n.ModulePath())
106+
diags = diags.Append(deprecationDiags.InConfigBody(n.Config.Config, n.Addr.String()))
106107

107108
valDiags = validateResourceForbiddenEphemeralValues(ctx, configVal, schema.ConfigSchema)
108109
diags = diags.Append(valDiags.InConfigBody(config, n.Addr.String()))

internal/terraform/node_provider.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,8 @@ func (n *NodeApplyableProvider) ValidateProvider(ctx EvalContext, provider provi
8383
return diags
8484
}
8585

86-
deprecationDiags := ctx.Deprecations().ValidateAsConfig(configVal, configSchema, n.Addr.Module)
86+
var deprecationDiags tfdiags.Diagnostics
87+
configVal, deprecationDiags = ctx.Deprecations().ValidateAsConfig(configVal, configSchema, n.Addr.Module)
8788
diags = diags.Append(deprecationDiags.InConfigBody(configBody, n.Addr.String()))
8889
if diags.HasErrors() {
8990
return diags

internal/terraform/node_resource_abstract_instance.go

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -866,7 +866,9 @@ func (n *NodeAbstractResourceInstance) plan(
866866
diags = diags.Append(
867867
validateResourceForbiddenEphemeralValues(ctx, origConfigVal, schema.Body).InConfigBody(n.Config.Config, n.Addr.String()),
868868
)
869-
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(origConfigVal, schema.Body, n.ModulePath()).InConfigBody(n.Config.Config, n.Addr.String()))
869+
var deprecationDiags tfdiags.Diagnostics
870+
origConfigVal, deprecationDiags = ctx.Deprecations().ValidateAsConfig(origConfigVal, schema.Body, n.ModulePath())
871+
diags = diags.Append(deprecationDiags.InConfigBody(n.Config.Config, n.Addr.String()))
870872
if diags.HasErrors() {
871873
return nil, nil, deferred, keyData, diags
872874
}
@@ -1772,10 +1774,9 @@ func (n *NodeAbstractResourceInstance) providerMetas(ctx EvalContext) (cty.Value
17721774
var configDiags tfdiags.Diagnostics
17731775
metaConfigVal, _, configDiags = ctx.EvaluateBlock(m.Config, providerSchema.ProviderMeta.Body, nil, EvalDataForNoInstanceKey)
17741776
diags = diags.Append(configDiags)
1775-
diags = diags.Append(
1776-
ctx.Deprecations().ValidateAsConfig(metaConfigVal, providerSchema.ProviderMeta.Body, ctx.Path().Module()).InConfigBody(m.Config, n.Addr.String()),
1777-
)
1778-
metaConfigVal = marks.RemoveDeprecationMarks(metaConfigVal)
1777+
var deprecationDiags tfdiags.Diagnostics
1778+
metaConfigVal, deprecationDiags = ctx.Deprecations().ValidateAsConfig(metaConfigVal, providerSchema.ProviderMeta.Body, ctx.Path().Module())
1779+
diags = diags.Append(deprecationDiags.InConfigBody(m.Config, n.Addr.String()))
17791780
}
17801781
}
17811782
}
@@ -1852,10 +1853,11 @@ func (n *NodeAbstractResourceInstance) planDataSource(ctx EvalContext, checkRule
18521853
diags = diags.Append(
18531854
validateResourceForbiddenEphemeralValues(ctx, configVal, schema.Body).InConfigBody(n.Config.Config, n.Addr.String()),
18541855
)
1855-
diags = diags.Append(
1856-
ctx.Deprecations().ValidateAsConfig(configVal, schema.Body, ctx.Path().Module()).InConfigBody(n.Config.Config, n.Addr.String()),
1857-
)
1858-
configVal = marks.RemoveDeprecationMarks(configVal)
1856+
1857+
var deprecationDiags tfdiags.Diagnostics
1858+
configVal, deprecationDiags = ctx.Deprecations().ValidateAsConfig(configVal, schema.Body, ctx.Path().Module())
1859+
diags = diags.Append(deprecationDiags.InConfigBody(n.Config.Config, n.Addr.String()))
1860+
18591861
if diags.HasErrors() {
18601862
return nil, nil, deferred, keyData, diags
18611863
}
@@ -2193,13 +2195,13 @@ func (n *NodeAbstractResourceInstance) applyDataSource(ctx EvalContext, planned
21932195
return nil, keyData, diags
21942196
}
21952197

2196-
diags = diags.Append(
2197-
ctx.Deprecations().ValidateAsConfig(configVal, schema.Body, n.ModulePath()).InConfigBody(n.Config.Config, n.Addr.String()),
2198-
)
2198+
var deprecationDiags tfdiags.Diagnostics
2199+
configVal, deprecationDiags = ctx.Deprecations().ValidateAsConfig(configVal, schema.Body, n.ModulePath())
2200+
diags = diags.Append(deprecationDiags.InConfigBody(n.Config.Config, n.Addr.String()))
2201+
21992202
if diags.HasErrors() {
22002203
return nil, keyData, diags
22012204
}
2202-
configVal = marks.RemoveDeprecationMarks(configVal)
22032205

22042206
newVal, readDeferred, readDiags := n.readDataSource(ctx, configVal)
22052207
if check, nested := n.nestedInCheckBlock(); nested {
@@ -2512,8 +2514,9 @@ func (n *NodeAbstractResourceInstance) evalProvisionerConfig(ctx EvalContext, bo
25122514

25132515
config, _, configDiags := ctx.EvaluateBlock(body, schema, n.ResourceInstanceAddr().Resource, keyData)
25142516
diags = diags.Append(configDiags)
2515-
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(config, schema, n.ModulePath()).InConfigBody(body, n.Addr.String()))
2516-
config = marks.RemoveDeprecationMarks(config)
2517+
var deprecationDiags tfdiags.Diagnostics
2518+
config, deprecationDiags = ctx.Deprecations().ValidateAsConfig(config, schema, n.ModulePath())
2519+
diags = diags.Append(deprecationDiags.InConfigBody(body, n.Addr.String()))
25172520

25182521
return config, diags
25192522
}
@@ -2531,8 +2534,9 @@ func (n *NodeAbstractResourceInstance) evalDestroyProvisionerConfig(ctx EvalCont
25312534
evalScope := ctx.EvaluationScope(n.ResourceInstanceAddr().Resource, nil, keyData)
25322535
config, evalDiags := evalScope.EvalSelfBlock(body, self, schema, keyData)
25332536
diags = diags.Append(evalDiags)
2534-
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(config, schema, n.ModulePath()).InConfigBody(body, n.Addr.String()))
2535-
config = marks.RemoveDeprecationMarks(config)
2537+
var deprecationDiags tfdiags.Diagnostics
2538+
config, deprecationDiags = ctx.Deprecations().ValidateAsConfig(config, schema, n.ModulePath())
2539+
diags = diags.Append(deprecationDiags.InConfigBody(body, n.Addr.String()))
25362540
return config, diags
25372541
}
25382542

internal/terraform/node_resource_ephemeral.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,9 @@ func ephemeralResourceOpen(ctx EvalContext, inp ephemeralResourceInput) (*provid
7676
if diags.HasErrors() {
7777
return nil, diags
7878
}
79-
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(configVal, schema.Body, ctx.Path().Module()).InConfigBody(config.Config, inp.addr.String()))
79+
var deprecationDiags tfdiags.Diagnostics
80+
configVal, deprecationDiags = ctx.Deprecations().ValidateAsConfig(configVal, schema.Body, ctx.Path().Module())
81+
diags = diags.Append(deprecationDiags.InConfigBody(config.Config, inp.addr.String()))
8082
if diags.HasErrors() {
8183
return nil, diags
8284
}

internal/terraform/node_resource_plan_instance.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -638,7 +638,9 @@ func (n *NodePlannableResourceInstance) importState(ctx EvalContext, addr addrs.
638638
diags = diags.Append(configDiags)
639639
return nil, deferred, diags
640640
}
641-
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(configVal, schema.Body, n.ModulePath()).InConfigBody(n.Config.Config, absAddr.String()))
641+
var deprecationDiags tfdiags.Diagnostics
642+
configVal, deprecationDiags = ctx.Deprecations().ValidateAsConfig(configVal, schema.Body, n.ModulePath())
643+
diags = diags.Append(deprecationDiags.InConfigBody(n.Config.Config, absAddr.String()))
642644
if diags.HasErrors() {
643645
return nil, deferred, diags
644646
}

internal/terraform/node_resource_plan_instance_query.go

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import (
88
"log"
99

1010
"github.com/hashicorp/terraform/internal/addrs"
11-
"github.com/hashicorp/terraform/internal/lang/marks"
1211
"github.com/hashicorp/terraform/internal/plans"
1312
"github.com/hashicorp/terraform/internal/providers"
1413
"github.com/hashicorp/terraform/internal/tfdiags"
@@ -50,8 +49,9 @@ func (n *NodePlannableResourceInstance) listResourceExecute(ctx EvalContext) (di
5049
if diags.HasErrors() {
5150
return diags
5251
}
53-
54-
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(blockVal, schema.FullSchema, n.ModulePath()).InConfigBody(config.Config, n.Addr.String()))
52+
var deprecationDiags tfdiags.Diagnostics
53+
blockVal, deprecationDiags = ctx.Deprecations().ValidateAsConfig(blockVal, schema.FullSchema, n.ModulePath())
54+
diags = diags.Append(deprecationDiags.InConfigBody(config.Config, n.Addr.String()))
5555
if diags.HasErrors() {
5656
return diags
5757
}
@@ -74,7 +74,6 @@ func (n *NodePlannableResourceInstance) listResourceExecute(ctx EvalContext) (di
7474
var limitDeprecationDiags tfdiags.Diagnostics
7575
limitCty, limitDeprecationDiags = ctx.Deprecations().Validate(limitCty, ctx.Path().Module(), config.List.Limit.Range().Ptr())
7676
diags = diags.Append(limitDeprecationDiags)
77-
limitCty = marks.RemoveDeprecationMarks(limitCty)
7877
}
7978

8079
includeRscCty, includeRsc, includeDiags := newIncludeRscEvaluator(false).EvaluateExpr(ctx, config.List.IncludeResource)
@@ -87,7 +86,6 @@ func (n *NodePlannableResourceInstance) listResourceExecute(ctx EvalContext) (di
8786
var includeDeprecationDiags tfdiags.Diagnostics
8887
includeRscCty, includeDeprecationDiags = ctx.Deprecations().Validate(includeRscCty, ctx.Path().Module(), config.List.IncludeResource.Range().Ptr())
8988
diags = diags.Append(includeDeprecationDiags)
90-
includeRscCty = marks.RemoveDeprecationMarks(includeRscCty)
9189
}
9290

9391
rId := HookResourceIdentity{

internal/terraform/node_resource_plan_partialexp.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,9 @@ func (n *nodePlannablePartialExpandedResource) managedResourceExecute(ctx EvalCo
200200
return &change, diags
201201
}
202202

203-
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(configVal, schema.Body, n.ResourceAddr().Module).InConfigBody(n.config.Config, n.addr.String()))
203+
var deprecationDiags tfdiags.Diagnostics
204+
configVal, deprecationDiags = ctx.Deprecations().ValidateAsConfig(configVal, schema.Body, n.ResourceAddr().Module)
205+
diags = diags.Append(deprecationDiags.InConfigBody(n.config.Config, n.addr.String()))
204206
if diags.HasErrors() {
205207
return &change, diags
206208
}
@@ -359,7 +361,9 @@ func (n *nodePlannablePartialExpandedResource) dataResourceExecute(ctx EvalConte
359361
return &change, diags
360362
}
361363

362-
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(configVal, schema.Body, n.ResourceAddr().Module).InConfigBody(n.config.Config, n.addr.String()))
364+
var deprecationDiags tfdiags.Diagnostics
365+
configVal, deprecationDiags = ctx.Deprecations().ValidateAsConfig(configVal, schema.Body, n.ResourceAddr().Module)
366+
diags = diags.Append(deprecationDiags.InConfigBody(n.config.Config, n.addr.String()))
363367
if diags.HasErrors() {
364368
return &change, diags
365369
}

0 commit comments

Comments
 (0)