Merge pull request #433 from hashicorp/pselle/marked-for
Return an error for invalid for expressions with marks
This commit is contained in:
commit
d0b4a6862d
@ -1188,6 +1188,19 @@ func (e *ForExpr) Value(ctx *hcl.EvalContext) (cty.Value, hcl.Diagnostics) {
|
||||
continue
|
||||
}
|
||||
|
||||
if key.IsMarked() {
|
||||
diags = append(diags, &hcl.Diagnostic{
|
||||
Severity: hcl.DiagError,
|
||||
Summary: "Invalid object key",
|
||||
Detail: "Marked values cannot be used as object keys.",
|
||||
Subject: e.KeyExpr.Range().Ptr(),
|
||||
Context: &e.SrcRange,
|
||||
Expression: e.KeyExpr,
|
||||
EvalContext: childCtx,
|
||||
})
|
||||
continue
|
||||
}
|
||||
|
||||
val, valDiags := e.ValExpr.Value(childCtx)
|
||||
diags = append(diags, valDiags...)
|
||||
|
||||
|
@ -902,7 +902,37 @@ upper(
|
||||
}).Mark("sensitive"),
|
||||
0,
|
||||
},
|
||||
|
||||
{ // Marked map member carries marks through
|
||||
`{for k, v in things: k => !v}`,
|
||||
&hcl.EvalContext{
|
||||
Variables: map[string]cty.Value{
|
||||
"things": cty.MapVal(map[string]cty.Value{
|
||||
"a": cty.True.Mark("sensitive"),
|
||||
"b": cty.False,
|
||||
}),
|
||||
},
|
||||
},
|
||||
cty.ObjectVal(map[string]cty.Value{
|
||||
"a": cty.False.Mark("sensitive"),
|
||||
"b": cty.True,
|
||||
}),
|
||||
0,
|
||||
},
|
||||
{ // Error when using marked value as object key
|
||||
`{for v in things: v => "${v}-friend"}`,
|
||||
&hcl.EvalContext{
|
||||
Variables: map[string]cty.Value{
|
||||
"things": cty.MapVal(map[string]cty.Value{
|
||||
"a": cty.StringVal("rosie").Mark("sensitive"),
|
||||
"b": cty.StringVal("robin"),
|
||||
}),
|
||||
},
|
||||
},
|
||||
cty.ObjectVal(map[string]cty.Value{
|
||||
"robin": cty.StringVal("robin-friend"),
|
||||
}),
|
||||
1,
|
||||
},
|
||||
{
|
||||
`[{name: "Steve"}, {name: "Ermintrude"}].*.name`,
|
||||
nil,
|
||||
|
Loading…
Reference in New Issue
Block a user