diff options
| author | Bruce Hill <bitbucket@bruce-hill.com> | 2018-08-30 14:21:18 -0700 |
|---|---|---|
| committer | Bruce Hill <bitbucket@bruce-hill.com> | 2018-08-30 14:21:33 -0700 |
| commit | 7f34b9f5efe805d604b4ef15e1afbe52c4701391 (patch) | |
| tree | 7cabb0ec5fd4b948079445b4885ec90b9e371880 | |
| parent | 18126da9c538046a93715d829722c818773b9ac1 (diff) | |
Added safety check to detect non-number keys in lists.
| -rw-r--r-- | containers.lua | 6 | ||||
| -rw-r--r-- | containers.moon | 4 |
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) |
