aboutsummaryrefslogtreecommitdiff
path: root/core/metaprogramming.nom
diff options
context:
space:
mode:
authorBruce Hill <bitbucket@bruce-hill.com>2018-03-05 18:44:26 -0800
committerBruce Hill <bitbucket@bruce-hill.com>2018-03-05 18:44:34 -0800
commit4c693d74746f35008808b1faa4c3f98efdf77931 (patch)
tree14d4d227bae59bd91c357c507bc05f45bb9b5849 /core/metaprogramming.nom
parent885c42bcfe51addd3e45771d3fdb738793ce3e45 (diff)
Updated for optional metadata support.
Diffstat (limited to 'core/metaprogramming.nom')
-rw-r--r--core/metaprogramming.nom12
1 files changed, 7 insertions, 5 deletions
diff --git a/core/metaprogramming.nom b/core/metaprogramming.nom
index fa589bd..373846b 100644
--- a/core/metaprogramming.nom
+++ b/core/metaprogramming.nom
@@ -32,7 +32,8 @@ immediately:
end
local lua_fn_args = table.concat(args, ", ");
local def_metadata = nomsu.tree_metadata[nomsu.compilestack[#nomsu.compilestack]];
- local code_location = ("%s:%s,%s"):format(def_metadata.filename, def_metadata.start, def_metadata.stop);
+ local code_location = (metadata and ("%s:%s,%s"):format(def_metadata.filename, def_metadata.start, def_metadata.stop)
+ or "<dynamically generated>");
return {statements=([[
nomsu:define_compile_action(]]..repr(stubs)..[[, ]]..repr(code_location)..[[, function(]]..lua_fn_args..[[)
]]..body_code.."\\n"..[[
@@ -67,8 +68,8 @@ immediately:
end
local lua_fn_args = table.concat(args, ", ");
local def_metadata = nomsu.tree_metadata[nomsu.compilestack[#nomsu.compilestack]];
- assert(def_metadata, "No metadata found for: "..tostring(nomsu.compilestack[#nomsu.compilestack]));
- local code_location = ("%s:%s,%s"):format(def_metadata.filename, def_metadata.start, def_metadata.stop);
+ local code_location = (metadata and ("%s:%s,%s"):format(def_metadata.filename, def_metadata.start, def_metadata.stop)
+ or "<dynamically generated>");
return {statements=[[
nomsu:define_action(]]..repr(stubs)..[[, ]]..repr(code_location)..[[, function(]]..lua_fn_args..[[)
]]..body_code.."\\n"..[[
@@ -100,7 +101,8 @@ immediately:
for i, a in ipairs(args) do replacements[i] = a.."="..a; end
replacements = "{"..table.concat(replacements, ", ").."}";
local def_metadata = nomsu.tree_metadata[nomsu.compilestack[#nomsu.compilestack]];
- local code_location = ("%s:%s,%s"):format(def_metadata.filename, def_metadata.start, def_metadata.stop);
+ local code_location = (metadata and ("%s:%s,%s"):format(def_metadata.filename, def_metadata.start, def_metadata.stop)
+ or "<dynamically generated>");
return {statements=[[
nomsu:define_compile_action(]]..repr(stubs)..[[, ]]..repr(code_location)..[[, function(]]..lua_fn_args..[[)
local template = nomsu:parse(]]..template..[[, ]]..repr(def_metadata.filename)..[[);
@@ -175,7 +177,7 @@ immediately:
compile [run %code] to {..}
expr: ".."
nomsu:run(\(%code as lua expr), '\
- =lua "nomsu.tree_metadata[nomsu.compilestack[#nomsu.compilestack]].filename"
+ =lua "nomsu:get_line_number(nomsu.compilestack[#nomsu.compilestack])"
..')
parse [enable debugging] as: lua> "nomsu.debug = true;"
parse [disable debugging] as: lua> "nomsu.debug = false;"