aboutsummaryrefslogtreecommitdiff
path: root/code_obj.moon
diff options
context:
space:
mode:
authorBruce Hill <bitbucket@bruce-hill.com>2018-05-16 19:08:16 -0700
committerBruce Hill <bitbucket@bruce-hill.com>2018-05-16 19:08:59 -0700
commitad94ed3653e2b7a9f68855670a32617aa80a637c (patch)
treebfde4d9e82635aea25336bfda4bf73e819347a93 /code_obj.moon
parent6f6c4377b236902566794c3d06820f3fdd7ec28c (diff)
Moved all the tree->lua and tree->nomsu code back into single functions
in nomsu.moon, and cleaned up how Vars are treated, since they are not atomic.
Diffstat (limited to 'code_obj.moon')
-rw-r--r--code_obj.moon17
1 files changed, 5 insertions, 12 deletions
diff --git a/code_obj.moon b/code_obj.moon
index ec5bc46..fbe202c 100644
--- a/code_obj.moon
+++ b/code_obj.moon
@@ -134,26 +134,20 @@ class Lua extends Code
return lua
add_free_vars: (vars)=>
+ return unless #vars > 0
seen = {[v]:true for v in *@free_vars}
for var in *vars
- if type(var) == 'userdata' and var.type == "Var"
- var = tostring(var\as_lua!)
- elseif type(var) != 'string'
- var = tostring(var)
- assert(var\match("^[_a-zA-Z][_a-zA-Z0-9]*$"))
+ assert(type(var) == 'userdata' and var.type == "Var")
unless seen[var]
@free_vars[#@free_vars+1] = var
seen[var] = true
@__str = nil
remove_free_vars: (vars)=>
+ return unless #vars > 0
removals = {}
for var in *vars
- if type(var) == 'userdata' and var.type == "Var"
- var = tostring(var\as_lua!)
- elseif type(var) != 'string'
- var = tostring(var)
- assert(var\match("^[_a-zA-Z][_a-zA-Z0-9]*$"))
+ assert(type(var) == 'userdata' and var.type == "Var")
removals[var] = true
stack = {self}
@@ -185,7 +179,6 @@ class Lua extends Code
for var in *@free_vars
unless seen[var]
seen[var] = true
- assert(var\match("^[_a-zA-Z][_a-zA-Z0-9]*$"))
to_declare[#to_declare+1] = var
for bit in *@bits
if bit.__class == Lua
@@ -193,7 +186,7 @@ class Lua extends Code
gather_from self
if #to_declare > 0
@remove_free_vars to_declare
- @prepend "local #{concat to_declare, ", "};\n"
+ @prepend "local #{concat [v\as_lua_id! for v in *to_declare], ", "};\n"
return to_declare
__tostring: =>