LuaLS / LuaLS/lua-language-server

Parser. Long string doesn't contain leading spaces

Abierto
#3,034 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

bug
Lenguaje dominante
Lua
Estrellas
4.4k
Forks
442
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

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

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza con script/parser/compile.lua en las líneas referenciadas 381-394 y 429-430, y luego reproduce los casos de long-string indicados. Compara los valores analizados y los rangos de origen con las salidas esperadas de Lua, incluidos los espacios iniciales y los saltos de línea. Está terminado cuando se conservan los espacios iniciales y la colorización y las posiciones de inicio/fin afectadas ya no sufren regresiones.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
lua
Área
compilers, devtools
Tipo de issue
Error
Dificultad
3/5
Tiempo estimado
1-2 días
Estado de actividad
Estancado
Claridad
Bien especificado
Aptitud para principiantes
48/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.