LuaLS / LuaLS/lua-language-server
Parser. Long string doesn't contain leading spaces
未关闭
还没有人认领这个 Issue。
bug
- 主要语言
- Lua
- 星标
- 4.4k
- 派生
- 442
- PR 合并指标
- 30 天内没有已合并 PR
描述
How are you using the lua-language-server?
Visual Studio Code Extension (sumneko.lua)
Which OS are you using?
Windows
What is the issue affecting?
Diagnostics/Syntax Checking
Expected Behaviour
local a = " sss "
print('"' .. a .. '"')
local a = [[ sss ]] -- bug with a leading spaces
print('"' .. a .. '"')
local a = [[sss]]
print('"' .. a .. '"')
local a = [[
sss]]
print('"' .. a .. '"')
local a = [[
sss]] -- bug with a leading space
print('"' .. a .. '"')
local a = [[sss
]]
print('"' .. a .. '"')
local a = [[
sss
]]
print('"' .. a .. '"')
local a = [[
sss
]] -- bug with a leading space
print('"' .. a .. '"')
Parser should produce strings according to Lua rules - in a long string only the first line break is removed, but if it is the first
" sss "
" sss "
"sss"
"sss"
"
sss"
"sss
"
"sss
"
"
sss
"
Actual Behaviour
The leading spaces were skipped, presumably due to the fact that these are not tokens. Or I don't know
Reproduction steps
- Try to parse long string
[[ sss ]] - Now its
[[sss ]]
Additional Notes
This also breaks the colorization in addition to #3032, most likely because it breaks the start/finish positions #3028
--[===[@param a string?ComMMul]===]
local function new(a) end
--[===[ @param a string?ComMMS1]===]
local function new(a) end
Log File
No response
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
调研方向
从所引用的第381-394行和第429-430行的script/parser/compile.lua开始,然后复现列出的long-string用例。将解析后的值和源范围与预期的Lua输出进行比较,包括前导空格和换行符。完成的标准是保留前导空格,并且受影响的着色以及开始/结束位置不再发生回归。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- lua
- 领域
- compilers, devtools
- Issue 类型
- 缺陷
- 难度
- 3/5
- 预计耗时
- 1-2 天
- 活跃度
- 停滞
- 描述清晰度
- 描述清楚
- 新手友好度
- 48/100