IsOptional() function of ExprFuncParam renamed as IdDefault(). A new IsOptional() function created to check if a param is optional without requiring a default value

This commit is contained in:
2024-06-07 09:45:02 +02:00
parent 227944b3fb
commit 115ce26ce9
12 changed files with 44 additions and 25 deletions
+3 -2
View File
@@ -30,7 +30,7 @@ func checkFunctionCall(ctx ExprContext, name string, varParams *[]any) (err erro
}
for i, p := range info.Params() {
if i >= passedCount {
if !p.IsOptional() {
if !p.IsDefault() {
break
}
*varParams = append(*varParams, p.DefaultValue())
@@ -50,6 +50,7 @@ func checkFunctionCall(ctx ExprContext, name string, varParams *[]any) (err erro
func evalFuncCall(parentCtx ExprContext, self *term) (v any, err error) {
ctx := cloneContext(parentCtx)
ctx.SetParent(parentCtx)
name, _ := self.tk.Value.(string)
params := make([]any, len(self.children), len(self.children)+5)
for i, tree := range self.children {
@@ -91,7 +92,7 @@ func evalFuncDef(ctx ExprContext, self *term) (v any, err error) {
var defValue any
flags := paramFlags(0)
if len(param.children) > 0 {
flags |= PfOptional
flags |= PfDefault
if defValue, err = param.children[0].compute(ctx); err != nil {
return
}