diff --git a/operator-selector.go b/operator-selector.go index e12bdc5..6943098 100644 --- a/operator-selector.go +++ b/operator-selector.go @@ -22,9 +22,19 @@ func trySelectorCase(ctx ExprContext, exprValue, caseSel any, caseIndex int) (ma selectedValue, err = caseData.caseExpr.Eval(ctx) match = true } else if filterList, ok := caseData.filterList.value().([]*term); ok { - if len(filterList) == 0 && exprValue == int64(caseIndex) { - selectedValue, err = caseData.caseExpr.Eval(ctx) - match = true + if len(filterList) == 0 { + var valueAsInt = int64(0) + if b, ok := exprValue.(bool); ok { + if !b { + valueAsInt = 1 + } + } else if valueAsInt, ok = exprValue.(int64); !ok { + return + } + if valueAsInt == int64(caseIndex) { + selectedValue, err = caseData.caseExpr.Eval(ctx) + match = true + } } else { var caseValue any for _, caseTerm := range filterList {