}
func (e *BinaryOpExpr) walkChildNodes(w internalWalkFunc) {
- e.LHS = w(e.LHS).(Expression)
- e.RHS = w(e.RHS).(Expression)
+ w(e.LHS)
+ w(e.RHS)
}
func (e *BinaryOpExpr) Value(ctx *hcl.EvalContext) (cty.Value, hcl.Diagnostics) {
lhsVal, err := convert.Convert(givenLHSVal, lhsParam.Type)
if err != nil {
diags = append(diags, &hcl.Diagnostic{
- Severity: hcl.DiagError,
- Summary: "Invalid operand",
- Detail: fmt.Sprintf("Unsuitable value for left operand: %s.", err),
- Subject: e.LHS.Range().Ptr(),
- Context: &e.SrcRange,
+ Severity: hcl.DiagError,
+ Summary: "Invalid operand",
+ Detail: fmt.Sprintf("Unsuitable value for left operand: %s.", err),
+ Subject: e.LHS.Range().Ptr(),
+ Context: &e.SrcRange,
+ Expression: e.LHS,
+ EvalContext: ctx,
})
}
rhsVal, err := convert.Convert(givenRHSVal, rhsParam.Type)
if err != nil {
diags = append(diags, &hcl.Diagnostic{
- Severity: hcl.DiagError,
- Summary: "Invalid operand",
- Detail: fmt.Sprintf("Unsuitable value for right operand: %s.", err),
- Subject: e.RHS.Range().Ptr(),
- Context: &e.SrcRange,
+ Severity: hcl.DiagError,
+ Summary: "Invalid operand",
+ Detail: fmt.Sprintf("Unsuitable value for right operand: %s.", err),
+ Subject: e.RHS.Range().Ptr(),
+ Context: &e.SrcRange,
+ Expression: e.RHS,
+ EvalContext: ctx,
})
}
if err != nil {
diags = append(diags, &hcl.Diagnostic{
// FIXME: This diagnostic is useless.
- Severity: hcl.DiagError,
- Summary: "Operation failed",
- Detail: fmt.Sprintf("Error during operation: %s.", err),
- Subject: &e.SrcRange,
+ Severity: hcl.DiagError,
+ Summary: "Operation failed",
+ Detail: fmt.Sprintf("Error during operation: %s.", err),
+ Subject: &e.SrcRange,
+ Expression: e,
+ EvalContext: ctx,
})
return cty.UnknownVal(e.Op.Type), diags
}
}
func (e *UnaryOpExpr) walkChildNodes(w internalWalkFunc) {
- e.Val = w(e.Val).(Expression)
+ w(e.Val)
}
func (e *UnaryOpExpr) Value(ctx *hcl.EvalContext) (cty.Value, hcl.Diagnostics) {
val, err := convert.Convert(givenVal, param.Type)
if err != nil {
diags = append(diags, &hcl.Diagnostic{
- Severity: hcl.DiagError,
- Summary: "Invalid operand",
- Detail: fmt.Sprintf("Unsuitable value for unary operand: %s.", err),
- Subject: e.Val.Range().Ptr(),
- Context: &e.SrcRange,
+ Severity: hcl.DiagError,
+ Summary: "Invalid operand",
+ Detail: fmt.Sprintf("Unsuitable value for unary operand: %s.", err),
+ Subject: e.Val.Range().Ptr(),
+ Context: &e.SrcRange,
+ Expression: e.Val,
+ EvalContext: ctx,
})
}
if err != nil {
diags = append(diags, &hcl.Diagnostic{
// FIXME: This diagnostic is useless.
- Severity: hcl.DiagError,
- Summary: "Operation failed",
- Detail: fmt.Sprintf("Error during operation: %s.", err),
- Subject: &e.SrcRange,
+ Severity: hcl.DiagError,
+ Summary: "Operation failed",
+ Detail: fmt.Sprintf("Error during operation: %s.", err),
+ Subject: &e.SrcRange,
+ Expression: e,
+ EvalContext: ctx,
})
return cty.UnknownVal(e.Op.Type), diags
}