diff options
author | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2013-04-24 13:29:19 +0300 |
---|---|---|
committer | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2013-04-24 13:49:53 +0300 |
commit | d3dd7475b4d89ca7860140b5a187757a50aed4e5 (patch) | |
tree | 8b5d4f4b016645301734b4f4eaba08088454cf49 | |
parent | 31ecd7b7123e83f24a73fd0908b47836c5bb26f7 (diff) | |
download | aconf-d3dd7475b4d89ca7860140b5a187757a50aed4e5.tar.bz2 aconf-d3dd7475b4d89ca7860140b5a187757a50aed4e5.tar.xz |
handle error when encountering a primitive value during search
-rw-r--r-- | acf/model/node.lua | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/acf/model/node.lua b/acf/model/node.lua index 09e3d69..b73cf52 100644 --- a/acf/model/node.lua +++ b/acf/model/node.lua @@ -74,12 +74,16 @@ end function TreeNode:search(path) if #path == 0 then return self end + + local cpath = getmetatable(self).path local name = path[1] local next = self[name] - if next == nil then - raise(getmetatable(self).path, 'Subordinate does not exist: '..name) - end + if next == nil then raise(cpath, 'Subordinate does not exist: '..name) end + table.remove(path, 1) + if #path > 0 and type(next) ~= 'table' then + raise(pth.join(cpath, name), 'Is a primitive value') + end return TreeNode.search(next, path) end |