-
-
Notifications
You must be signed in to change notification settings - Fork 351
Wrong behavior in new diagnostic missing-fields with union types #2214
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
---@class Foo
---@field a number
---@field b number
---@field c number
---@class Bar
---@field ba number
---@field bb number
---@field bc number
---@type Foo|Bar
local b = {
a = 1,
b = 2,
c = 3,
} This case report |
The unions actually create an intersection. Does doing:
work? |
This works. |
This is a known issue, see: #2102 |
I'm getting a lot of false positives because of this issue. For example: ---@class A
---@field required boolean
---@alias A_or_string A|string
---@type A_or_string|A_or_string[]
local x = { 'hi' } -- Missing field `required` |
I have the same problem. Could you find a fix @9mm ? |
@tummetott no I havent found it yet .. I wasnt even sure if this was the problem but given my problem just showed up at the exact time this issue was made I thought it might be |
i'm seeing a bunch of missing fields warnings all of a sudden in my init.lua. not sure why. looks like it's only happening in tables passed to .setup. |
I have the same problem as @9mm . |
As a workaround - adding this before that table seems to work for me @9mm: ---@diagnostic disable-next-line missing-fields |
Interesting, thanks. I wish I knew the proper way to handle it... am I initializing plugins wrong? I feel like I shouldnt need to disable lines if using plugins, especially big ones like cmp and treesitter. @sumneko do you have any insight? |
@thatnerdjosh thanks, but why it is not working using the server options? |
You can disable this by setting |
If I had to guess the issue is that the annotations for If you open an issue in the nvim-cmp repo or make a pull request to mark fields as optional (e.g. |
Changelog: ## 3.8.3 `2024-4-23` * `FIX` server may crash when the workspace is using a non-English path. ## 3.8.2 `2024-4-23` * This is a fake version only for the new version of VSCode, with a core of 3.8.0. ## 3.8.1 `2024-4-23` * This is a fake version only for the old version of VSCode, with a core of `3.7.4`. Starting from the next minor version, the version requirement for VSCode will be raised to prevent users still using the old version of VSCode from updating to the new version and experiencing compatibility issues. ## 3.8.0 `2024-4-22` * `NEW` supports tuple type (@[lizho]) ```lua ---@type [string, number, boolean] local t local x = t[1] --> x is `string` local y = t[2] --> y is `number` local z = t[3] --> z is `boolean` ``` * `NEW` generic pattern (@[fesily]) ```lua ---@Generic T ---@param t Cat.`T` ---@return T local function f(t) end local t = f('Smile') --> t is `Cat.Smile` ``` * `NEW` alias and enums supports attribute `partial` ```lua ---@alias Animal Cat ---@alias(partial) Animal Dog ---@type Animal local animal --> animal is `Cat|Dog` here ``` ```lua ---@enum(key) ErrorCodes local codes1 = { OK = 0, ERROR = 1, FATAL = 2, } ---@enum(key, partial) ErrorCodes local codes2 = { WARN = 3, INFO = 4, } ---@type ErrorCodes local code code = 'ERROR' --> OK code = 'WARN' --> OK ``` * `NEW` plugin: add `OnTransFormAst` interface (@[fesily]) * `NEW` plugin: add `OnNodeCompileFunctionParam` interface (@[fesily]) * `NEW` plugin: add `ResolveRequire` interface (@[Artem Dzhemesiuk]) * `NEW` plugin: support multi plugins (@[fesily]) + setting: `Lua.runtime.plugin` can be `string|string[]` + setting: `Lua.runtime.pluginArgs` can be `string[]|table<string, string>` * `NEW` CLI: `--doc` add option `--doc_out_path <PATH>` (@[Andreas Matthias]) * `NEW` CLI: `--doc_update`, update an existing `doc.json` without using `--doc` again (@[Andreas Matthias]) * `NEW` CLI: `--trust_all_plugins`, this is potentially unsafe for normal use and meant for usage in CI environments only (@[Paul Emmerich]) * `CHG` CLI: `--check` will run plugins (@[Daniel Farrell]) * `FIX` diagnostic: `discard-returns` not works in some blocks (@clay-golem) * `FIX` rename in library files ## 3.7.4 `2024-1-5` * `FIX` rename to unicode with `Lua.runtime.unicodeName = true` ## 3.7.3 `2023-11-14` * `FIX` can not infer arg type in some cases. ## 3.7.2 `2023-11-9` * `FIX` [#2407] [#2407]: LuaLS/lua-language-server#2407 ## 3.7.1 `2023-11-7` * `FIX` [#2299] * `FIX` [#2335] [#2299]: LuaLS/lua-language-server#2299 [#2335]: LuaLS/lua-language-server#2335 ## 3.7.0 `2023-8-24` * `NEW` support `---@type` and `--[[@as]]` for return statement * `NEW` commandline parameter `--force-accept-workspace`: allowing the use of the root directory or home directory as the workspace * `NEW` diagnostic: `inject-field` * `NEW` `---@enum` supports attribute `key` ```lua ---@enum (key) AnimalType local enum = { Cat = 1, Dog = 2, } ---@param animal userdata ---@param atp AnimalType ---@return boolean local function isAnimalType(animal, atp) return API.isAnimalType(animal, enum[atp]) end assert(isAnimalType(animal, 'Cat')) ``` * `NEW` `---@class` supports attribute `exact` ```lua ---@Class (exact) Point ---@field x number ---@field y number local m = {} m.x = 1 -- OK m.y = 2 -- OK m.z = 3 -- Warning ``` * `FIX` wrong hover and signature for method with varargs and overloads * `FIX` [#2155] * `FIX` [#2224] * `FIX` [#2252] * `FIX` [#2267] [#2155]: LuaLS/lua-language-server#2155 [#2224]: LuaLS/lua-language-server#2224 [#2252]: LuaLS/lua-language-server#2252 [#2267]: LuaLS/lua-language-server#2267 ## 3.6.25 `2023-7-26` * `FIX` [#2214] [#2214]: LuaLS/lua-language-server#2214 ## 3.6.24 `2023-7-21` * `NEW` diagnostic: `missing-fields` * `FIX` shake of `codeLens` * `FIX` [#2145] [#2145]: LuaLS/lua-language-server#2145 ## 3.6.23 `2023-7-7` * `CHG` signature: narrow by inputed literal ## 3.6.22 `2023-6-14` * `FIX` [#2038] * `FIX` [#2042] * `FIX` [#2062] * `FIX` [#2083] * `FIX` [#2088] * `FIX` [#2110] * `FIX` [#2129] [#2038]: LuaLS/lua-language-server#2038 [#2042]: LuaLS/lua-language-server#2042 [#2062]: LuaLS/lua-language-server#2062 [#2083]: LuaLS/lua-language-server#2083 [#2088]: LuaLS/lua-language-server#2088 [#2110]: LuaLS/lua-language-server#2110 [#2129]: LuaLS/lua-language-server#2129
How are you using the lua-language-server?
NeoVim
Which OS are you using?
MacOS
What is the issue affecting?
Annotations, Type Checking, Diagnostics/Syntax Checking
Expected Behaviour
The given code:
Should not report nothing. Because
a
matchesFoo[]
.Actual Behaviour
Report
missing-field
diagnostic.Reproduction steps
Code above...
Additional Notes
No response
Log File
No response
The text was updated successfully, but these errors were encountered: