diff options
Diffstat (limited to 'core/collections.nom')
| -rw-r--r-- | core/collections.nom | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/core/collections.nom b/core/collections.nom index 8553d66..8270f62 100644 --- a/core/collections.nom +++ b/core/collections.nom @@ -191,11 +191,16 @@ test: assume (({} with fallback % -> (% + 1)).10 == 11) compile [%dict with fallback %key -> %value] to (..) Lua value ".." - setmetatable(\(%dict as lua expr), {__index=function(self, \(%key as lua expr)) - local value = \(%value as lua expr) - self[\(%key as lua expr)] = value - return value - end}) + (function(d) + local mt = {} + for k,v in pairs(getmetatable(d) or {}) do mt[k] = v end + mt.__index = function(self, \(%key as lua expr)) + local value = \(%value as lua expr) + self[\(%key as lua expr)] = value + return value + end + return setmetatable(d, mt) + end)(\(%dict as lua expr)) # Sorting test: |
