fix __Boolean__ and calcOr

This commit is contained in:
2023-06-21 00:18:52 +01:00
parent 40a1404534
commit 6495e7f9b9
4 changed files with 26 additions and 1 deletions

View File

@@ -589,6 +589,14 @@ func ArArray(arr []any) ArObject {
return false, ArErr{} return false, ArErr{}
}, },
} }
val.obj["__Boolean__"] = builtinFunc{
"__Boolean__",
func(args ...any) (any, ArErr) {
return len(
arr,
) > 0, ArErr{}
},
}
return val return val
} }

View File

@@ -318,5 +318,17 @@ func Map(m anymap) ArObject {
return keys, ArErr{} return keys, ArErr{}
}, },
} }
obj.obj["__Boolean__"] = builtinFunc{
"__Boolean__",
func(args ...any) (any, ArErr) {
mutex.RLock()
if len(m) == 0 {
mutex.RUnlock()
return false, ArErr{}
}
mutex.RUnlock()
return true, ArErr{}
},
}
return obj return obj
} }

View File

@@ -626,7 +626,7 @@ func calcOr(o operationType, stack stack, stacklevel int) (any, ArErr) {
return resp, ArErr{} return resp, ArErr{}
} }
resp, err = runVal( resp, err = runVal(
o.value1, o.value2,
stack, stack,
stacklevel+1, stacklevel+1,
) )

View File

@@ -639,5 +639,10 @@ func ArString(str string) ArObject {
} }
return ArArray(output), ArErr{} return ArArray(output), ArErr{}
}} }}
obj.obj["__Boolean__"] = builtinFunc{
"__Boolean__",
func(a ...any) (any, ArErr) {
return len(str) > 0, ArErr{}
}}
return obj return obj
} }