From 7f34b9f5efe805d604b4ef15e1afbe52c4701391 Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Thu, 30 Aug 2018 14:21:18 -0700 Subject: Added safety check to detect non-number keys in lists. --- containers.lua | 6 +++++- containers.moon | 4 ++++ 2 files changed, 9 insertions(+), 1 deletion(-) 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) -- cgit v1.2.3