self param replaced as opTerm
This commit is contained in:
+15
-15
@@ -16,23 +16,23 @@ func newDefaultTerm(tk *Token) (inst *term) {
|
||||
}
|
||||
}
|
||||
|
||||
func evalDefault(ctx ExprContext, self *term) (v any, err error) {
|
||||
func evalDefault(ctx ExprContext, opTerm *term) (v any, err error) {
|
||||
var rightValue any
|
||||
|
||||
if err = self.checkOperands(); err != nil {
|
||||
if err = opTerm.checkOperands(); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
leftTerm := self.children[0]
|
||||
leftTerm := opTerm.children[0]
|
||||
if leftTerm.tk.Sym != SymVariable {
|
||||
// err = leftTerm.Errorf("left operand of %q must be a variable", self.tk.source)
|
||||
err = ErrLeftOperandMustBeVariable(leftTerm, self)
|
||||
err = ErrLeftOperandMustBeVariable(leftTerm, opTerm)
|
||||
return
|
||||
}
|
||||
|
||||
if leftValue, exists := ctx.GetVar(leftTerm.source()); exists {
|
||||
v = leftValue
|
||||
} else if rightValue, err = self.children[1].compute(ctx); err == nil {
|
||||
} else if rightValue, err = opTerm.children[1].compute(ctx); err == nil {
|
||||
v = rightValue
|
||||
}
|
||||
return
|
||||
@@ -50,22 +50,22 @@ func newAlternateTerm(tk *Token) (inst *term) {
|
||||
}
|
||||
}
|
||||
|
||||
func evalAlternate(ctx ExprContext, self *term) (v any, err error) {
|
||||
func evalAlternate(ctx ExprContext, opTerm *term) (v any, err error) {
|
||||
var rightValue any
|
||||
|
||||
if err = self.checkOperands(); err != nil {
|
||||
if err = opTerm.checkOperands(); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
leftTerm := self.children[0]
|
||||
leftTerm := opTerm.children[0]
|
||||
if leftTerm.tk.Sym != SymVariable {
|
||||
// err = leftTerm.Errorf("left operand of %q must be a variable", self.tk.source)
|
||||
err = ErrLeftOperandMustBeVariable(leftTerm, self)
|
||||
err = ErrLeftOperandMustBeVariable(leftTerm, opTerm)
|
||||
return
|
||||
}
|
||||
|
||||
if leftValue, exists := ctx.GetVar(leftTerm.source()); exists && leftValue != nil {
|
||||
if rightValue, err = self.children[1].compute(ctx); err == nil {
|
||||
if rightValue, err = opTerm.children[1].compute(ctx); err == nil {
|
||||
v = rightValue
|
||||
}
|
||||
} else {
|
||||
@@ -86,23 +86,23 @@ func newDefaultAssignTerm(tk *Token) (inst *term) {
|
||||
}
|
||||
}
|
||||
|
||||
func evalAssignDefault(ctx ExprContext, self *term) (v any, err error) {
|
||||
func evalAssignDefault(ctx ExprContext, opTerm *term) (v any, err error) {
|
||||
var rightValue any
|
||||
|
||||
if err = self.checkOperands(); err != nil {
|
||||
if err = opTerm.checkOperands(); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
leftTerm := self.children[0]
|
||||
leftTerm := opTerm.children[0]
|
||||
if leftTerm.tk.Sym != SymVariable {
|
||||
// err = leftTerm.Errorf("left operand of %q must be a variable", self.tk.source)
|
||||
err = ErrLeftOperandMustBeVariable(leftTerm, self)
|
||||
err = ErrLeftOperandMustBeVariable(leftTerm, opTerm)
|
||||
return
|
||||
}
|
||||
|
||||
if leftValue, exists := ctx.GetVar(leftTerm.source()); exists {
|
||||
v = leftValue
|
||||
} else if rightValue, err = self.children[1].compute(ctx); err == nil {
|
||||
} else if rightValue, err = opTerm.children[1].compute(ctx); err == nil {
|
||||
if functor, ok := rightValue.(Functor); ok {
|
||||
//ctx.RegisterFunc(leftTerm.source(), functor, 0, -1)
|
||||
ctx.RegisterFunc(leftTerm.source(), functor, TypeAny, []ExprFuncParam{
|
||||
|
||||
Reference in New Issue
Block a user