summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2013-04-24 13:29:19 +0300
committerKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2013-04-24 13:49:53 +0300
commitd3dd7475b4d89ca7860140b5a187757a50aed4e5 (patch)
tree8b5d4f4b016645301734b4f4eaba08088454cf49
parent31ecd7b7123e83f24a73fd0908b47836c5bb26f7 (diff)
downloadaconf-d3dd7475b4d89ca7860140b5a187757a50aed4e5.tar.bz2
aconf-d3dd7475b4d89ca7860140b5a187757a50aed4e5.tar.xz
handle error when encountering a primitive value during search
-rw-r--r--acf/model/node.lua10
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