Commit Graph

50 Commits

Author SHA1 Message Date
Riley-Kilgore 5879dcfd4c Fix import completions 2024-09-09 12:52:56 -04:00
KtorZ e31c6de04e
Adjust module organization to facilitate resurrection of the playground.
The playground doesn't / cannot depend on aiken-project because that becomes a gigantic pain. So instead, we try to keep essential stuff inside aiken-lang when possible.
2024-08-29 09:12:37 +02:00
Matthias Benkort e6bb13def6
Merge pull request #994 from aiken-lang/conditional-modules
Conditional configuration & environment
2024-08-06 09:05:11 +02:00
Riley-Kilgore 5160ab49de Use char instead of str 2024-08-05 16:27:37 -04:00
Riley-Kilgore 9296516f5a Fixed hyphen in filename breaking LSP 2024-08-05 16:27:37 -04:00
KtorZ fbe2f82582
Thread down environment module from cli down to the type-checker
We simply provide a flag with a free-form output which acts as
  the module to lookup in the 'env' folder. The strategy is to replace
  the environment module name on-the-fly when a user tries to import
  'env'.

  If the environment isn't found, an 'UnknownModule' error is raised
  (which I will slightly adjust in a following commits to something more
  related to environment)

  There are few important consequences to this design which may not seem
  immediately obvious:

  1. We parse and type-check every env modules, even if they aren't
     used. This ensures that code doesn't break with a compilation error
     simply because people forgot to type-check a given env.

     Note that compilation could still fail because the env module
     itself could provide an invalid API. So it only prevents each
     modules to be independently wrong when taken in isolation.

  2. Technically, this also means that one can import env modules in
     other env modules by their names. I don't know if it's a good or
     bad idea at this point but it doesn't really do any wrong;
     dependencies and cycles are handlded all-the-same.
2024-08-04 10:27:32 +02:00
KtorZ f14dfdf8e1
Allow pattern-matching on bytearrays
- Doesn't allow pattern-matching on G1/G2 elements and strings,
    because the use cases for those is unclear and it adds complexity to
    the feature.

  - We still _parse_ patterns on G1/G2 elements and strings, but emit an
    error in those cases.

  - The syntax is the same as for bytearray literals (i.e. supports hex,
    utf-8 strings or plain arrays of bytes).
2024-08-03 13:51:36 +02:00
KtorZ 2070576e46
New LSP quickfix for 'use let' warning. 2024-05-30 19:30:41 +02:00
rvcas 7c5b9aa35e
feat(lsp): find_node for TypedArgVia 2024-04-02 19:22:19 -04:00
KtorZ 22b86a5f82
Add --max-success for running more or less prop runs on demand. 2024-03-09 19:17:57 +01:00
KtorZ a578728a94
Resolve type aliases based on inferred types.
Before this commit, we would always show the 'declared form' of type aliases, with their generic, non-instantiated parameters. This now tries to unify the annotation with the underlying inferred type to provide even better alias pretty printing.
2024-03-08 16:01:21 +01:00
KtorZ 7a2537432a
Accept an optional --seed parameter for check, otherwise default to random.
Also, show the seed on failure.
2024-03-03 20:36:01 +01:00
KtorZ 627c6b576e
Move line_numbers under 'aiken-lang'
And add some unit tests to ensure things are working properly.
2024-01-19 14:30:15 +01:00
KtorZ d27ea98a8f
Rework tracing arguments to --keep-traces & --trace-level
This allows for a more fine-grained control over how the traces are showed. Now users can instrument the compiler to preserve only their user-defined traces, or the only the compiler, or all, or none. We also want to add another trace level on top of that: 'compact' to only show line numbers; which will work for both user-defined and/or compiler-generated traces.
2024-01-19 14:30:15 +01:00
microproofs 86146ae7f4
adding codegen traces 2024-01-19 14:30:14 +01:00
rvcas 1503b525b2
feat(lsp): implement quickfix for utf8 byte array is valid hex string warning 2023-11-28 21:02:15 -05:00
rvcas 858a9621fc
fix: due to how error code now get printed match_code for quickfix was always false 2023-11-28 21:00:17 -05:00
rvcas 2dab62857f
chore: useless rebinding 2023-11-28 19:46:08 -05:00
rvcas f7dd2de17b
feat: implement hover info for tuple, list, and contructor pattern elements 2023-11-28 16:12:37 -05:00
KtorZ 46c58dbd61
Implement quickfixes for redundant imports. 2023-10-22 00:29:09 +02:00
KtorZ c0513da032
Add quickfix for unknown constructors. 2023-10-21 14:24:47 +02:00
KtorZ 5986163ba7
Add quickfix for unknown alias & data types. 2023-10-21 13:57:06 +02:00
KtorZ d965467a53
Fix insertion of unqualified import when first
I previously missed a case and it causes qualified imports to be added at the end if they are lexicographically smaller than ALL other qualified imports. No big deal, but this is now fixed.
2023-10-21 13:56:15 +02:00
KtorZ c550b4766d
Implement quickfix for 'UnknownModule'. 2023-10-21 12:59:48 +02:00
KtorZ e48ac6b592
Relocate and refactor quickfix code into its own module
We're going to have more quickfixes, to it's best not to overload the
  'server' module. Plus, there's a lot of boilerplate around the
  quickfixes so we might want to factor it out.
2023-10-21 12:00:58 +02:00
KtorZ 763516eb96
Refactor and relocate document edits function for imports.
It's a bit 'off-topic' to keep these in aiken-lang as those functions are really just about lsp. Plus, it removes a bit some of the boilerplate and make the entire edition more readable and re-usable. Now we can tackle other similar errors with the same quickfix.
2023-10-21 11:31:01 +02:00
KtorZ 699d0a537c
Use (untyped) AST to find the right insert location for imports.
This removes the need to rely on the formatter to clear things up
  after insert a new import. While this is not so useful for imports, I
  wanted to experiment with the approach for future similar edits (for
  example, when suggesting an inline rewrite).
2023-10-21 10:43:00 +02:00
KtorZ 66ade8e3e3
Implement simple code action quickfix for unknown variable. 2023-10-20 18:01:07 +02:00
KtorZ 41e26b216b
Some LSP improvements regarding hovering
- Resolve module select properly
  - Add some type annotations to _some patterns_ such as assignments
2023-10-19 20:04:10 +02:00
rvcas e5801f9c19
feat: support doc comments for functions args and validator params
- Add support to the formatter for these doc comments
- Add a new field to `Arg` `doc: Option<String>`
- Don't attach docs immediately after typechecking a module
  - instead we should do it on demand in docs, build, and lsp
  - the check command doesn't need to have any docs attached
  - doing it more lazily defers the computation until later making
    typechecking feedback a bit faster
- Add support for function arg and validator param docs in
  `attach_module_docs` methods
- Update some snapshots
- Add put_doc to Arg

closes #685
2023-10-16 13:38:23 -04:00
Olof Blomqvist d25bb9ae60 format 2023-08-04 14:56:16 -04:00
Olof Blomqvist 4e4a477ff1 meh 2023-08-04 14:56:16 -04:00
Olof Blomqvist 17eef195a9 fix diagnostics and formatting on windows vscode 2023-08-04 14:56:16 -04:00
microproofs 8b11844282 clippy fix 2023-04-26 17:40:27 -04:00
KtorZ cb5dc75326
Remove unnecessary import. 2023-03-30 11:50:59 +02:00
KtorZ dc500b8e13
Add missing import to owo_colors 2023-03-30 09:21:59 +02:00
KtorZ efa31e3df7
minor lsp tweaks
- forcibly disable colors
  - do not show labels in error messages
2023-03-29 18:25:56 +02:00
rvcas 92161bed43
fix: From<&str> for GlobPattern does not exist need to use string 2023-03-06 13:15:12 -05:00
rvcas 6af6607df4 chore: github made a weird commit 2023-02-20 15:30:25 -05:00
rvcas 8b9991fd5b chore: update some strings 2023-02-20 15:30:25 -05:00
Lucas 4b296de27c Update crates/aiken-lsp/src/utils.rs
Co-authored-by: Matthias Benkort <5680256+KtorZ@users.noreply.github.com>
2023-02-20 15:30:25 -05:00
rvcas 52bb0e749e fix(lsp): cannot blindly run publish after handle_request 2023-02-20 15:30:25 -05:00
rvcas a8829889e3 feat(lsp): properly recompile project is files change 2023-02-20 15:30:25 -05:00
rvcas c033cab79e feat(lsp): bring over some stuff for completions, it basically doesn't work right though 2023-02-20 15:30:25 -05:00
rvcas 02eaefce21 feat(lsp): include docs on hover 2023-02-20 15:30:25 -05:00
rvcas 815d7d80c6 feat(lsp): hover and goto definition 2023-02-20 15:30:25 -05:00
rvcas 39ea803fe6 chore: remove eprintln 2023-02-20 15:30:25 -05:00
rvcas 38bcbaf701 feat(lsp): enable compiling a project 2023-02-20 15:30:25 -05:00
rvcas a365649360 chore: clippy autofix 2023-02-01 18:53:11 -05:00
rvcas 42204d2d71 chore: make folder names match crate name 2022-12-21 18:11:07 -05:00