From 33559d7c87c5daf6dbb31b8d005f33ed6b27ace2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=80=E8=90=8C=E5=B0=8F=E6=B1=90?= Date: Fri, 6 Nov 2020 17:23:27 +0800 Subject: =?UTF-8?q?=E6=95=B4=E7=90=86=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- script-beta/vm/getGlobals.lua | 49 +------------------------------------------ 1 file changed, 1 insertion(+), 48 deletions(-) (limited to 'script-beta/vm/getGlobals.lua') diff --git a/script-beta/vm/getGlobals.lua b/script-beta/vm/getGlobals.lua index 380a21ac..4c0abe3d 100644 --- a/script-beta/vm/getGlobals.lua +++ b/script-beta/vm/getGlobals.lua @@ -5,60 +5,13 @@ local library = require 'library' local util = require 'utility' local config = require 'config' -local function searchRawset(ref, results) - if guide.getKeyName(ref) ~= 's|rawset' then - return - end - local call = ref.parent - if call.type ~= 'call' or call.node ~= ref then - return - end - if not call.args then - return - end - local arg1 = call.args[1] - if arg1.special ~= '_G' then - -- 不会吧不会吧,不会真的有人写成 `rawset(_G._G._G, 'xxx', value)` 吧 - return - end - results[#results+1] = call -end - -local function searchG(ref, results) - while ref and guide.getKeyName(ref) == 's|_G' do - results[#results+1] = ref - ref = ref.next - end - if ref then - results[#results+1] = ref - searchRawset(ref, results) - end -end - -local function searchEnvRef(ref, results) - if ref.type == 'setglobal' - or ref.type == 'getglobal' then - results[#results+1] = ref - searchG(ref, results) - elseif ref.type == 'getlocal' then - results[#results+1] = ref.next - searchG(ref.next, results) - end -end - local function getGlobalsOfFile(uri) local globals = {} local ast = files.getAst(uri) if not ast then return globals end - local results = {} - local env = guide.getENV(ast.ast) - if env.ref then - for _, ref in ipairs(env.ref) do - searchEnvRef(ref, results) - end - end + local results = guide.findGlobals(ast.ast) local mark = {} for _, res in ipairs(results) do if mark[res] then -- cgit v1.2.3