Commit Graph

57 Commits

Author SHA1 Message Date
KtorZ 660ff7fa31
adjust spans & tweak errors for maximum UX
Signed-off-by: KtorZ <matthias.benkort@gmail.com>
2025-03-15 23:02:13 +01:00
KtorZ 3c2b631813
Add 'Collecting' step to 'check' command output + warning for suspicious test filter
Fixes #1092.

Signed-off-by: KtorZ <5680256+KtorZ@users.noreply.github.com>
2025-02-11 14:17:28 +01:00
KtorZ 8edd8d37db
fix benchmark output when either the sampler or bench fails
This is likely even better than what was done for property testing. We
  shall revise that one perhaps one day.

Signed-off-by: KtorZ <5680256+KtorZ@users.noreply.github.com>
2025-02-09 16:23:01 +01:00
KtorZ 37f721ff06
fixup aesthetics
Signed-off-by: KtorZ <5680256+KtorZ@users.noreply.github.com>
2025-02-09 16:18:01 +01:00
Riley-Kilgore 84a0abeb0f Old Fuzzer, new Sampler 2025-01-22 15:23:17 -08:00
Riley-Kilgore c0fabcd26a Added benchmark keyword and unified Samplers and Fuzzers as Generator 2025-01-22 15:23:17 -08:00
Riley-Kilgore 8764d37d76 Formatting 2025-01-22 15:23:17 -08:00
Riley-Kilgore e97e85a272 Dump (benchmarking wip) 2025-01-22 15:23:17 -08:00
rvcas c1871768f8
feat: remove plutus v1,v2 from aiken.toml closes #1032 2024-12-25 22:52:08 -05:00
Kasey 86ec3b2924
Fix: issue crash in code gen with incorrect column length in decision trees (#1069)
* Fix: Deeply nested assignments would offset the new columns count calculation. Now we track relevant columns and their path to ensure each row has wildcards if they don't contain the relevant column

* Add test plus clippy fix

* Clippy fix

* New version clippy fix
2024-12-05 11:02:19 +07:00
KtorZ 038f6ecbfd
Detect and report duplicate module names during parsing
Funny enough, we thought about that but only across packages. Now, the
  situation gets a little tricky because of folder structure, it's easy
  to define a module "foo" in `env`, `lib` and/or `validators`. From the
  compiler's perspective, they all have the same name.
2024-09-03 15:24:01 +02: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
KtorZ 91e0e2493a
Provide better errors on unknown type in cyclic definitions.
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.
2024-08-06 19:24:48 +02:00
KtorZ 8c121f6d97
Document 'export' and provide better errors on module not found. 2024-08-06 11:09:05 +02:00
KtorZ 6454266b06
Allow simple expressions as configuration in aiken.toml
This is currently extremely limited as it only supports (UTF-8)
  bytearrays and integers. We should seek to at least support hex bytes
  sequences, as well as bools, lists and possibly options.

  For the latter, we the rework on constant outlined in #992 is
  necessary.
2024-08-04 14:48:03 +02:00
KtorZ c9d0da0c22
Parse sources of conditional env modules.
Do nothing about it yet, but trigger an error if env/default.ak is
  missing; but only if there's any module at all under env.
2024-08-03 17:42:55 +02:00
KtorZ 4645257e62
Prune pallas dependencies.
Using 'pallas' as a dependency brings utxo-rpc other annoying dependencies such as _tokyo_. This not only makes the overall build longer, but it also prevents it to even work when targetting wasm.
2024-08-03 14:14:49 +02:00
KtorZ 2922c0aa6f
Display expected patterns/tokens in parse error when applicable.
We've never been using those 'expected' tokens captured during
  parsing, which is lame because they contain useful information!

  This is much better than merely showing our infamous

    "Try removing it!"
2024-07-19 12:28:08 +02:00
rvcas de870e2529
feat: warning on compiler version mismatch 2024-06-13 20:26:44 -04:00
KtorZ e9e26b969a
Preserve warning display rework, but without breaking the LSP quickfixes. 2024-05-30 19:20:11 +02:00
KtorZ 1ed4fa1c69
Show warning when ignoring modules + restyle warnings slightly
Fixes #916.
2024-05-14 13:27:19 +02:00
rvcas 7d67f1497c feat(export): implement basic command functionality 2024-04-08 14:30:07 -04:00
KtorZ bff822ea7f
Rework unit test report to leverage new reification
And also provide slightly better errors when traces, or trace-if-false operators are present.
2024-03-07 01:20:40 +01:00
KtorZ fbda31d980
Fix and improve test outputs for prop tests. 2024-03-03 21:00:51 +01:00
KtorZ a703db4d14
Borrow integrated shrinking approach from MiniThesis. 2024-03-03 19:33:24 +01:00
KtorZ 7645a9460f
Display error codes better.
This is a *slight* hack / abuse of the code() method as we are now
  doing a bit of formatting within that function. Yet, we only do so at
  the very top-level (i.e. project's Error) because we can't actually
  fiddle with how miette presents errors.
2023-11-25 15:14:09 +01:00
KtorZ 1ca81ec133
Turn evaluation hints into strings earlier, to make project's Error thread-safe. 2023-11-24 09:44:05 +01:00
KtorZ c4221730bf
Define 'ExtraData' trait for errors
This should allow passing some extra information to LSP diagnostic in order to provide quickfix actions, such as auto-imports.
2023-10-20 18:00:12 +02:00
KtorZ 76ff09ba0e Ensure that version resolution works offline
And so, even for unpinned package. In this case, we can't do a HEAD request. So we fallback by looking at what's available in the cache and using the most recently downloaded version from the cache. This is only a best effort as the most recently downloaded one may not be the actual latest. But common, this is a case where (a) someone didn't pin any version, (b) is trying to build on in an offline setup. We could possibly make that edge-case better but, let's see if anyone ever complains about it first.
2023-09-13 17:17:32 -04:00
rvcas 70f12d3fc5 chore: new branch with some things from the bumpalo branch 2023-04-13 01:28:27 -04:00
rvcas bd7b8792bf
feat: introduce EvalResult type 2023-03-08 10:19:36 +01:00
KtorZ a46a9fca41
Only use colors & text decorations on ANSI-capable terminals.
Fixes #404.
2023-02-26 13:19:03 +01:00
KtorZ 0838d48f7c
Move module name validation outside of type-checking
And disable it for documentation generation. This way, we can generate documentation for aiken/builtins and aiken (prelude)
2023-02-22 11:51:32 +01:00
rvcas 97f03e5e98 fix: variants no longer exist 2023-02-20 15:46:55 -05:00
rvcas bd93ced647 feat: improve validator arity check
* add count to dynamically adjust message
* check if args is greater than 3
* delete unused project level errors
2023-02-20 15:46:55 -05:00
rvcas 38bcbaf701 feat(lsp): enable compiling a project 2023-02-20 15:30:25 -05:00
rvcas b55726c90f feat(project): remove Error::List and use Vec<Error> 2023-02-20 15:30:25 -05:00
KtorZ 20841962f6
Fix error messages still referring to blueprint's purpose. 2023-02-16 10:06:12 +01:00
rvcas a311531508 fix(cli): aiken address 2023-02-16 00:05:55 -05:00
rvcas 673b57b81c feat: get bluprint stuff compiling again 2023-02-16 00:05:55 -05:00
rvcas 99c1c880b0 chore: more clippy 2023-02-01 18:53:11 -05:00
rvcas a365649360 chore: clippy autofix 2023-02-01 18:53:11 -05:00
rvcas 618ea0c8dc feat: switch to zip from zip-extract 2023-02-01 14:50:18 -05:00
KtorZ daee8e39d6
Implement new command: address
This calculates a validator's address from validators found in a blueprint. It also provides a convenient way to attach a delegation part to the validator if needs be. The command is meant to provide a nice user experience and works 'out of the box' for projects that have only a single validator. Just call 'aiken address' to get the validator's address.

  Note that the command-line doesn't provide any option to configure the target network. This automatically assumes testnet, and will until we deem the project ready for mainnet. Those brave enough to run an Aiken's program on mainnet will find a way anyway.
2023-01-31 15:39:40 +01:00
KtorZ 5683d19a4c
Refactor build steps to generate blueprints instead
The blueprint is generated at the root of the repository and is
  intended to be versioned with the rest. It acts as a business card
  that contains many practical information. There's a variety of tools
  we can then build on top of open-source contracts. And, quite
  importantly, the blueprint is language-agnostic; it isn't specific to
  Aiken. So it is really meant as an interop format within the
  ecosystem.
2023-01-31 09:48:38 +01:00
KtorZ 91bd0d1d77
Display warning help + minor error improvements. 2023-01-21 17:42:58 +01:00
KtorZ d321b85df2
Refactor type errors back into macro annotations
Far less verbose than defining classes by hand, plus, it allows to have everything about a single error be co-located. And finally, it allows to use 'related', 'label' and so on more easily.
2023-01-20 20:11:44 +01:00
KtorZ 61be8ca73e
Add diagnostic codes to type-check warnings. 2023-01-20 12:27:48 +01:00
KtorZ b475d6a6a4
Provide better errors when packages aren't found. 2023-01-18 16:34:26 +01:00
KtorZ 6286132a3e
Rename sub-command 'deps' → 'packages'
Slightly more readable and self-explanatory.
2023-01-14 23:29:28 +01:00