LuaLS / LuaLS/lua-language-server
Ternary operator with optional arg unfolds to the wrong type
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- Lua
- Star
- 4.4k
- Fork
- 442
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Mô tả
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?
Annotations, Type Checking
Expected Behaviour
Ternary operators give out the correct type, process logical conditions correctly.
Actual Behaviour
must be string|false without default or string|boolean or "yes"|false. but not "yes" as default

condition can be boolean or nil, but actual result the same, cannot be optional |nil, ?


can't be nil

so my real case gives boolean|string or boolean|string|false boolean|string = false but without ?

Reproduction steps
---@type boolean
local cond
local value = cond and "yes"
---@type boolean?
local cond
local value = cond and "yes"
---@type boolean|nil
local cond
local value = cond and "yes"
---@type nil
local cond
local value = cond and "yes"
Additional Notes
Имя: Lua
Идентификатор: sumneko.lua
Описание: Lua Language Server coded by Lua
Версия: 3.6.11
Издатель: sumneko
Ссылка на Visual Studio Marketplace: https://marketplace.visualstudio.com/items?itemName=sumneko.lua
Версия: 1.75.1 (system setup)
Фиксация: 441438abd1ac652551dbe4d408dfcec8a499b8bf
Дата: 2023-02-08T21:32:34.589Z
Electron: 19.1.9
Chromium: 102.0.5005.194
Node.js: 16.14.2
V8: 10.2.154.23-electron.0
OS: Windows_NT x64 10.0.19044
Изолированные: No
Log File
No response
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Hướng nghiên cứu
Tái hiện các kết quả kiểm tra kiểu được báo cáo trong LuaLS bằng bốn đoạn mã Lua trong issue, bao gồm các trường hợp boolean, optional, nil và default. Theo dõi quá trình suy luận kiểu cho biểu thức and và bổ sung coverage hồi quy để kết quả được suy luận vẫn giữ các union liên quan của string, boolean, false và nil.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- lua, vscode
- Lĩnh vực
- devtools
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 35/100