KtorZ
1091eba3c3
Review & fix acceptance tests
...
Temporarily using the 'specialize-dict-key' branch from the stdlib
which makes use of Pair where relevant. Once this is merged back into
'main' we should update the acceptance test toml files to keep getting
them automatically upgraded.
This commit also fixes an oversight in the reification of data-types
now properly distinguishing between pairs and 2-tuples.
Co-authored-by: Microproofs <kasey.white@cardanofoundation.org>
2024-05-04 14:04:12 -04:00
microproofs
7b5ad961e2
fix: found issue with record access on Pairs
2024-05-04 14:04:12 -04:00
microproofs
a6003c3be9
chore: push changes in blueprint snapshot test
2024-03-27 15:57:29 -04:00
microproofs
a5a0734629
fix: casting a field type to Data with expect and traces on was assuming the raw Data was of type constr
2024-03-27 15:52:23 -04:00
microproofs
61936cb91e
fix(codegen): Add tracing when checking for a constr vs another primitive
2024-03-17 16:25:17 -04:00
KtorZ
37627e3527
Fix indentation of pipelines.
2024-03-09 20:44:51 +01:00
microproofs
c7dcb2c256
Add tests for zero arg cyclic functions and renamed function aliases
2024-03-09 13:23:27 -05:00
KtorZ
d6cc9bdfbe
Allow implicit discard when right-hand side is Void.
...
This is the most intuitive/expected behavior. Otherwise, it forces a pointless let-binding to 'Void' or into a discard.
2024-03-09 01:28:29 +01:00
microproofs
c906501836
add one more test
2024-03-08 12:25:26 -05:00
microproofs
eb07365e73
fix tests
2024-03-08 00:12:44 -05:00
microproofs
ae396c0224
Fix opaque type destructuring in code gen
2024-03-08 00:12:44 -05:00
microproofs
a3fbe6c155
fix tests
2024-03-06 23:27:10 -05:00
rvcas
25ebdc2527
fix: validator args unexpectedly unbound
...
closes #852
2024-03-06 14:15:00 -05:00
microproofs
c9dd281b45
disable assert that was blocking issue #844
2024-03-04 11:48:22 -05:00
microproofs
27eb1a3e04
Change all uses of interning besides the uplc parser to use the new CodeGenInterner
2024-03-04 11:03:23 -05:00
microproofs
e14f091b86
add back test 93
2024-03-04 10:52:56 -05:00
KtorZ
775a34bc47
Remove acceptance_test 095, now done directly from Rust.'
2024-03-03 19:33:26 +01:00
KtorZ
93347d8e7b
Add Fuzzer to the prelude.
2024-03-03 19:33:25 +01:00
KtorZ
5b4fedd084
Add PRNG to the Prelude.
2024-03-03 19:33:25 +01:00
KtorZ
bfcfc5c41b
Implement reification from Maps.
2024-03-03 19:33:25 +01:00
KtorZ
5272f5ecee
Adjust order in which Bool's constructors are declared in the prelude
...
True corresponds to Constr=1 and False corresponds to Constr=0; their position in the vector shall reflect that. Note that while this would in principle impact codegen for any other type, it doesn't for bool since we likely never looked up this type definition since it is well-known. It does now as the 'reify' function relies on this. Whoopsie.
2024-03-03 19:33:25 +01:00
KtorZ
14f1025f0b
Display counterexamples as Aiken values instead of raw UPLC.
2024-03-03 19:33:24 +01:00
KtorZ
c29d163900
Rename acceptance_test_093 -> acceptance_test_095
2024-03-03 19:33:24 +01:00
KtorZ
a703db4d14
Borrow integrated shrinking approach from MiniThesis.
2024-03-03 19:33:24 +01:00
KtorZ
3762473a60
Add preliminary plumbing to run property test through the CLI.
...
This is very very rough at the moment. But it does a couple of thing:
1. The 'ArgVia' now contains an Expr/TypedExpr which should unify to a Fuzzer. This is to avoid having to introduce custom logic to handle fuzzer referencing. So this now accepts function call, field access etc.. so long as they unify to the right thing.
2. I've done quite a lot of cleanup in aiken-project mostly around the tests and the naming surrounding them. What we used to call 'Script' is now called 'Test' and is an enum between UnitTest (ex-Script) and PropertyTest. I've moved some boilerplate and relevant function under those module Impl.
3. I've completed the end-to-end pipeline of:
- Compiling the property test
- Compiling the fuzzer
- Generating an initial seed
- Running property tests sequentially, threading the seed through each step.
An interesting finding is that, I had to wrap the prop test in a similar wrapper that we use for validator, to ensure we convert primitive types wrapped in Data back to UPLC terms. This is necessary because the fuzzer return a ProtoPair (and soon an Array) which holds 'Data'.
At the moment, we do nothing with the size, though the size should ideally grow after each iteration (up to a certain cap).
In addition, there are a couple of todo/fixme that I left in the code as reminders of what's left to do beyond the obvious (error and success reporting, testing, etc..)
2024-03-03 19:33:24 +01:00
KtorZ
4ff11f4229
Fix acceptance test 087 following BigInt seralization fix.
2024-03-02 14:11:22 +01:00
KtorZ
2b8e99a1b8
Fix CI script for acceptance tests, and have them run in parallel.
2024-03-02 14:11:22 +01:00
KtorZ
46c357df7b
Fix Int/BigInt pivot
...
We've been wrongly representing large ints as BigInt, causing them to
behave differently in the VM through builtins like 'serialise_data'.
Indeed, we expect anything that fits in 8 bytes to be encoded as Major
Type 0 or 1. But we were switching to encoding as Major type 6
(tagged, PosBigInt, NegBigInt) for much smaller values! Anything
outside of the range [-2^32, 2^32-1] would be treated as big int
(positive or negative).
Why? Because we checked whether a value i would fit in an i64, and if
it didn't we treated it as big int. But the reality is more subtle...
Fortunately, Rust has i128 and the minicbor library implements TryFrom
which enforces that the value fits in a range of [-2^64, 2^64 - 1], so
we're back on track easily.
2024-02-25 14:09:56 -05:00
rvcas
9e3f348c6c
chore: commit artifacts from acceptance tests
2024-02-13 21:29:46 -05:00
rvcas
0ccfe60072
feat: support nested void matching
2024-02-13 21:29:24 -05:00
microproofs
d8cdeba6fd
chore: lastest acceptance test lock and plutus.json files
2024-01-31 00:07:43 -05:00
microproofs
444bccf19c
fix: change list_access_to_uplc to properly handle list discards
2024-01-30 23:53:33 -05:00
microproofs
ede6c22267
remove traces from test 89
2024-01-25 14:24:21 -05:00
microproofs
78d2049d7b
fix: Using the wrong match string for discards in FieldsExpose
...
Also need to return a lambda wrapped term from list_access_to_uplc under all conditions
2024-01-25 14:18:36 -05:00
microproofs
b15e6c296b
Add a few more expect cases to test 40
2024-01-24 16:29:40 -05:00
KtorZ
b50e4ab63a
Re-format and re-run all acceptance tests.
2024-01-20 10:44:16 +01:00
KtorZ
50ebfc6090
remove wrongly committed acceptance test blueprints
...
Actually copy-pasted from 090
2024-01-20 10:38:40 +01:00
KtorZ
bf96c3afd2
Add more tests & rename 'Invalid' -> 'Unfinished'
2024-01-20 10:26:33 +01:00
KtorZ
8a90e9eda0
Improve behavior and reporting of tests expected to fail
...
Fixes #786 .
2024-01-19 18:20:58 +01:00
KtorZ
0e2b8ae251
Bump pallas dependencies to include flat bigint patch
...
Fixes #796 .
2024-01-18 18:26:21 +01:00
microproofs
c7af27a6ba
fix: generic edge case with tuples that allowed 2 tuples and 3 tuples to use the same monomorphized function.
...
Also massively reduced the space taken up by generics in scripts when using generics with list and tuples
2024-01-13 17:46:32 -05:00
microproofs
394cac86b8
feat: expect on a type now can take in a msg when in trace mode
2024-01-04 16:03:51 -05:00
rvcas
b17b7f287c
chore: update to pallas v0.20.0
2023-12-04 21:44:19 -05:00
rvcas
7c4cabada9
chore: add latest acceptance artifacts
2023-12-04 21:10:55 -05:00
microproofs
446ef11606
chore: finishing acceptance test 29
...
and updating acceptance test lock files
2023-11-08 14:31:44 -05:00
microproofs
7d319077e6
chore: clean up validator comments and
...
commit script context test lockfile
2023-11-06 15:49:13 -05:00
microproofs
5d56d41a68
chore: update lock files for acceptance tests
2023-11-06 15:37:04 -05:00
microproofs
598ec5eaef
Use a better algorithm for inlining single occurrences
2023-11-06 15:37:04 -05:00
microproofs
68d9a21c6a
commit current lock files
2023-10-07 19:42:24 -04:00
microproofs
47596f0324
feat: Remove tuple_index and record_access in favor of faster more direct functions for
...
accessing an item in a tuple or a field in a record
2023-09-28 01:05:05 -04:00
microproofs
eb0b4dd6d8
update lock files
2023-09-25 21:16:19 -04:00
microproofs
b8737a1021
add one more test for unbound generics
2023-09-25 21:16:19 -04:00
microproofs
534eb62a07
fix: There was a stack overflow due to passing unbound types to a function
2023-09-25 21:16:19 -04:00
microproofs
1cab479b81
fix: dependency hoisting for cyclic functions
...
Add more tests
2023-09-25 21:16:19 -04:00
microproofs
ae3053522e
feat: Update cyclic functions to be aware of being in a cycle.
...
Finish the creation of cyclic functions
The last part is to update vars that call into a function in the cycle
2023-09-25 21:16:19 -04:00
KtorZ
984237075a
Add new acceptance test scenario: 066
...
Mutua recursion.
2023-09-25 21:16:19 -04:00
rvcas
bc0824f4eb
chore: new aiken.lock files for examples
2023-09-13 18:17:40 -04:00
rvcas
f4d0f231d7
test: fix acceptance tests
2023-08-16 14:52:06 -04:00
rvcas
80e4a5c6a2
chore: remove build folder
2023-08-16 14:17:33 -04:00
microproofs
eda388fb29
test(aiken-lang): add a new test for list edge case in when clause patterns
2023-08-08 20:47:35 -04:00
microproofs
6254eeb2ed
add acceptance test 88
2023-08-07 12:02:44 -04:00
microproofs
f7d278a472
fix: 2 acceptance tests were throwing errors due to exhaustiveness checker
2023-08-07 12:02:44 -04:00
microproofs
36c80f36c1
fix tests
2023-08-07 12:02:44 -04:00
microproofs
bfa4cc2efc
fix: some function dependency tree path was not being updated in order
...
fix: revert to old implicit way of casting to data for now
2023-08-07 12:02:44 -04:00
rvcas
2253e29d42
chore: commit acceptance test plutus files
2023-07-17 17:34:00 -04:00
rvcas
0be09cd9e5
chore: use fmt to update examples
2023-07-12 09:16:37 -04:00
KtorZ
2a747305f7
Fixes evaluation of large positive bigint in the UPLC machine
...
Fixes #511 .
2023-07-05 18:52:14 +02:00
microproofs
67c072a1a9
test: add acceptance test 86
...
fix: prevent mutual recursion for expect type code gen functions
2023-07-04 12:24:25 -04:00
microproofs
8b3504e9a1
fix: `expect _ = ...` not including the cast from data logic if the type is data and right hand has a type annotation
2023-06-23 18:39:12 -04:00
microproofs
226556bdd6
fix: builtins using the incorrect data to type conversion when used as a function param.
2023-06-23 14:31:19 -04:00
microproofs
db369da96e
feat: Make traces produced by expect dependent on
...
the value of the tracing flag.
2023-06-23 14:03:23 -04:00
microproofs
dbfa08a5a7
fix: issue with tuple clause
...
It was not consuming the next case if there was no condition being checked in the clause.
Now it properly always consumes the next clause unless last clause.
2023-06-23 12:36:15 -04:00
microproofs
5362714a63
chore: update tests
2023-06-22 18:20:31 -04:00
microproofs
626033ff9b
fix: attempt to convert from opaque before doing monomorphization
2023-06-22 18:20:31 -04:00
microproofs
24f5c4de6b
fix: the final clause of a when expecting another clause afterwards in nested list cases.
...
fix: all elements were being destructured in tuple clauses even if not used
2023-06-19 21:43:38 -04:00
rvcas
37b2f0c239
fix: gift card example stdlib update
...
closes #596
2023-06-13 00:38:29 -04:00
microproofs
5faa925aea
fix: error when using nested boolean checks in when conditions
2023-06-06 03:04:12 -04:00
microproofs
bfd2a50a6b
fix: zero arg functions were grabbing extra dependencies they didn't need to
...
fix: Had the wrong conversion for constant maps to plutus data. Fixed to check for right conversion
2023-06-04 15:23:36 -04:00
microproofs
4838ebd39e
feat: record modules are no longer unimplemented for no fields
...
refactor: remove some clones and use a ref instead
test: add acceptance test 81
2023-05-14 18:30:51 -04:00
microproofs
b36cf1c029
chore: refactor default functions in uplc_code_gen.
...
feat: Add an identity optimization to remove functions that return the argument only.
2023-05-08 16:15:09 -04:00
microproofs
0d0c96deda
commit validator changes and tests
2023-04-28 17:05:46 -04:00
microproofs
c3184c544c
fix: wrap data reduce had the wrong argument called in recursively, thus skipping over cases that should have been reduced
...
chore: Add unit tests on for uplc optimizations
2023-04-26 17:22:16 -04:00
microproofs
b050018a37
test fix: blueprint change
2023-04-25 02:06:56 -04:00
microproofs
672a900243
chore: converted acceptance tests 5-7
2023-04-19 20:03:41 -04:00
microproofs
23a7e7e680
chore: convert acceptance test 5
...
Also constructors with no fields are now converted to a constant data term.
2023-04-19 16:08:55 -04:00
microproofs
7dd13f8d73
feat: add end to end tests to replace acceptance tests with strict uplc comparison.
...
Add acceptance tests 1,2, 6 as end to end tests
2023-04-19 16:08:55 -04:00
microproofs
fc1b8738df
fix: fixed how the ir was generating for expect Void, expect Bool, let Void
...
add some acceptance tests for the various scenarios
2023-04-12 22:37:33 -04:00
KtorZ
0846fe2d5f
Add new failing test case for 048 (clause guards)
...
It seems like we don't properly handle clause guards for wildcard
patterns. Seems like a codegen issue here as the code type-check
properly.
2023-04-12 08:24:18 +02:00
Kasey White
ff290bc582
add expect false test
2023-04-09 17:43:56 -04:00
Kasey White
02d57cc076
tests pass now after adding in final wrapper as air elements
2023-04-09 17:43:56 -04:00
Kasey White
9e95e24624
now tests are passing
2023-04-09 17:43:56 -04:00
Kasey White
897011e9bc
misc changes
2023-04-09 17:43:56 -04:00
Kasey White
f4ba6b8985
fix: unused validator args had an incorrect if check
2023-04-09 17:43:56 -04:00
Kasey White
3f45b524b8
feat: unused validator args are not expect checked
2023-04-09 17:43:56 -04:00
Kasey White
8c8312a412
fix: expect true was always expecting false
2023-04-09 17:43:56 -04:00
KtorZ
23b72e18f3
Add new acceptance test scenario: expect unary constructors.
...
```
Error:
× Main thread panicked.
├─▶ at crates/aiken-lang/src/gen_uplc.rs:1852:33
╰─▶ called `Option::unwrap()` on a `None` value
```
2023-04-09 17:43:56 -04:00
rvcas
1444c9328d
fix some typos
2023-04-07 16:51:18 -04:00
KtorZ
814157dd7b
Fix formatter inconsistency with record spread patterns.
2023-03-30 13:02:20 +02:00
KtorZ
17431daaa4
Correctly nest multiline pipeline expressions.
2023-03-30 12:48:15 +02:00
rvcas
703429af98
chore: commit plutus.json
2023-03-27 20:00:32 -04:00