diff --git a/src/model/project/project.lua b/src/model/project/project.lua index 8a51407e..b2a777b8 100644 --- a/src/model/project/project.lua +++ b/src/model/project/project.lua @@ -109,7 +109,7 @@ end function Project:load_file(filename) local rok, content = self:readfile(filename) if rok then - return codeload(content) + return codeload(content, nil, filename) end end @@ -387,7 +387,7 @@ function ProjectService:run(name, env) if type(code) ~= 'string' then return nil, FS.messages.unreadable(ProjectService.MAIN), p_path end - local content, c_err = codeload(code, env) + local content, c_err = codeload(code, env, ProjectService.MAIN) return content, c_err, p_path end return nil, err diff --git a/src/util/lua.lua b/src/util/lua.lua index beca8068..98efb3e1 100644 --- a/src/util/lua.lua +++ b/src/util/lua.lua @@ -11,13 +11,15 @@ end --- @param code string --- @param env table? +--- @param name string? --- @return function? chunk --- @return string? err -local codeload = function(code, env) +local codeload = function(code, env, name) if type(code) ~= 'string' then return nil, ('code must be a string (got %s)'):format(type(code)) end - local f, err = loadstring(code) + local chunk = name and ('@' .. name) or nil + local f, err = loadstring(code, chunk) if not f then return nil, err end if env then