add __dir__ function for maps

This commit is contained in:
2023-06-19 12:32:51 +01:00
parent dc2e62bbdb
commit 3f048ce645
4 changed files with 36 additions and 5 deletions

View File

@@ -163,6 +163,26 @@ func makeGlobal() ArObject {
for key := range x.obj {
newarray = append(newarray, key)
}
if callable, ok := x.obj["__dir__"]; ok {
resp, err := runCall(
call{
callable: callable,
args: []any{},
},
stack{newscope()},
0,
)
if err.EXISTS {
return nil, err
}
resp = ArValidToAny(resp)
switch x := resp.(type) {
case []any:
newarray = append(newarray, x...)
default:
return nil, ArErr{TYPE: "TypeError", message: "__dir__ returned type '" + typeof(x) + "'", EXISTS: true}
}
}
return ArArray(newarray), ArErr{}
}
return ArArray([]any{}), ArErr{}