summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Silverstone <dsilvers@digital-scurf.org>2017-05-13 12:23:03 +0100
committerDaniel Silverstone <dsilvers@digital-scurf.org>2017-05-13 12:23:03 +0100
commit7ccfa7a6f2d2f5d4b98bdc2035b11512c136e039 (patch)
treede0edb108cb8293cc4e9d112a9a005e088d8d38c
parent039ceb50acc1849835679603d66daf9b8034364c (diff)
downloadlace-7ccfa7a6f2d2f5d4b98bdc2035b11512c136e039.tar.gz
Ensure defines used in include are checked for existing
-rw-r--r--lib/lace/builtin.lua11
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/lace/builtin.lua b/lib/lace/builtin.lua
index 5f32811..dfa4c04 100644
--- a/lib/lace/builtin.lua
+++ b/lib/lace/builtin.lua
@@ -409,6 +409,17 @@ function builtin.include(comp_context, cmd, file, ...)
return err.error("No ruleset named for inclusion", {1})
end
+ -- Check the conditions are defined
+ comp_context._lace.defined = (comp_context._lace.defined or {})
+ for i, dname in ipairs(conds) do
+ if dname:sub(1,1) == "!" then
+ dname = dname:sub(2)
+ end
+ if not comp_context._lace.defined[dname] then
+ return err.error("Undefined name used in include condition ("..dname..")", {i+1})
+ end
+ end
+
local loader = compiler().internal_loader(comp_context)
local real, content = loader(comp_context, file)