diff --git a/hclsyntax/expression.go b/hclsyntax/expression.go index f32f0d8..3b167be 100644 --- a/hclsyntax/expression.go +++ b/hclsyntax/expression.go @@ -624,6 +624,8 @@ func (e *ConditionalExpr) Value(ctx *hcl.EvalContext) (cty.Value, hcl.Diagnostic return cty.UnknownVal(resultType), diags } + // Unmark result before testing for truthiness + condResult, _ = condResult.UnmarkDeep() if condResult.True() { diags = append(diags, trueDiags...) if convs[0] != nil { diff --git a/hclsyntax/expression_test.go b/hclsyntax/expression_test.go index f4b4fdf..9885b89 100644 --- a/hclsyntax/expression_test.go +++ b/hclsyntax/expression_test.go @@ -1582,6 +1582,18 @@ EOT cty.DynamicVal, 0, }, + { // marked conditional + `var.foo ? 1 : 0`, + &hcl.EvalContext{ + Variables: map[string]cty.Value{ + "var": cty.ObjectVal(map[string]cty.Value{ + "foo": cty.BoolVal(true), + }).Mark("sensitive"), + }, + }, + cty.NumberIntVal(1), + 0, + }, } for _, test := range tests {