aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Hill <bitbucket@bruce-hill.com>2018-08-30 14:21:18 -0700
committerBruce Hill <bitbucket@bruce-hill.com>2018-08-30 14:21:33 -0700
commit7f34b9f5efe805d604b4ef15e1afbe52c4701391 (patch)
tree7cabb0ec5fd4b948079445b4885ec90b9e371880
parent18126da9c538046a93715d829722c818773b9ac1 (diff)
Added safety check to detect non-number keys in lists.
-rw-r--r--containers.lua6
-rw-r--r--containers.moon4
2 files changed, 9 insertions, 1 deletions
diff --git a/containers.lua b/containers.lua
index 09de4e5..9ebbf71 100644
--- a/containers.lua
+++ b/containers.lua
@@ -107,7 +107,11 @@ local _list_mt = {
end
return nil
end
- }
+ },
+ __newindex = function(self, k, v)
+ assert(type(k) == 'number', "List indices must be numbers")
+ return rawset(self, k, v)
+ end
}
list = function(t)
return setmetatable(t, _list_mt)
diff --git a/containers.moon b/containers.moon
index deb5684..2441ccf 100644
--- a/containers.moon
+++ b/containers.moon
@@ -50,6 +50,10 @@ _list_mt =
if x == item
return i
return nil
+ -- TODO: remove this safety check to get better performance?
+ __newindex: (k,v)=>
+ assert type(k) == 'number', "List indices must be numbers"
+ rawset(@, k, v)
list = (t)-> setmetatable(t, _list_mt)