Let's consider the following case:
```
type Var =
Integer
type Vars =
List<Var>
```
This incorrectly reports an infinite cycle; due to the inability to
properly type-check `Var` which is also a dependent var of `Vars`. Yet
the real issue here being that `Integer` is an unknown type.
This commit also upgrades miette to 7.2.0, so that we can also display
a better error output when the problem is actually a cycle.
|
||
|---|---|---|
| .. | ||
| src | ||
| Cargo.toml | ||
| README.md | ||
README.md
Aiken Language Server Protocol (LSP)
The aiken command-line comes built-in with a Language Server implementing
(part of) the Language Server Protocol.
Getting Started
General
Regardless of your IDE, you'll likely need the following information to configure your language client:
-
command:
aiken lspNote The command is hidden from the command-line help usage
-
root pattern:
aiken.toml -
filetype:
aiken(.ak)
VsCode
Simply install the VSCode Aiken extension from the official marketplace.
NeoVim
If you're using NeoVim and using nvim-lspconfig then there's almost
nothing to do as Aiken is directly supported. Simply follow the official
instructions
Supported Capabilities
- Document syncing and on-the-fly compilation
- Document formatting (akin to
aiken fmt) - Go-to definition
- Type annotation on hover
- Code actions providing quickfixes for a variety of errors:
aiken::check::unknown::variableaiken::check::unknown::typeaiken::check::unknown::type_constructoraiken::check::unknown::module