summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--dirtycompiler.lua1
-rw-r--r--testc.lua11
2 files changed, 8 insertions, 4 deletions
diff --git a/dirtycompiler.lua b/dirtycompiler.lua
index 3ece694..4d61538 100644
--- a/dirtycompiler.lua
+++ b/dirtycompiler.lua
@@ -122,6 +122,7 @@ defs[FINISH] = finish
 
 defs[parser.EOZ] = function(state, token)
     local results = state.results
+    if not results then return {} end -- empty, don't waste time processing unnecessary things
     -- flip results around
     local len = results.n
     for i=1, len do
diff --git a/testc.lua b/testc.lua
index 8abdcd5..eb864e1 100644
--- a/testc.lua
+++ b/testc.lua
@@ -23,16 +23,19 @@ end
 
 local cratera = require "dirtycratera"
 
--- first test: does it handle lua code properly?
-assert(printr(cratera.load(io.lines("dirtycompiler.lua", "*a")())))()
+-- first test: does it handle empty files properly?
+assert(printr(cratera.load("")))()
+
+-- second test: does it handle lua code properly?
+assert(printr(cratera.load(io.open("dirtycompiler.lua"):read("*a"))))()
 
 print("-----------------------------------------------------------------------------------------------------------------------")
 print(table.concat(collect))
 
 collect = {}
 
--- second test: does it handle cratera tests properly?
-assert(printr(cratera.load(io.lines("tests.cratera", "*a")())))()
+-- third test: does it handle cratera tests properly?
+assert(printr(cratera.load(io.open("tests.cratera"):read("*a"))))()
 
 print("-----------------------------------------------------------------------------------------------------------------------")
 print(table.concat(collect))