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
rvcas
cb0ae0c074
feat: impl some conversion methods on CheckedModule
2024-03-08 19:19:07 -05:00
rvcas
d55b7844f0
feat: impl serde for TypeAliasAnnotation
2024-03-08 19:19:07 -05:00
rvcas
2b5ed95df5
feat: serialize as cbor
2024-03-08 19:19:07 -05:00
rvcas
836e853827
fix: bring back vec1
2024-03-08 19:19:07 -05:00
rvcas
9d99b509b2
chore: this should be gone
2024-03-08 19:19:07 -05:00
rvcas
fe6710935d
feat: impl serde on errythang
2024-03-08 19:19:07 -05:00
Pi Lanningham
e944f10372
Add an optional check count; when we run a command that runs tests, we can set this to Some(x) and it'll print in the summary
2024-03-08 17:36:32 -05:00
KtorZ
a9d596f4cb
Memoize simplification steps during property-based shrinking.
...
I've been benchmarking that through the shrink of 'large' lists, and the cache brings about 1.5x speed increase. For small and simple cases, the cache as no visible effects (positive or negative).
2024-03-08 18:58:51 +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
ed9f5c6ef7
Preserve TypeAlias in types for better context/feedback.
2024-03-08 15:59:33 +01:00
KtorZ
877d10ef22
Use inferred Fuzzer inner type for unify error when possible.
2024-03-08 15:57:41 +01:00
microproofs
eb07365e73
fix tests
2024-03-08 00:12:44 -05:00
microproofs
94f383762c
step up the optimizations a bit more by inlining a small function
2024-03-08 00:12:44 -05:00
microproofs
bf429fbdbf
remove unused import
2024-03-08 00:12:44 -05:00
microproofs
dcec8ecfe6
remove unused special function
2024-03-08 00:12:44 -05:00
microproofs
541d96f558
remove comment line
2024-03-08 00:12:44 -05:00
microproofs
275db2fd11
update 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
1edd1a1fa3
change currying to happen with 3 or more occurrences
2024-03-08 00:12:44 -05:00
microproofs
e9122de061
more identity reduce testing
2024-03-08 00:12:44 -05:00
microproofs
dabaae8ca6
more identity and inline tests
2024-03-08 00:12:44 -05:00
microproofs
97b0cf6813
reorganize shrinker tests
2024-03-08 00:12:44 -05:00
microproofs
eb709d6fc3
reorder tests to match order of functions
2024-03-08 00:12:44 -05:00
rvcas
fab6d5aff7
chore: fix fmt
2024-03-07 19:32:33 -05:00
KtorZ
8e558d893f
Only reify unit tests assertions on failure.
2024-03-07 19:07:55 +01:00
KtorZ
0d599f7e2d
re-add missing newline after test blocks.
2024-03-07 18:28:21 +01:00
KtorZ
23a22a65cb
Handle (recursive) generic types during reification.
...
Also moved a bunch of functions from code-gen back into _tipo_, as
they're better suited and generic enough to be reused elsewhere.
2024-03-07 18:07:52 +01:00
microproofs
a3fbe6c155
fix tests
2024-03-06 23:27:10 -05:00
microproofs
e217423145
mixed up pair builtin
2024-03-06 23:27:10 -05:00
microproofs
bdd84dc952
fixing the tests lead to me create a new function for converting from data
2024-03-06 23:27:10 -05:00
microproofs
892da06e14
add more runtime checking for a few of the data to primitive conversions
2024-03-06 23:27:10 -05:00
KtorZ
0f926d3c31
Fix code-gen tests due to associativity change.
2024-03-07 01:28:51 +01: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
59996850c1
Implement 'reify_constant' and rename reify to 'reify_data'
...
Both fullfill similar goal, but reify_constant sits one level above.
2024-03-07 01:17:06 +01:00
KtorZ
8ffa68d2f0
Fix && and || associativity.
...
Somehow, these have always been right-associative, when the natural thing to expect is left-associativity. It now matters when trying to crawl down binary tree to display them properly.
2024-03-07 01:17:05 +01:00
rvcas
c9ab1aec98
chore: consume errs instead of cloning
2024-03-06 18:20:14 -05:00
rvcas
f8377af0c8
feat(parse): run in parallel
2024-03-06 18:16:07 -05:00
rvcas
9c5556aa1e
feat(deps): remove tests from ast and ignore warnings
2024-03-06 18:16:07 -05:00
rvcas
25ebdc2527
fix: validator args unexpectedly unbound
...
closes #852
2024-03-06 14:15:00 -05:00
rvcas
ad4840958c
chore: add test for validator args with no annotation
2024-03-06 11:19:32 -05:00
Matthias Benkort
f14bab69c0
Merge pull request #851 from aiken-lang/update-built
...
update package dependency
2024-03-06 17:11:05 +01:00
microproofs
2bc433f61e
fix: need to use temp_term for counting var occurrences in identity reducer
...
chore: Adding more shrinker tests and fixed some of the existing ones
2024-03-05 12:08:18 -05:00
microproofs
b146db8c95
update package dependency
2024-03-05 10:23:29 -05:00
KtorZ
966a20f691
Fix run_n_times for properties expected to fail.
2024-03-04 23:41:37 +01:00
KtorZ
4d432513e0
Fix interesting case identification for properties expected to fail.
2024-03-04 23:28:45 +01:00
KtorZ
4097d1edb2
Fix negative integer literal parsing in fuzzer DSL.
2024-03-04 23:27:23 +01:00
KtorZ
fbeb611e5f
Show counter examples in green when property is expected to fail.
2024-03-04 20:41:04 +01:00
KtorZ
3e922c0a52
Allow primitive literals, lists and tuples in fuzzer expressions.
2024-03-04 20:41:04 +01:00
rvcas
c7cd89d127
chore: fix fmt
2024-03-04 13:03:07 -05:00
KtorZ
df3baa082e
Remove 'seed' arg from 'with_project' to FinishedTests event
...
Also polish a bit the output of tests, move test result to stdout to allow filtering out warnings by redirecting stderr to /dev/null.
2024-03-04 18:43:51 +01: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
d971d9818b
update tests and ensure identity reducer handles no_inline lambda
2024-03-04 10:52:56 -05:00
microproofs
af6c107187
remove unneeded assert
2024-03-04 10:52:56 -05:00
microproofs
06ca22c26a
update inliner to handle no_inline functions
2024-03-04 10:52:56 -05:00
microproofs
4e928f39db
start adding no inline flag to functions
2024-03-04 10:52:56 -05:00
microproofs
2aaa46e54c
remove print
2024-03-04 10:52:56 -05:00
microproofs
c6ef37cc5c
checkpoint
2024-03-04 10:52:56 -05:00
microproofs
4e0aaf970f
update tests and fix final unique issues
2024-03-04 10:52:56 -05:00
microproofs
62963f7fc2
feat: finish curry optmization, improve inline optimization further, and add a subtract integer to add integer conversion
2024-03-04 10:52:56 -05:00
microproofs
7d8fdc0f22
prevent curried function hoisting if occurrences is 0
2024-03-04 10:52:56 -05:00
microproofs
258b5abf23
now currying works
2024-03-04 10:52:56 -05:00
microproofs
3b55a32583
finish up curry optimization on builtins
2024-03-04 10:52:56 -05:00
microproofs
58d586c5cf
large refactor to reduce complexity
2024-03-04 10:52:56 -05:00
microproofs
8f84eb382f
commit some changes so far
2024-03-04 10:52:56 -05:00
microproofs
9a52258e14
chugging along with a small refactor and some more work toward currying
2024-03-04 10:52:56 -05:00
microproofs
2f72510102
chore: Add back curry code removed in a previous commit
2024-03-04 10:52:56 -05:00
KtorZ
8e8e0de044
cargo fmt --all
2024-03-04 14:46:16 +01:00
KtorZ
362acd43a3
Rework and optimize PRNG
...
Using ByteArrays as vectors on-chain is a lot more efficient than relying on actul Data's list of values. From the Rust end, it doesn't change much as we were already manipulating vectors anyway.
2024-03-04 14:27:16 +01:00
KtorZ
dd1c7d675f
Allow Aiken files to have more than one dot-separated suffix.
2024-03-04 00:15:05 +01:00
KtorZ
50faf81c0f
Use u64 for PRNG choices.
2024-03-04 00:14:34 +01:00
KtorZ
900b73b21a
cargo fmt --all
2024-03-03 21:05:43 +01:00
KtorZ
fbda31d980
Fix and improve test outputs for prop tests.
2024-03-03 21:00:51 +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
a7b9d4bb22
Use u8 for fuzzer choices instead of u32
...
Value is bounded between 0 and 255.
2024-03-03 19:38:49 +01:00
KtorZ
30841fe000
Rework generate_raw to avoid need to intern in prop tests
...
Also, this commit makes `apply_term` automatically re-intern the
program since it isn't safe to apply any term onto a UPLC program. In
particular, terms that introduce new let-bindings (via lambdas) will
mess with the already generated DeBruijn indices.
The problem doesn't occur for pure constant terms like Data. So we
still have a safe and fast version 'apply_data' when needed.
2024-03-03 19:33:27 +01:00
KtorZ
1134b8d7d0
Register tests as callable definitions.
...
Also move the registering of validators into the same place as they
other and define a little cute function to avoid code-duplication.
2024-03-03 19:33:27 +01:00
KtorZ
c2dc47fa0b
Refactor creation of CodeGenerator and management of known data_types and functions.
...
This was a mess to say to the least. The mess started when we wanted
to make all definitions in codegen use immutable maps of references --
which was and still is a good idea. Yet, the population of the data
types and functions definitions was done somehow in a separate step,
in a rather ad-hoc manner.
This commit changes that to ensure the project's data_types and
functions are populated while type checking the AST such that we need
not to redo it after.
The code for registering the data type definitions and function
definitions was also duplicated in at least 3 places. It is now a
method of the TypedModule.
Note: this change isn't only just cosmetic, it's also necessary for
the commit that follows which aims at adding tests to the set of
available function definitions, thus allowing to make property tests
callable.
2024-03-03 19:33:26 +01:00
KtorZ
26e563a9be
Hardened property-based testing framework. More tests, less bugs.
...
Those end-to-end tests are useful. Both for controlling the behavior of the shrinker, but also to double check the reification of Plutus Data back into untyped expressions.
I had to work-around a few things to get opaque type and private types play nice. Also found a weird bug due to how we apply parameters after unique debruijn indexes have been also applied. A work-around is to re-intern the program.
2024-03-03 19:33:26 +01:00
KtorZ
3df5bcd96d
Fix shrinker impl and implement 3rd strategy of bin_search reduction.
2024-03-03 19:33:26 +01:00
KtorZ
70ea3c9598
Write boilerplate code for being able to easily test properties.
...
Loads of plumbing, but we now have at least some nice ways to test property execution and shrinking.
2024-03-03 19:33:26 +01:00
KtorZ
2db15d59be
Rename 'aiken-project::script' into 'aiken-project::test_framework'
2024-03-03 19:33:26 +01:00
KtorZ
bbc9fc5762
Yield proper user-facing error when inferring Fuzzer usage
2024-03-03 19:33:26 +01:00
KtorZ
cf61387a41
Allow prop test argument to be (optionally) annotated.
2024-03-03 19:33:25 +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
41fdcbdfae
Add via keywords to str_to_keyword
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
c766f44601
Allow Fuzzer with type parameter
...
Also fix shrinker first reduction, as well as passing of List/Tuples to fuzzer.
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
aadf3cfb48
Allow test definition to carry one parameter
...
The parameter is special as it takes no annotation but a 'via' keyword followed by an expression that should unify to a Fuzzer<a>, where Fuzzer<a> = fn(Seed) -> (Seed, a). The current commit only allow name identifiers for now. Ultimately, this may allow full expressions.
2024-03-03 19:33:24 +01:00
KtorZ
84c4ccaf4c
Forbid opaque types in the application binary interface.
...
We cannot enforce internal invariants on opaque types from only structural checks on Data. Thus, it is forbidden to find an opaque type in an outward-facing interface. Instead, users should rely on intermediate representations and lift them into opaque types using constructors and methods provided by the type (e.g. Dict.from_list, Rational.from_int, Rational.new, ...)
2024-03-03 13:55:10 +01:00
rvcas
d698f76e3c
fix(codegen): builtin calls for g1 and g2 where flipped
...
closes #840
2024-02-29 12:13:51 -05:00
rvcas
ff5491caa0
fix(check): only disallow ml_result in data
2024-02-29 11:19:26 -05:00
rvcas
d18caaeecb
feat(cli): support mainnet address output
...
closes #832
2024-02-27 21:55:18 -05:00
rvcas
2018a18d15
fix: error message for bls elements in a type def
...
closes #840
2024-02-27 21:21:18 -05: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
8d59ba1c77
chore: update the conformance tests
2024-02-20 13:05:28 -05:00
rvcas
a15fead982
chore: remove unused import
2024-02-20 13:05:28 -05:00
rvcas
20917bbd5b
feat(machine): fix Value::Constr fields order
...
cc @MicroProofs
2024-02-20 13:05:28 -05:00
rvcas
028528899c
feat(runtime): implement byteStringToInteger and add conformance tests
2024-02-20 13:05:28 -05:00
rvcas
da6e5ec6d1
feat: implement integerToByteString
...
Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2024-02-20 13:05:28 -05:00
rvcas
c7dd4d0e48
feat(aiken-lang): expose integerToByteString and byteStringToInteger
2024-02-20 13:05:28 -05:00
rvcas
fc3bc4d9ff
feat(cost_model): add costing for integerToByteString and byteStringToInteger
2024-02-20 13:05:28 -05:00
rvcas
70d4d7fdeb
feat(runtime): add force count and arity for integerToByteString and byteStringToInteger
2024-02-20 13:05:28 -05:00
rvcas
b0eade209b
feat(DefaultFunction): add IntegerToByteString and ByteString
2024-02-20 13:05:28 -05:00
rvcas
0ccfe60072
feat: support nested void matching
2024-02-13 21:29:24 -05:00
rvcas
ac0c73a56a
chore: clippy fixes
2024-02-13 20:26:12 -05:00
rvcas
3582c5569d
fix: no single when clause warning sometimes
...
While looking at some code, I noticed that this
warning would show up even if an error for a
non-exhaustive when/is shows up for the same when/is
expression. This isn't a useful situation to show this
warning because things are not exhaustive yet so we should
let the user finish and only provide the errors. If things
are exhaustive then the code proceeds and if a warning was set
when there's only one clause pattern then this warning message
can be pushed because that's when it's actually useful.
2024-02-13 20:12:40 -05:00
rvcas
4c5a449d83
chore: improve a comment/doc
2024-02-13 19:46:34 -05:00
microproofs
6e2f9b9eb9
fix tests
2024-02-07 12:48:07 -05:00
microproofs
056e3d76ea
change check_validator_args to check type after each arg
2024-02-07 12:48:07 -05:00
microproofs
6c6be3f53d
got past the errors and warnings
2024-02-07 12:37:37 -05:00
microproofs
51f1da2505
Removed AirStatements and AirExpressions
...
Still a WIP
2024-02-07 12:37:37 -05:00
microproofs
b807d58e89
fix first compiler pass of errors
2024-02-07 12:37:37 -05:00
microproofs
dc195b22d4
missed another hoist over
2024-02-07 12:36:35 -05:00
microproofs
713b16e25d
we now build forwards when it comes to piplines and expressions
...
so this test got reordered
2024-02-07 12:36:35 -05:00
microproofs
d1c784ed49
few more hoist over fixes
2024-02-07 12:36:35 -05:00
microproofs
3938d74bb6
missed a hoist over
2024-02-07 12:36:35 -05:00
microproofs
6b97ab71fe
fix up code gen tests
2024-02-07 12:36:35 -05:00
microproofs
4ab3b61200
In most cases the context isn't need so I made the code more explicit about that
2024-02-07 12:36:35 -05:00
microproofs
575dde9885
fix: issue with reordering statements caused clause props to not be updated
2024-02-07 12:36:35 -05:00
microproofs
8702c736d0
fix warning
2024-02-07 12:36:35 -05:00
microproofs
806a74c192
fix all current errors
2024-02-07 12:36:35 -05:00
microproofs
9f96e4bc5a
fix first compiler pass of errors
2024-02-07 12:36:35 -05:00
KtorZ
a12c374258
Start turning AirTree statements into expressions (let)
...
Still many places to fix, WIP.
2024-02-07 12:36:35 -05:00
KtorZ
3c8460e6af
Allow annotating Data for blueprint
...
This commit allows Data to be optionally annotated with a
phantom-type. This doesn't change anything in codegen but we can now
leverage this information to generate better blueprint schemas.
2024-02-07 11:48:52 -05:00
KtorZ
20ce19dfb1
Fix error hint when expecting 0 generic parameters.
2024-02-07 11:48:52 -05:00
microproofs
0e2995e16e
fix test
2024-02-07 11:48:52 -05:00
microproofs
3b4c6cb2aa
fix: missing message error term in one place for type is void
2024-02-07 11:48:52 -05:00
microproofs
e25be7643e
discards will now check for type too.
2024-02-07 11:48:52 -05:00
microproofs
982eff449e
chore: Release
2024-01-31 13:48:20 -05:00
microproofs
551941392e
fix: assert had one minor edge case due to final clauses with lists
2024-01-31 00:05:09 -05:00
microproofs
444bccf19c
fix: change list_access_to_uplc to properly handle list discards
2024-01-30 23:53:33 -05:00
microproofs
a83220c8d9
fix: module_name was being overrided by the moduleselect field
2024-01-30 23:52:50 -05:00
Kuly14
81e93b4309
Introduce cli aliases for check and build subcommands
2024-01-30 12:32:17 -05:00
rvcas
3a7a0c1971
chore: remove unused deps
2024-01-30 12:28:18 -05:00
microproofs
8584adc1b7
chore: Release
2024-01-25 15:10:11 -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
rvcas
defd36ad8c
chore: Release
2024-01-25 11:07:32 -05:00
rvcas
1ab6d050af
chore: bump pallas
2024-01-25 11:07:18 -05:00
rvcas
589bb9a4b3
chore: change how we depend on pallas
2024-01-24 21:26:48 -05:00
microproofs
ae0b428658
update tests to account for new verbose tracing
2024-01-24 16:29:40 -05:00
microproofs
00e1942999
another test fix
2024-01-24 16:29:40 -05:00
microproofs
dc61e11813
fix test
2024-01-24 16:29:40 -05:00
microproofs
36a0b317ad
fix condition to account for tail presence
2024-01-24 16:29:40 -05:00
microproofs
3c81ebf137
updating more of the tests
2024-01-24 16:29:40 -05:00
microproofs
51f1f2b67f
change redundant if branches
2024-01-24 16:29:40 -05:00
microproofs
e523ae63f3
fixed some of the tests
2024-01-24 16:29:40 -05:00
microproofs
3a44c45b48
fix: one builtin error wasn't be caught with a messaged exception
2024-01-24 16:29:40 -05:00
microproofs
eda4e259d6
minor fix and some refactoring on the if statements
2024-01-24 16:29:40 -05:00
microproofs
82fc82ceee
fix: used wrong index in tupleAcessor
2024-01-24 16:29:40 -05:00
microproofs
956c3d6cf0
feat: refactor code gen to avoid builtin errors when tracing is turned on
2024-01-24 16:29:40 -05:00
KtorZ
54a1b50138
Make behavior between curly- and paren-delimited blocks consistent.
...
Note that the formatter rewrite parens-block sequences as curly-block
sequences anyway. Albeit weird looking syntax, they are valid
nonetheless.
I also clarified a bit the hints and description of the
'illegal::return' error as it would mistakenly say 'function' instead
of 'block'.
2024-01-20 10:37:07 +01:00
KtorZ
bf96c3afd2
Add more tests & rename 'Invalid' -> 'Unfinished'
2024-01-20 10:26:33 +01:00
Matthias Benkort
cb6fd59dbd
Fix minor typo in error label
2024-01-20 09:58:36 +01:00
rvcas
25a837ab3f
feat: parser and check fixes
...
- do not erase sequences if the sole expression is an assignment
- emit parse error if an assignment is assigned to an assignment
- do not allow assignments in logical op chains
2024-01-19 14:32:21 -05:00
KtorZ
8a90e9eda0
Improve behavior and reporting of tests expected to fail
...
Fixes #786 .
2024-01-19 18:20:58 +01:00
KtorZ
2b4137dc24
Revert "minor refactor"
...
This reverts commit 21f0b3a6220fdafb8f6aad6855de89d8cdde0e1b.
Rationale:
The absence of clause guard was here done *on purpose*. Indeed,
introducing a clause guard here forces either duplication or the use
of a wildcard which is not "future proof".
Should we make a change to that one day (e.g. add a new variant to
TraceLevel), we won't get any compiler warning and we'll very likely
forget to update that particular section of the code.
So as much as possible, enforce complete pattern-match on variants
make for code that is easier to maintain in the long-run.
2024-01-19 14:31:09 +01:00
microproofs
af90b38bf8
minor refactor
2024-01-19 14:31:04 +01:00
KtorZ
6fa272bd34
Remove compiler-generated helper 'global' traces in compact mode.
...
Since there's no line number to show here, we don't have much choice. And the alternative of showing shorter traces as code is just ugly as hell.
2024-01-19 14:30:44 +01:00
KtorZ
42fdecf41f
Fix coloring output of multi-line traces.
2024-01-19 14:30:44 +01:00
KtorZ
3d131a5d09
Fix CLI docs for traces.
2024-01-19 14:30:16 +01:00
KtorZ
59c784778e
Convert span's start to line number + col
...
This requires to make line numbers a first-class citizen in the module
hierarchy but it is fortunately not _too involved_.
2024-01-19 14:30:15 +01:00
KtorZ
e67d5863a1
Introduce 'compact' trace level verbosity
...
For now, it only shows the span start. We'll change that in the next commit to show a line number and a column.
2024-01-19 14:30:15 +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
microproofs
f79b37d551
Replace 'bool' with 'TraceLevel' in codegen
...
Co-authored-by: KtorZ <matthias.benkort@gmail.com>
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
Matthias Benkort
81e29539c8
Merge pull request #803 from aiken-lang/780-possible-bug-with-test-github-action-version-generated-by-aiken-new
...
fix: aiken new github action version
2024-01-19 14:27:38 +01:00
KtorZ
0e2b8ae251
Bump pallas dependencies to include flat bigint patch
...
Fixes #796 .
2024-01-18 18:26:21 +01:00
microproofs
1796147264
fix: aiken new github action version
2024-01-18 12:10:06 -05:00
microproofs
06672fce05
add new test
2024-01-13 19:29:34 -05:00
microproofs
d26524048e
fix: headlist builtin on assoc lists
...
implement chooseunit for 0 args
2024-01-13 19:29:34 -05: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
Niels Mündler
f934e87b1d
Reuse "convert_tag_to_constr"
2024-01-13 13:23:58 -05:00
Niels Mündler
cda1716d47
Unify construction of PlutusData objects from int + fields
2024-01-13 13:23:58 -05:00
Niels Mündler
742a728d53
Fix conformance test to make a point
2024-01-13 13:23:58 -05:00
Niels Mündler
316842876d
Fix PlutusData Constr test case
2024-01-13 13:23:58 -05:00
Niels Mündler
4bd8ab890a
Add reverse mapping for PlutusData constr
2024-01-13 13:23:58 -05:00
Niels Mündler
0ae631a1fe
Fix parsing Constr PlutusData
2024-01-13 13:23:58 -05:00
microproofs
4a8fecb70a
fix: satisfy clippy's demands
2024-01-11 14:53:02 -05:00
rvcas
8b62873ef5
fix(format): post trace sequences getting wrapped in curlies closes #781
2024-01-09 22:39:55 -05:00
microproofs
ff462fa8ea
don't need clippy macro anymore :)
2024-01-08 18:08:50 -05:00
microproofs
f722af1149
fix: accidentally put quotes around tail_name
2024-01-08 18:08:50 -05:00
microproofs
2216f387c3
refactor: change codegen uplc to have more type safety
...
Also refactor list_access_to_uplc
2024-01-08 18:08:50 -05:00
Mitchell Turner
7992a50bec
Make foreign `Language` type publicly available ( #793 )
...
* Make foreign type public available
* Fix formatting
2024-01-08 13:31:21 -08:00
KtorZ
30a6b77116
Get rid of 'VoidMsg' in favor of an 'Option'.
2024-01-04 16:03:51 -05:00
microproofs
c50a9cb5bd
refactor: convert msgs to use AirMsg type instead of AirTree
2024-01-04 16:03:51 -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
microproofs
4fc65cc600
feat: change expect from data on constrs to take in a message term
2024-01-04 16:03:51 -05:00
microproofs
43e84d7af7
fixing gen_uplc tets
2024-01-04 16:03:51 -05:00
microproofs
c7a1ff0959
refactor how tracing is popped off to be in one location in uplc_gen
2024-01-04 16:03:51 -05:00
microproofs
355e38d6e2
feat: expects now print the line of code that failed
2024-01-04 16:03:51 -05:00
microproofs
412945af3a
update aiken code gen test
2024-01-04 16:03:51 -05:00
microproofs
aa51ce3e3e
feat: add code messages when using expects on constrs
2024-01-04 16:03:51 -05:00
microproofs
71cfb6f6af
feat: Add specific messages for using expect with booleans
...
TODO: fill out the rest of the expects with messages
2024-01-04 16:03:51 -05:00
Niels Mündler
7b452c21f0
Fix formatting
2023-12-29 22:57:10 -05:00
Niels Mündler
4c60be368e
Add command line option to shrink uplc
2023-12-29 22:57:10 -05:00
Niels Mündler
b6acdde552
Use to_i64 for clarity
2023-12-19 12:20:10 -05:00
Niels Mündler
d06f2f6008
Formatting
2023-12-19 12:20:10 -05:00
Niels Mündler
eefd26c6fa
Add acceptance tests for this tricky case
2023-12-19 12:20:10 -05:00
Niels Mündler
fb56700bde
Fix and re-enable pretty print test for bigint
2023-12-19 12:20:10 -05:00
Niels Mündler
89e518f878
Deduplicate code
2023-12-19 12:20:10 -05:00
Niels Mündler
ba76c1d2cf
Adjust acceptance tests and fix IData and UData
2023-12-19 12:20:10 -05:00
Niels Mündler
022503e254
Fix to_pallas_bigint
2023-12-19 12:20:10 -05:00
Niels Mündler
1b1636ab0e
Fix parsing of negative bigint
2023-12-19 12:20:10 -05:00
Niels Mündler
0cfcd78039
Use more clear functions
2023-12-15 21:59:57 -05:00
Niels Mündler
8c619954d3
Add conformance test for big ints
2023-12-15 21:59:57 -05:00
Niels Mündler
ceb6d63e95
Add parsing for big builtins
2023-12-15 21:59:57 -05:00
microproofs
6a10be3e82
chore: remove redundant clone
2023-12-15 21:58:02 -05:00
microproofs
a0ec92897b
chore: clean up pr
2023-12-15 21:58:02 -05:00
microproofs
2cd1379aec
for now comment out curry code so the rest of the changes
...
can be merged to main
2023-12-15 21:58:02 -05:00
microproofs
c0c9f2f432
commit latest changes
2023-12-15 21:58:02 -05:00
microproofs
058a190294
feat: implement curried tree pruning
2023-12-15 21:58:02 -05:00
microproofs
51079b8590
fix: builtin_force_reducer wasn't handling double forces correctly
2023-12-15 21:58:02 -05:00
microproofs
4015550f55
start testing the first stage of currying builtins
2023-12-15 21:58:02 -05:00
microproofs
249581e1bc
chore: continuing progress on implementing currying optimization for builtins
...
Introduced some new abstractions to make a different number of args easier to deal with
2023-12-15 21:58:02 -05:00
microproofs
8fdedb754e
chore: continue more on curry optimizations
2023-12-15 21:58:02 -05:00
microproofs
88e21449c5
chore: comment fixes
2023-12-15 21:58:02 -05:00
microproofs
5c688b1404
Feat: refactor optimizations to use tree traversal algorithm
...
This makes each optimization a single function that acts on an existing tree traversal function
2023-12-15 21:58:02 -05:00
rvcas
07122aaa88
feat: allow importing off validators in validators/tests/*
2023-12-11 18:27:08 -05:00
Niels Mündler
b25e82ed36
Handle errors and format
2023-12-08 12:19:22 -05:00
Niels Mündler
772e73ae48
Fix parsing of hex encoded escaped bytes
2023-12-08 12:19:22 -05:00
Niels Mündler
3ac35f4e00
Make sure that new issue is covered by testcase
2023-12-08 12:19:22 -05:00
Niels Mündler
d0bc782f75
Fix pretty prenting of strings in complex data structures
2023-12-08 12:19:22 -05:00
KtorZ
92488e535a
Fix type definitions for g1 & g2 elements.
2023-12-08 16:58:12 +01:00
microproofs
825e65d7a3
fix: zero arg functions were being compiled without the trace messages
...
Now traces are added before evaluating
2023-12-06 10:31:48 -05:00
rvcas
2647e4aae6
chore: Release
2023-12-04 22:14:03 -05:00
rvcas
0a1e0d7bee
feat: remove flat-rs crate and use it through pallas_codec
2023-12-04 22:01:51 -05:00
rvcas
b17b7f287c
chore: update to pallas v0.20.0
2023-12-04 21:44:19 -05:00
rvcas
c50d4d1396
fix: forgot to handle None case for other_fun in validator
2023-11-29 21:24:30 -05: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
1f411cde0e
chore: needless dbg
2023-11-28 20:59:23 -05:00
rvcas
2dab62857f
chore: useless rebinding
2023-11-28 19:46:08 -05:00
rvcas
832ca81a8c
fix(lsp): when desugaring and/or chains we should use the whole span of the chain for the generated BinOp locations
2023-11-28 19:19:56 -05:00
rvcas
7015a9badc
feat(lsp): hover support for the optional multi validator fn
2023-11-28 19:18:29 -05:00
rvcas
2159053cb5
fix: using the word pattern here reads better and applies more broadly like for lists
2023-11-28 16:15:24 -05:00
rvcas
a46a7e82b7
feat: implement hover on when clause patterns
2023-11-28 16:13:08 -05:00
rvcas
f7dd2de17b
feat: implement hover info for tuple, list, and contructor pattern elements
2023-11-28 16:12:37 -05:00
rvcas
6ce30bd949
fix: allow spread operator on positional constructors closes #677
2023-11-27 23:11:17 -05:00
rvcas
d5820bb20a
fix: restore printing of some error messages
...
We rely on some errors to just bubble up and get printed.
By matching on result at the top level like this we blocked some
error messages from being able to be printed. For me this showed up
when `cargo run -- new thing/thing` printed nothing even when there
was an existing `thing` folder. It has already been the pattern for
sometime for some subcommands to handle calling process::exit(1) in
situations where it needs to handle error reporting more specially. It
may seem lame, hacky, or repetitive but it's easy to maintain and read.
2023-11-27 21:48:56 -05:00
rvcas
2980e8e21d
fix: use a distinct warning for discarded let assignments to avoid confusion closes #763
2023-11-27 21:23:10 -05:00
KtorZ
40c0fa7d77
Add --watch flag to the 'build' and 'docs' commands too.
2023-11-25 15:14:09 +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