aboutsummaryrefslogtreecommitdiff
path: root/core/operators.nom
diff options
context:
space:
mode:
Diffstat (limited to 'core/operators.nom')
-rw-r--r--core/operators.nom9
1 files changed, 8 insertions, 1 deletions
diff --git a/core/operators.nom b/core/operators.nom
index 88b0374..fca56d5 100644
--- a/core/operators.nom
+++ b/core/operators.nom
@@ -163,7 +163,14 @@ immediately
# Unary operators
compile [- %] to: Lua value "(- \(% as lua expr))"
compile [not %] to: Lua value "(not \(% as lua expr))"
- compile [length of %list] to: Lua value "(#\(%list as lua expr))"
+ compile [length of %list] to
+ # A bit of a hack so that luajit works properly.
+ Lua value ".."
+ (function(l)
+ local mt = getmetatable(l);
+ if mt and mt.__len then return mt.__len(l) end
+ return #l
+ end)(\(%list as lua expr))
# Update operators
immediately