* intern_pool: add getUnsignedInt
* add an empty struct literal
* resolve array length as usize in comptime interpreter
* use only one global intern pool
* store analysis errors in `DocumentStore.Handle`
* add typed undefined value
* add typed null value
* `gpa.deinit()` now returns an enum
* avoid double free when `--config-path` is specified
* avoid leaking memory in `Server.create` if `configChanged` returns err
LSP clients send a list of supported formats for definition and
completion; the specification says "the order describes the preferred
format of the client."[1]
My client sends:
'hover': {'contentFormat': ['plaintext', 'markdown']},
So it should prefer plaintext, using markdown if that's not supported by
the server. zls behaved slightly different: it would use Markdown if it
appears at all in the list of supported formats.
This fixes it so that it will use plain text if that appears before
'markdown' in the list.
[1]: https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_hover
As reported on Discord by CodotakuYT:
```zig
fn populate(T: type, index: i32) T {
_ = index;
@typeInfo(T).struct.
}
```
```
thread 17384 panic: access of union field 'ast_node' while field 'param_payload' is active
C:\Users\taoua\zls\src\features\completions.zig:875:61: 0x7ff68070caac in completeDot (zls.exe.obj)
const node_data = nodes_data[local_decl.decl.ast_node];
```
* move language feature files into separate folder
* move code completions into features/completions.zig
* move goto definition/declaration into features folder
* move hover into features folder
* restructure imports
* move selection range into features folder
* restructure request handling tracy call
* add missing features to `zls.zig`
* optimize document symbol generation
* match folding range index to position conversion and documentation to document symbol's
* skip function decls with no name
* skip document symbol field in opaque type
* Branching type resolution
* Add condition information to completions (borked rn i give up)
* Fix completion conditional descriptor
* Multi gotodef
* Multi hover
* Reenable references
* Fix getAllTypesWithHandles
* Fix build runner
* Add zls module, bump version
* Fix path from root issue in modules (thanks daremakemyday from Twitch :))
* Libraryify
* remove build_runner backward compatibility
* Remove some `= undefined`s in Server.zig
Makes library use less dangerous
* Consistent mem model + custom build runner possible
* Add build runner utils for third-party tooling
* Make logs removable in libraries with zls_ prefix
* Fix build runner CI
* Expose references
* Use new addModule
* build.zig: collapse exe_options
* build.zig: convert zig submodules to new dependency system
* update minimum version so that package manager hashes work cross-platform
* InternPool: replace untyped values with typed values
* InternPool: remove `indexToTag`
* InternPool: rework representation of optional values
* add representation for unknown values and types
* ComptimeInterpreter: use InternPool typed-values
* ComptimeInterpreter: field access test
* ComptimeInterpreter: improve handling of if expressions
* InternPool: fix typeOf on a comptime float
* ComptimeInterpreter: implement TypeOf with multiple parameters
* support new module cli arguments
* capture the runtime zig version and store it on `Server`
* update build_runner action
* Use correct version for selecting arguments
- Always return a copy to avoid memory corruption (most operations assume an arena allocated copy)
- label_details were only generated for the first (pre-fix) disposable copy
- Correct use_snippets logic (send only if configured and client supports them)