LuaLS / LuaLS/lua-language-server

Assigning an exact class field is bypassed with array notation

Open
#2,289 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Lua
Stars
4.4k
Forks
442
PR merge metrics
No merged PRs in 30d

Description

Exact classes can still have fields injected using array notation (`myClass['field'] = 1`) without a warning.

```lua
---@class (exact) foo
---@field bar string
local foo = {}

foo.bar = "1" -- no warning (OK)

foo.baz = "2" -- warning (OK)

foo['baz'] = "3" -- no warning (not OK)
```

![image](https://github.com/LuaLS/lua-language-server/assets/38674984/3e546d0b-27c8-4bc3-a121-9cf30ca27978)

Contributor guide

Open the contributing guide

Research direction

Start with the Lua reproducer in the issue and trace the diagnostic path for exact-class field assignments. Compare how dot notation and bracket notation are handled for the same field access. Done means the shown `foo['baz']` assignment produces the same warning as `foo.baz`.

Written by the indexing model from the issue text.

Assessment

Tech stack
lua
Domain
tooling
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.