Skip to content

Commit 1f4c290

Browse files
detect deprecation marks in more places
1 parent d311e7e commit 1f4c290

13 files changed

+113
-9
lines changed

internal/terraform/eval_for_each.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ func (ev *forEachEvaluator) ResourceValue() (map[string]cty.Value, bool, tfdiags
9090
return res, false, diags
9191
}
9292

93+
forEachVal = marks.RemoveDeprecationMarks(forEachVal)
9394
if forEachVal.IsNull() || !forEachVal.IsKnown() || markSafeLengthInt(forEachVal) == 0 {
9495
// we check length, because an empty set returns a nil map which will panic below
9596
return res, true, diags

internal/terraform/node_action_instance.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,10 @@ 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-
if valDiags.HasErrors() {
74+
deprecationDiags := ctx.Deprecations().ValidateAsConfig(configVal, n.ModulePath())
75+
diags = diags.Append(deprecationDiags.InConfigBody(n.Config.Config, n.Addr.String()))
76+
77+
if diags.HasErrors() {
7578
return diags
7679
}
7780
}

internal/terraform/node_action_partialexp.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,12 @@ func (n *NodeActionDeclarationPartialExpanded) Execute(ctx EvalContext, op walkO
6868
if diags.HasErrors() {
6969
return diags
7070
}
71+
72+
deprecationDiags := ctx.Deprecations().ValidateAsConfig(configVal, n.ActionAddr().Module)
73+
diags = diags.Append(deprecationDiags)
74+
if diags.HasErrors() {
75+
return diags
76+
}
7177
}
7278
ctx.Actions().AddPartialExpandedAction(n.addr, configVal, n.resolvedProvider)
7379
return nil

internal/terraform/node_action_validate.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,10 @@ func (n *NodeValidatableAction) Execute(ctx EvalContext, _ walkOperation) tfdiag
107107
valDiags = validateResourceForbiddenEphemeralValues(ctx, configVal, schema.ConfigSchema)
108108
diags = diags.Append(valDiags.InConfigBody(config, n.Addr.String()))
109109

110+
if diags.HasErrors() {
111+
return diags
112+
}
113+
110114
// Use unmarked value for validate request
111115
unmarkedConfigVal, _ := configVal.UnmarkDeep()
112116
log.Printf("[TRACE] Validating config for %q", n.Addr)

internal/terraform/node_local.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,5 +237,10 @@ func evaluateLocalValue(config *configs.Local, localAddr addrs.LocalValue, addrS
237237
if val == cty.NilVal {
238238
val = cty.DynamicVal
239239
}
240+
241+
var deprecationDiags tfdiags.Diagnostics
242+
val, deprecationDiags = ctx.Deprecations().Validate(val, ctx.Path().Module(), expr.Range().Ptr())
243+
diags = diags.Append(deprecationDiags)
244+
240245
return val, diags
241246
}

internal/terraform/node_local_test.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,11 @@ func TestNodeLocalExecute(t *testing.T) {
5959

6060
EvaluateExprResult: test.Want,
6161
}
62+
scopedCtx := ctx.withScope(evalContextModuleInstance{
63+
Addr: addrs.RootModuleInstance,
64+
})
6265

63-
err := n.Execute(ctx, walkApply)
66+
err := n.Execute(scopedCtx, walkApply)
6467
if (err != nil) != test.Err {
6568
if err != nil {
6669
t.Errorf("unexpected error: %s", err)

internal/terraform/node_provider.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,16 @@ func (n *NodeApplyableProvider) ValidateProvider(ctx EvalContext, provider provi
7878
}
7979

8080
configVal, _, evalDiags := ctx.EvaluateBlock(configBody, configSchema, nil, EvalDataForNoInstanceKey)
81-
if evalDiags.HasErrors() {
82-
return diags.Append(evalDiags)
83-
}
8481
diags = diags.Append(evalDiags)
82+
if diags.HasErrors() {
83+
return diags
84+
}
85+
86+
deprecationDiags := ctx.Deprecations().ValidateAsConfig(configVal, n.Addr.Module)
87+
diags = diags.Append(deprecationDiags.InConfigBody(configBody, n.Addr.String()))
88+
if diags.HasErrors() {
89+
return diags
90+
}
8591

8692
// If our config value contains any marked values, ensure those are
8793
// stripped out before sending this to the provider

internal/terraform/node_resource_abstract_instance.go

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1787,6 +1787,10 @@ func (n *NodeAbstractResourceInstance) providerMetas(ctx EvalContext) (cty.Value
17871787
var configDiags tfdiags.Diagnostics
17881788
metaConfigVal, _, configDiags = ctx.EvaluateBlock(m.Config, providerSchema.ProviderMeta.Body, nil, EvalDataForNoInstanceKey)
17891789
diags = diags.Append(configDiags)
1790+
diags = diags.Append(
1791+
ctx.Deprecations().ValidateAsConfig(metaConfigVal, ctx.Path().Module()).InConfigBody(m.Config, n.Addr.String()),
1792+
)
1793+
metaConfigVal = marks.RemoveDeprecationMarks(metaConfigVal)
17901794
}
17911795
}
17921796
}
@@ -1863,6 +1867,10 @@ func (n *NodeAbstractResourceInstance) planDataSource(ctx EvalContext, checkRule
18631867
diags = diags.Append(
18641868
validateResourceForbiddenEphemeralValues(ctx, configVal, schema.Body).InConfigBody(n.Config.Config, n.Addr.String()),
18651869
)
1870+
diags = diags.Append(
1871+
ctx.Deprecations().ValidateAsConfig(configVal, ctx.Path().Module()).InConfigBody(n.Config.Config, n.Addr.String()),
1872+
)
1873+
configVal = marks.RemoveDeprecationMarks(configVal)
18661874
if diags.HasErrors() {
18671875
return nil, nil, deferred, keyData, diags
18681876
}
@@ -2200,6 +2208,14 @@ func (n *NodeAbstractResourceInstance) applyDataSource(ctx EvalContext, planned
22002208
return nil, keyData, diags
22012209
}
22022210

2211+
diags = diags.Append(
2212+
ctx.Deprecations().ValidateAsConfig(configVal, n.ModulePath()).InConfigBody(n.Config.Config, n.Addr.String()),
2213+
)
2214+
if diags.HasErrors() {
2215+
return nil, keyData, diags
2216+
}
2217+
configVal = marks.RemoveDeprecationMarks(configVal)
2218+
22032219
newVal, readDeferred, readDiags := n.readDataSource(ctx, configVal)
22042220
if check, nested := n.nestedInCheckBlock(); nested {
22052221
addr := check.Addr().Absolute(n.Addr.Module)
@@ -2511,6 +2527,8 @@ func (n *NodeAbstractResourceInstance) evalProvisionerConfig(ctx EvalContext, bo
25112527

25122528
config, _, configDiags := ctx.EvaluateBlock(body, schema, n.ResourceInstanceAddr().Resource, keyData)
25132529
diags = diags.Append(configDiags)
2530+
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(config, n.ModulePath()).InConfigBody(body, n.Addr.String()))
2531+
config = marks.RemoveDeprecationMarks(config)
25142532

25152533
return config, diags
25162534
}
@@ -2528,7 +2546,8 @@ func (n *NodeAbstractResourceInstance) evalDestroyProvisionerConfig(ctx EvalCont
25282546
evalScope := ctx.EvaluationScope(n.ResourceInstanceAddr().Resource, nil, keyData)
25292547
config, evalDiags := evalScope.EvalSelfBlock(body, self, schema, keyData)
25302548
diags = diags.Append(evalDiags)
2531-
2549+
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(config, n.ModulePath()).InConfigBody(body, n.Addr.String()))
2550+
config = marks.RemoveDeprecationMarks(config)
25322551
return config, diags
25332552
}
25342553

internal/terraform/node_resource_ephemeral.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,11 @@ func ephemeralResourceOpen(ctx EvalContext, inp ephemeralResourceInput) (*provid
7676
if diags.HasErrors() {
7777
return nil, diags
7878
}
79+
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(configVal, ctx.Path().Module()).InConfigBody(config.Config, inp.addr.String()))
80+
if diags.HasErrors() {
81+
return nil, diags
82+
}
83+
7984
unmarkedConfigVal, configMarks := configVal.UnmarkDeepWithPaths()
8085

8186
if !unmarkedConfigVal.IsWhollyKnown() {

internal/terraform/node_resource_plan_instance.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -662,6 +662,11 @@ func (n *NodePlannableResourceInstance) importState(ctx EvalContext, addr addrs.
662662
diags = diags.Append(configDiags)
663663
return nil, deferred, diags
664664
}
665+
diags = diags.Append(ctx.Deprecations().ValidateAsConfig(configVal, n.ModulePath()).InConfigBody(n.Config.Config, absAddr.String()))
666+
if diags.HasErrors() {
667+
return nil, deferred, diags
668+
}
669+
665670
configVal, _ = configVal.UnmarkDeep()
666671

667672
// Let's pretend we're reading the value as a data source so we

0 commit comments

Comments
 (0)