Operators are not included in the output when generating documentation via the --doc CLI argument
How are you using the lua-language-server?
Command Line
Which OS are you using?
Linux
What is the issue affecting?
Annotations, Other
Expected Behaviour
When generating markdown and JSON documentation via the command line argument --doc, the output files should contain operators defined by the @operator syntax.
Actual Behaviour
The expected behavior is that the operators are missing in both the markdown and JSON generated files.
Reproduction steps
Given the following Lua file:
---@meta
---@class Vector2f
---@operator unm:Vector2f
---@operator add(Vector2f | number):Vector2f
---@operator sub(Vector2f | number):Vector2f
Vector2f = {}
When the language server is run with the following args:
./LuaS/bin/lua-language-server --doc=./example.lua --doc_out_path=.
Then the output doc.md and doc.json do not contain any of the operators specified.
In the doc.json the type Vector2d is the following, notice the lack of any operators:
{
"defines": [
{
"async": false,
"deprecated": false,
"file": ".",
"finish": [
2,
18
],
"start": [
2,
10
],
"type": "doc.class",
"view": "Vector2f",
"visible": "public"
}
],
"fields": [],
"name": "Vector2f",
"type": "type",
"view": "Vector2f"
}
Additional Notes
No response
Log File
No response
As a workaround, I have found that specifying the operators as fields is possible. For example:
---@class Vector2f
---@field __unm fun():Vector2f
---@field __add fun(other: Vector2f|number):Vector2f
---@field __sub fun(other: Vector2f|number):Vector2f
Vector2f = {}
In the output JSON, the operators are listed as fields, which are of type function, and both args and return types are listed as expected.
The hint for this was in the meta library ./meta/Lua 5.4 en-us utf8/basic.lua around the line 309.