64 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright (c) 2024 Celestino Amoroso (celestino.amoroso@gmail.com).
 | |
| // All rights reserved.
 | |
| 
 | |
| // common-errors.go
 | |
| package expr
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| )
 | |
| 
 | |
| func errTooFewParams(funcName string, minArgs, maxArgs, argCount int) (err error) {
 | |
| 	if maxArgs < 0 {
 | |
| 		err = fmt.Errorf("%s(): too few params -- expected %d or more, got %d", funcName, minArgs, argCount)
 | |
| 	} else {
 | |
| 		err = fmt.Errorf("%s(): too few params -- expected %d, got %d", funcName, minArgs, argCount)
 | |
| 	}
 | |
| 	return
 | |
| }
 | |
| 
 | |
| func errTooMuchParams(funcName string, maxArgs, argCount int) (err error) {
 | |
| 	err = fmt.Errorf("%s(): too much params -- expected %d, got %d", funcName, maxArgs, argCount)
 | |
| 	return
 | |
| }
 | |
| 
 | |
| // --- General errors
 | |
| 
 | |
| func errCantConvert(funcName string, value any, kind string) error {
 | |
| 	if typer, ok := value.(Typer); ok {
 | |
| 		return fmt.Errorf("%s(): can't convert %s to %s", funcName, typer.TypeName(), kind)
 | |
| 	} else {
 | |
| 		return fmt.Errorf("%s(): can't convert %T to %s", funcName, value, kind)
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func errExpectedGot(funcName string, kind string, value any) error {
 | |
| 	return fmt.Errorf("%s() expected %s, got %T (%v)", funcName, kind, value, value)
 | |
| }
 | |
| 
 | |
| func errFuncDivisionByZero(funcName string) error {
 | |
| 	return fmt.Errorf("%s(): division by zero", funcName)
 | |
| }
 | |
| 
 | |
| func errDivisionByZero() error {
 | |
| 	return fmt.Errorf("division by zero")
 | |
| }
 | |
| 
 | |
| // --- Parameter errors
 | |
| 
 | |
| // func errOneParam(funcName string) error {
 | |
| // 	return fmt.Errorf("%s() requires exactly one param", funcName)
 | |
| // }
 | |
| 
 | |
| func errMissingRequiredParameter(funcName, paramName string) error {
 | |
| 	return fmt.Errorf("%s() missing required parameter %q", funcName, paramName)
 | |
| }
 | |
| 
 | |
| func errInvalidParameterValue(funcName, paramName string, paramValue any) error {
 | |
| 	return fmt.Errorf("%s() invalid value %T (%v) for parameter %q", funcName, paramValue, paramValue, paramName)
 | |
| }
 | |
| 
 | |
| func errWrongParamType(funcName, paramName, paramType string, paramValue any) error {
 | |
| 	return fmt.Errorf("%s() the %q parameter must be a %s, got a %T (%v)", funcName, paramName, paramType, paramValue, paramValue)
 | |
| }
 |