diff options
author | Daniel Silverstone <dsilvers@digital-scurf.org> | 2017-05-13 12:23:03 +0100 |
---|---|---|
committer | Daniel Silverstone <dsilvers@digital-scurf.org> | 2017-05-13 12:23:03 +0100 |
commit | 7ccfa7a6f2d2f5d4b98bdc2035b11512c136e039 (patch) | |
tree | de0edb108cb8293cc4e9d112a9a005e088d8d38c /lib | |
parent | 039ceb50acc1849835679603d66daf9b8034364c (diff) | |
download | lace-7ccfa7a6f2d2f5d4b98bdc2035b11512c136e039.tar.gz |
Ensure defines used in include are checked for existing
Diffstat (limited to 'lib')
-rw-r--r-- | lib/lace/builtin.lua | 11 |
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) |