aboutsummaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/metaprogramming.nom6
-rw-r--r--core/operators.nom11
2 files changed, 4 insertions, 13 deletions
diff --git a/core/metaprogramming.nom b/core/metaprogramming.nom
index 5d31c2b..c50f783 100644
--- a/core/metaprogramming.nom
+++ b/core/metaprogramming.nom
@@ -197,16 +197,14 @@ compile [parse %actions as %body] to (..)
end
local \%new_body = LuaCode(\%body.source,
"local mangle = mangler()",
- "\\nlocal tree = ", make_tree(\%body),
- "\\nlocal lua = nomsu:compile(tree)",
- "\\nreturn lua")
+ "\\nreturn ", make_tree(\%body))
local ret = \(compile as (compile %actions to %new_body))
return ret"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# TODO: add check for .is_value
-compile [%tree as lua expr] to (Lua value "nomsu:compile(\(=lua "nomsu:compile(\%tree)"))")
+compile [%tree as lua expr] to (Lua value "nomsu:compile(\(=lua "nomsu:compile(\%tree, nil, true)"), nil, true)")
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/core/operators.nom b/core/operators.nom
index 161bf83..3ae7c2f 100644
--- a/core/operators.nom
+++ b/core/operators.nom
@@ -27,16 +27,9 @@ test:
# Variable assignment operator
compile [%var = %value] to:
- lua> "local \%var_lua = \(%var as lua)"
+ lua> "local \%var_lua = \(%var as lua expr)"
assume %var_lua.is_value or barf "Invalid target for assignment: \%var"
- lua> "\
- ..\%value = \%value:map(function(t)
- if Action:is_instance(t) and t.stub == "?" then
- return \%var
- end
- end)
- local \%value_lua = \(%value as lua)"
-
+ lua> "local \%value_lua = \(%value as lua expr)"
assume %value_lua.is_value or barf "Invalid value for assignment: \%value"
lua> "\
..local lua = LuaCode(tree.source, \%var_lua, ' = ', \%value_lua, ';')