lua: Fix exception on literal empty list
authorDov Murik <dov.murik@gmail.com>
Mon, 28 Mar 2016 02:26:14 +0000 (22:26 -0400)
committerDov Murik <dov.murik@gmail.com>
Mon, 28 Mar 2016 02:26:14 +0000 (22:26 -0400)
Issue #190

lua/step3_env.lua
lua/step4_if_fn_do.lua
lua/step5_tco.lua
lua/step6_file.lua
lua/step7_quote.lua
lua/step8_macros.lua
lua/step9_try.lua
lua/stepA_mal.lua

index dbdb879..24cdfc7 100755 (executable)
@@ -39,6 +39,7 @@ function EVAL(ast, env)
     if not types._list_Q(ast) then return eval_ast(ast, env) end
 
     local a0,a1,a2 = ast[1], ast[2],ast[3]
+    if not a0 then return ast end
     local a0sym = types._symbol_Q(a0) and a0.val or ""
     if 'def!' == a0sym then
         return env:set(a1, EVAL(a2, env))
index 65b3a0a..46302d1 100755 (executable)
@@ -40,6 +40,7 @@ function EVAL(ast, env)
     if not types._list_Q(ast) then return eval_ast(ast, env) end
 
     local a0,a1,a2,a3 = ast[1], ast[2],ast[3],ast[4]
+    if not a0 then return ast end
     local a0sym = types._symbol_Q(a0) and a0.val or ""
     if 'def!' == a0sym then
         return env:set(a1, EVAL(a2, env))
index 237f5ea..b3d7795 100755 (executable)
@@ -41,6 +41,7 @@ function EVAL(ast, env)
     if not types._list_Q(ast) then return eval_ast(ast, env) end
 
     local a0,a1,a2,a3 = ast[1], ast[2],ast[3],ast[4]
+    if not a0 then return ast end
     local a0sym = types._symbol_Q(a0) and a0.val or ""
     if 'def!' == a0sym then
         return env:set(a1, EVAL(a2, env))
index 7992888..63d0208 100755 (executable)
@@ -41,6 +41,7 @@ function EVAL(ast, env)
     if not types._list_Q(ast) then return eval_ast(ast, env) end
 
     local a0,a1,a2,a3 = ast[1], ast[2],ast[3],ast[4]
+    if not a0 then return ast end
     local a0sym = types._symbol_Q(a0) and a0.val or ""
     if 'def!' == a0sym then
         return env:set(a1, EVAL(a2, env))
index 32bf60c..e978d68 100755 (executable)
@@ -63,6 +63,7 @@ function EVAL(ast, env)
     if not types._list_Q(ast) then return eval_ast(ast, env) end
 
     local a0,a1,a2,a3 = ast[1], ast[2],ast[3],ast[4]
+    if not a0 then return ast end
     local a0sym = types._symbol_Q(a0) and a0.val or ""
     if 'def!' == a0sym then
         return env:set(a1, EVAL(a2, env))
index fb4e14d..800833c 100755 (executable)
@@ -84,6 +84,7 @@ function EVAL(ast, env)
     if not types._list_Q(ast) then return eval_ast(ast, env) end
 
     local a0,a1,a2,a3 = ast[1], ast[2],ast[3],ast[4]
+    if not a0 then return ast end
     local a0sym = types._symbol_Q(a0) and a0.val or ""
     if 'def!' == a0sym then
         return env:set(a1, EVAL(a2, env))
index 69c911d..a7a1db8 100755 (executable)
@@ -84,6 +84,7 @@ function EVAL(ast, env)
     if not types._list_Q(ast) then return eval_ast(ast, env) end
 
     local a0,a1,a2,a3 = ast[1], ast[2],ast[3],ast[4]
+    if not a0 then return ast end
     local a0sym = types._symbol_Q(a0) and a0.val or ""
     if 'def!' == a0sym then
         return env:set(a1, EVAL(a2, env))
index be11008..4dc5d57 100755 (executable)
@@ -84,6 +84,7 @@ function EVAL(ast, env)
     if not types._list_Q(ast) then return eval_ast(ast, env) end
 
     local a0,a1,a2,a3 = ast[1], ast[2],ast[3],ast[4]
+    if not a0 then return ast end
     local a0sym = types._symbol_Q(a0) and a0.val or ""
     if 'def!' == a0sym then
         return env:set(a1, EVAL(a2, env))