LuaLS / LuaLS/lua-language-server

Parser. Long string doesn't contain leading spaces

オープン
#3,034 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

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

https://github.com/LuaLS/lua-language-server/blob/cb964c600570e6258d3c0a3f3f424a35a3a4ef64/script/parser/compile.lua#L429-L430

https://github.com/LuaLS/lua-language-server/blob/cb964c600570e6258d3c0a3f3f424a35a3a4ef64/script/parser/compile.lua#L381-L394

изображение

Reproduction steps
  1. Try to parse long string [[ sss ]]
  2. 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

{914609FD-8D0E-4A1C-9AB8-9915CBB28D91}

Log File

No response

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

まず、参照されている381-394行および429-430行のscript/parser/compile.luaから始め、列挙されているlong-stringのケースを再現します。先頭のスペースと改行を含め、解析された値とソース範囲を期待されるLuaの出力と比較します。先頭のスペースが保持され、影響を受けるカラー化と開始位置/終了位置でリグレッションが発生しなくなれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
lua
領域
compilers, devtools
issue の種類
バグ
難易度
3/5
見積もり時間
1〜2日
活発さ
停滞
明瞭さ
明確に書かれている
初心者へのやさしさ
48/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。