summaryrefslogtreecommitdiff
path: root/script/vm/library.lua
diff options
context:
space:
mode:
Diffstat (limited to 'script/vm/library.lua')
-rw-r--r--script/vm/library.lua36
1 files changed, 36 insertions, 0 deletions
diff --git a/script/vm/library.lua b/script/vm/library.lua
new file mode 100644
index 00000000..1a8d8ffd
--- /dev/null
+++ b/script/vm/library.lua
@@ -0,0 +1,36 @@
+---@class vm
+local vm = require 'vm.vm'
+
+function vm.getLibraryName(source)
+ if source.special then
+ return source.special
+ end
+ local defs = vm.getDefs(source)
+ for _, def in ipairs(defs) do
+ if def.special then
+ return def.special
+ end
+ end
+ return nil
+end
+
+local globalLibraryNames = {
+ 'arg', 'assert', 'error', 'collectgarbage', 'dofile', '_G', 'getfenv',
+ 'getmetatable', 'ipairs', 'load', 'loadfile', 'loadstring',
+ 'module', 'next', 'pairs', 'pcall', 'print', 'rawequal',
+ 'rawget', 'rawlen', 'rawset', 'select', 'setfenv',
+ 'setmetatable', 'tonumber', 'tostring', 'type', '_VERSION',
+ 'warn', 'xpcall', 'require', 'unpack', 'bit32', 'coroutine',
+ 'debug', 'io', 'math', 'os', 'package', 'string', 'table',
+ 'utf8',
+}
+local globalLibraryNamesMap
+function vm.isGlobalLibraryName(name)
+ if not globalLibraryNamesMap then
+ globalLibraryNamesMap = {}
+ for _, v in ipairs(globalLibraryNames) do
+ globalLibraryNamesMap[v] = true
+ end
+ end
+ return globalLibraryNamesMap[name] or false
+end