55 lines
1.5 KiB
Lua
55 lines
1.5 KiB
Lua
|
local files = require 'files'
|
|||
|
local guide = require 'parser.guide'
|
|||
|
local lang = require 'language'
|
|||
|
local define = require 'proto.define'
|
|||
|
local await = require 'await'
|
|||
|
|
|||
|
-- 检查空代码块
|
|||
|
-- 但是排除忙等待(repeat/while)
|
|||
|
---@async
|
|||
|
return function (uri, callback)
|
|||
|
local ast = files.getState(uri)
|
|||
|
if not ast then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
await.delay()
|
|||
|
guide.eachSourceType(ast.ast, 'if', function (source)
|
|||
|
for _, block in ipairs(source) do
|
|||
|
if #block > 0 then
|
|||
|
return
|
|||
|
end
|
|||
|
end
|
|||
|
callback {
|
|||
|
start = source.start,
|
|||
|
finish = source.finish,
|
|||
|
tags = { define.DiagnosticTag.Unnecessary },
|
|||
|
message = lang.script.DIAG_EMPTY_BLOCK,
|
|||
|
}
|
|||
|
end)
|
|||
|
await.delay()
|
|||
|
guide.eachSourceType(ast.ast, 'loop', function (source)
|
|||
|
if #source > 0 then
|
|||
|
return
|
|||
|
end
|
|||
|
callback {
|
|||
|
start = source.start,
|
|||
|
finish = source.finish,
|
|||
|
tags = { define.DiagnosticTag.Unnecessary },
|
|||
|
message = lang.script.DIAG_EMPTY_BLOCK,
|
|||
|
}
|
|||
|
end)
|
|||
|
await.delay()
|
|||
|
guide.eachSourceType(ast.ast, 'in', function (source)
|
|||
|
if #source > 0 then
|
|||
|
return
|
|||
|
end
|
|||
|
callback {
|
|||
|
start = source.start,
|
|||
|
finish = source.finish,
|
|||
|
tags = { define.DiagnosticTag.Unnecessary },
|
|||
|
message = lang.script.DIAG_EMPTY_BLOCK,
|
|||
|
}
|
|||
|
end)
|
|||
|
end
|