2024-05-01 07:09:01 +02:00
|
|
|
// Copyright (c) 2024 Celestino Amoroso (celestino.amoroso@gmail.com).
|
|
|
|
// All rights reserved.
|
|
|
|
|
|
|
|
// common-errors.go
|
|
|
|
package expr
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
2024-07-28 18:49:08 +02:00
|
|
|
"strings"
|
2024-05-01 07:09:01 +02:00
|
|
|
)
|
|
|
|
|
2024-07-28 18:49:08 +02:00
|
|
|
func ErrMissingParams(funcName string, missing []string) (err error) {
|
|
|
|
return fmt.Errorf("%s(): missing params -- %s", funcName, strings.Join(missing, ", "))
|
|
|
|
}
|
|
|
|
|
2024-06-10 20:37:58 +02:00
|
|
|
func ErrTooFewParams(funcName string, minArgs, maxArgs, argCount int) (err error) {
|
2024-05-15 22:01:13 +02:00
|
|
|
if maxArgs < 0 {
|
2024-06-01 16:31:50 +02:00
|
|
|
err = fmt.Errorf("%s(): too few params -- expected %d or more, got %d", funcName, minArgs, argCount)
|
2024-05-15 22:01:13 +02:00
|
|
|
} else {
|
2024-06-01 16:31:50 +02:00
|
|
|
err = fmt.Errorf("%s(): too few params -- expected %d, got %d", funcName, minArgs, argCount)
|
2024-05-15 22:01:13 +02:00
|
|
|
}
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
2024-07-28 18:49:08 +02:00
|
|
|
func ErrTooManyParams(funcName string, maxArgs, argCount int) (err error) {
|
|
|
|
err = fmt.Errorf("%s(): too many params -- expected %d, got %d", funcName, maxArgs, argCount)
|
2024-05-15 22:01:13 +02:00
|
|
|
return
|
|
|
|
}
|
|
|
|
|
2024-05-01 07:09:01 +02:00
|
|
|
// --- General errors
|
|
|
|
|
2024-06-10 20:37:58 +02:00
|
|
|
func ErrCantConvert(funcName string, value any, kind string) error {
|
2024-06-10 09:37:27 +02:00
|
|
|
return fmt.Errorf("%s(): can't convert %s to %s", funcName, TypeName(value), kind)
|
2024-05-01 07:09:01 +02:00
|
|
|
}
|
|
|
|
|
2024-06-10 20:37:58 +02:00
|
|
|
func ErrExpectedGot(funcName string, kind string, value any) error {
|
|
|
|
return fmt.Errorf("%s(): expected %s, got %s (%v)", funcName, kind, TypeName(value), value)
|
2024-05-01 07:09:01 +02:00
|
|
|
}
|
|
|
|
|
2024-06-10 20:37:58 +02:00
|
|
|
func ErrFuncDivisionByZero(funcName string) error {
|
2024-06-01 16:31:50 +02:00
|
|
|
return fmt.Errorf("%s(): division by zero", funcName)
|
|
|
|
}
|
|
|
|
|
2024-06-26 04:23:14 +02:00
|
|
|
// func ErrDivisionByZero() error {
|
|
|
|
// return fmt.Errorf("division by zero")
|
|
|
|
// }
|
2024-05-13 14:23:21 +02:00
|
|
|
|
2024-05-01 07:09:01 +02:00
|
|
|
// --- Parameter errors
|
|
|
|
|
2024-06-26 04:23:14 +02:00
|
|
|
// func ErrMissingRequiredParameter(funcName, paramName string) error {
|
|
|
|
// return fmt.Errorf("%s(): missing required parameter %q", funcName, paramName)
|
|
|
|
// }
|
2024-05-01 07:09:01 +02:00
|
|
|
|
2024-06-10 20:37:58 +02:00
|
|
|
func ErrInvalidParameterValue(funcName, paramName string, paramValue any) error {
|
|
|
|
return fmt.Errorf("%s(): invalid value %s (%v) for parameter %q", funcName, TypeName(paramValue), paramValue, paramName)
|
2024-05-01 07:09:01 +02:00
|
|
|
}
|
|
|
|
|
2024-06-10 20:37:58 +02:00
|
|
|
func ErrWrongParamType(funcName, paramName, paramType string, paramValue any) error {
|
|
|
|
return fmt.Errorf("%s(): the %q parameter must be a %s, got a %s (%v)", funcName, paramName, paramType, TypeName(paramValue), paramValue)
|
2024-05-01 07:09:01 +02:00
|
|
|
}
|
2024-07-06 05:54:53 +02:00
|
|
|
|
2024-07-31 09:11:57 +02:00
|
|
|
func ErrUnknownParam(funcName, paramName string) error {
|
|
|
|
return fmt.Errorf("%s(): unknown parameter %q", funcName, paramName)
|
|
|
|
}
|
|
|
|
|
2024-07-06 05:54:53 +02:00
|
|
|
// --- Operator errors
|
|
|
|
|
|
|
|
func ErrLeftOperandMustBeVariable(leftTerm, opTerm *term) error {
|
|
|
|
return leftTerm.Errorf("left operand of %q must be a variable", opTerm.source())
|
|
|
|
}
|