Commit Graph

2363 Commits

Author SHA1 Message Date
KtorZ
943d90a99e Fix invalid interpolation in error message. 2024-09-07 18:23:35 +02:00
KtorZ
b7ea6ea391 Fix list-pattern formatting 2024-09-07 14:50:47 +02:00
KtorZ
5ec147e6c7 Mention config in generated README & generate env folder
Also, get rid of the extra lib/{package_name} directory which is rarely relevant.
2024-09-06 14:15:44 +02:00
KtorZ
04fb11084c Fix dark colorscheme for dark. 2024-09-06 13:31:19 +02:00
KtorZ
19e30b10f9 Fix #1013 2024-09-06 12:28:12 +02:00
KtorZ
888b7e34c6 Drop debug line that stayed in source code x_x 2024-09-06 12:15:55 +02:00
rvcas
be31a7ce38 chore: Release 2024-09-03 17:01:41 -04:00
rvcas
20ac89fc33 chore: reset version 2024-09-03 17:01:24 -04:00
microproofs
140cb02be0 Generic test now passes 2024-09-03 16:21:53 -04:00
KtorZ
6a438bc8cd Fix missing locations from generated handler code. 2024-09-03 16:21:53 -04:00
microproofs
2f33c4a8f4 Push up test failing due to missing messages 2024-09-03 16:21:53 -04:00
microproofs
8933688c68 Rest of the tests to push up 2024-09-03 16:21:53 -04:00
microproofs
c370a4aa6a Pushing up tests that test both trace and non-trace uplc 2024-09-03 16:21:53 -04:00
microproofs
a6bc0f7157 Fix positioning on unwrap_void 2024-09-03 16:21:53 -04:00
microproofs
2be76d7cda Use Delay error directly when casting from data without traces 2024-09-03 16:21:53 -04:00
KtorZ
f60df16bc2 Preserve type-aliases during blueprint generation. 2024-09-03 16:39:50 +02:00
KtorZ
007b85b864 Warn for any ignored file during source parsing
Not only for files with a .ak extension.
2024-09-03 15:28:09 +02: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
f8be81baa5 Fix README 'aiken new' example. 2024-09-01 19:11:11 +02:00
KtorZ
7bfc01413b Add missing parser snapshots. 2024-09-01 18:12:46 +02:00
KtorZ
53af366b59 Ensure uniqueness of intermediate variables in expect_type_assign
For recursive structures like Tuples, the span itself isn't enough to
  ensure uniqueness of elements (in particular tuples) holding elements
  of the same type.
2024-09-01 18:10:15 +02:00
KtorZ
6d0fe560e2 Provide UPLC machine error as trace context on test failure 2024-08-31 00:01:54 +02:00
KtorZ
fed464278d Allow field access on 'else'. 2024-08-31 00:01:46 +02:00
KtorZ
7aefa85de1 Handle importing validator handler into test module. 2024-08-30 22:43:10 +02:00
KtorZ
5dfa3e7cca Add label annotation where missing in type-checker errors. 2024-08-30 18:41:25 +02:00
KtorZ
75c059bf65 Fix module constant usage warnings. 2024-08-30 18:24:35 +02:00
KtorZ
a06383d333 Use const instead of zero-arg functions in few code-gen tests. 2024-08-30 14:47:22 +02:00
KtorZ
ef89691331 Ensure code-gen's Program version/semantic matches Plutus version 2024-08-30 14:45:02 +02:00
microproofs
4a8bec4caa Fixing gen uplc tests 2024-08-29 16:30:31 +02:00
microproofs
e772ff1787 Missed some zero parameter check 2024-08-29 16:30:30 +02:00
KtorZ
6c2e3272da Re-implement and extend docs formatter for constants 2024-08-29 16:25:35 +02:00
KtorZ
71f90ad49f Fix constant definition parser.
Wouldn't allow a proper sequence of results. Now it does.
2024-08-29 16:25:12 +02:00
KtorZ
38e8c6264d Do not trigger warnings for exported configurations. 2024-08-29 16:25:12 +02:00
KtorZ
9063549f2e Re-use expr formatter for constants. 2024-08-29 16:25:12 +02:00
microproofs
f35afe8d65 Implement SimpleExpr logic for configuration parsing
We can now use boolean, lists & all in configuration.
2024-08-29 16:25:10 +02:00
microproofs
f674f9ee97 hoist functions to super constants too 2024-08-29 16:24:14 +02:00
KtorZ
cd0a9440e8 Allow any expression as constants
This is only a start. It compiles, but with a few TODOs left open. In particular, it doesn't currently handle constants depending on other constants or functions; nor does it hoist constants.
2024-08-29 16:24:12 +02:00
KtorZ
79cf0b8d97 Fix test_framework tests trying to implement function on foreign type. 2024-08-29 13:49:09 +02:00
KtorZ
c21466831c Bump versions to 1.1.0, in anticipation. 2024-08-29 09:12:37 +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
745f14ccb2 Adjust doc to support blockquote alerts. 2024-08-28 15:28:49 +02:00
rvcas
d337e601cb chore: add a test for by name with params 2024-08-27 18:10:46 -04:00
KtorZ
efeda9a998 Prevent non-default fallback on exhaustive validator
Technically, we always need a fallback just because the way the UPLC
  is going to work. The last case in the handler pattern matching is
  always going to be else ...

  We could optimize that away and when the validator is exhaustive, make
  the last handler the fallback. Yet, it's really a micro optimization
  that saves us one extra if/else. So the sake of getting things
  working, we always assume that there's a fallback but, with the extra
  condition that when the validator is exhaustive (i.e. there's a
  handler covering all purposes), the fallback HAS TO BE the default
  fallback (i.e. (_) => fail).

  This allows us to gracefully format it out, and also raise an error in
  case where there's an extraneous custom fallback.
2024-08-27 20:16:45 +02:00
KtorZ
d615b4f889 Fix incongruous panic when annotation is missing from Datum.
It's fine for the argument to not be annotated; in which case we
  simply default back to an `Option<Data>`.
2024-08-27 18:55:18 +02:00
KtorZ
4003343444 Fix default annotation for spend's optional datum and mint argument.
When there's no type annotation in a validator handler signature, we
  provide default annotation to help the type-checker. However, for
  spend's datum and mint policy_id, those annotations mustn't be `Data`,
  but rather Option<Data> and Bytearray.

  Without that, when no annotation are provided, the compiler infer
  invalid types and fails with incongruous errors.
2024-08-27 18:42:10 +02:00
KtorZ
0510ca58f7 Implement record access syntax for validator handlers.
This is a little trick which detects record access and replace them
  with a simple var. The var itself is the validator handler name,
  though since it contains dots, it cannot be referred to by users
  explicitly. Yet fundamentally, it is semantically equivalent to just
  calling the function by its name.

  Note that this commit also removes the weird backdoor for allowing
  importing validators in modules starting with `tests`. Allowing
  validators handler to be used in importable module requires more work
  and is arguably useful; so we will wait until someone complain and
  reconsider the proper way to do it.
2024-08-27 17:16:15 +02:00
KtorZ
ee8f608c0b Omit validator return annotation when formatting
Unless it is NOT bool as it deviates from the default and while wrong, we want to preserve it to provide a good error.
2024-08-27 14:53:07 +02:00
KtorZ
d74e36d0bc Introduce 'Never' type as a safe alternative to always None options
Unfortunately, as documented in:

  https://github.com/IntersectMBO/cardano-ledger/issues/4571

  Some Option fields in the script context certificates are going to
  remain set to None, at least until the next Hard fork. There's a risk
  that people permanently lock their funds if they expect deposits on
  registration credentials to ever be `Some`.

  So, we introduce a special type that emulate an `Option` that can only
  ever be `None`. We call it `Never` and it is the first type of this
  kind (i.e. with constructors indexes not starting at 0).
2024-08-27 14:40:39 +02:00
KtorZ
af9a785d65 Provide default annotation to validators (incl. fallback)
Without that, we may encounter weird error messages when writing
  validators without an explicit `else`. Since we automatically fill it
  with a `fail`; without annotation, it unifies to a generic parameter.

  The existing check that would look for the body being an error term is
  ill-advised as it doesn't work as soon as one adds tracing, or make
  the validator a parameterized validator. Plus, it may simply trigger
  the wrong behavior as one can now annotate a validator with _whatever_
  and get pass the type-checker by plucking a `fail` keyword as body.
2024-08-25 17:12:11 +02:00
KtorZ
0c9ea196be Format uplc crate 2024-08-25 16:20:45 +02:00