aboutsummaryrefslogtreecommitdiff
path: root/nomsu_compiler.lua
diff options
context:
space:
mode:
Diffstat (limited to 'nomsu_compiler.lua')
-rw-r--r--nomsu_compiler.lua12
1 files changed, 12 insertions, 0 deletions
diff --git a/nomsu_compiler.lua b/nomsu_compiler.lua
index 0cedd50..c9a15db 100644
--- a/nomsu_compiler.lua
+++ b/nomsu_compiler.lua
@@ -9,6 +9,7 @@ do
local _obj_0 = require("code_obj")
LuaCode, Source = _obj_0.LuaCode, _obj_0.Source
end
+require("text")
local SyntaxTree = require("syntax_tree")
local Files = require("files")
local pretty_error = require("pretty_errors")
@@ -20,6 +21,17 @@ fail_at = function(source, msg)
source = source.source
elseif type(source) == 'string' then
source = Source:from_string(source)
+ else
+ assert(source.short_src and source.currentline)
+ file = Files.read(source.short_src)
+ assert(file, "Could not find " .. tostring(source.short_src))
+ local lines = file:lines()
+ local start = 1
+ for i = 1, source.currentline - 1 do
+ start = start + #lines[i]
+ end
+ local stop = start + #lines[source.currentline]
+ source = Source(source.short_src, start, stop)
end
if source and not file then
file = Files.read(source.filename)