Kasey White
d7cfca2a57
fix condition and branch body getting passed same scope
2023-02-16 20:27:00 -05:00
Kasey White
d1ca85c4bc
feat: add support for assign and nested assign
...
My formatter is not working :'(
2023-02-16 20:27:00 -05:00
KtorZ
3204322da6
Fix validator lookup by title.
...
We want the lookup to yield a result when there's only a single
validator; and no title is provided. So that users can simply do
'aiken address' in their project if it's unambiguous. The validator's
name is only required to disambiguate between multiple validators.
I also noticed that the order of arguments in with_validator was
wrong. Somehow.
2023-02-16 10:28:27 +01:00
KtorZ
20841962f6
Fix error messages still referring to blueprint's purpose.
2023-02-16 10:06:12 +01:00
Matthias Benkort
ec6baf3a6a
Merge pull request #351 from aiken-lang/acceptance-test-054-pattern-match-on-list
...
Add new acceptance test scenario: 056
2023-02-16 10:01:56 +01:00
rvcas
2151fe4484
fix(infer): if branch bodies need to be checked in a new scope
2023-02-16 00:05:55 -05:00
rvcas
c4a588f3dd
test(check): if scoping
2023-02-16 00:05:55 -05:00
rvcas
7b0faa7c1c
test(check): validator errors and warning
2023-02-16 00:05:55 -05:00
rvcas
a311531508
fix(cli): aiken address
2023-02-16 00:05:55 -05:00
rvcas
8b4985498b
chore: add fmt test for validator
2023-02-16 00:05:55 -05:00
rvcas
2e78b7100c
fix: blueprint tests
2023-02-16 00:05:55 -05:00
rvcas
b057d27465
fix: some updates from latest main
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
d03288cece
feat(validator): move return type and arity check to infer
2023-02-16 00:05:55 -05:00
rvcas
a88a193383
fix: properly lex new token and adjust parsed spans
2023-02-16 00:05:55 -05:00
rvcas
e647330433
fix: better formating for validator
2023-02-16 00:05:55 -05:00
rvcas
a044c3580e
feat: typecheck validators
2023-02-16 00:05:55 -05:00
rvcas
2e7fe191db
feat(definitions):
...
* add parsing for new validator defs
* start adding typechecking
* add a unit test for parsing
2023-02-16 00:05:55 -05:00
Kasey White
2fa494bda7
fix: calculated list pattern length with tail incorrectly before.
...
Now subtract 1 from length since next item does not need a end of list check
2023-02-15 22:12:41 -05:00
KtorZ
56258dc815
Fix todo/error parser on when clauses.
2023-02-16 00:40:49 +01:00
KtorZ
808ff97c68
Preserve trace, error & todo formatting.
2023-02-15 23:19:07 +01:00
KtorZ
6525f21712
Remove 'Todo' from the AST & AIR
...
Todo is fundamentally just a trace and an error. The only reason we kept it as a separate element in the AST is for the formatter to work out whether it should format something back to a todo or something else.
However, this introduces redundancy in the code internally and makes the AIR more complicated than it needs to be. Both todo and errors can actually be represented as trace + errors, and we only need to record their preferred shape when parsing so that we can format them back to what's expected.
2023-02-15 21:57:08 +01:00
KtorZ
7b676643bd
Lift 'error' up one level in the parser and remove its label.
...
We now parse errors as a combination of a trace plus and error term. This is a baby step in order to simplify the code generation down the line and the internal representation of todo / errors.
2023-02-15 21:09:03 +01:00
KtorZ
7abd76b6ad
Allow to trace expressions (and not only string literals)
...
This however enforces that the argument unifies to a `String`. So this
is more flexible than the previous form, but does fundamentally the
same thing.
Fixes #378 .
2023-02-15 21:07:56 +01:00
KtorZ
7251b2d01e
Remove single-argument function call special-case in formatter
...
Not sure what this special case was trying to achieve, but it's not right. There's no need to handle function call with a single argument differently than the others.
2023-02-15 17:22:08 +01:00
KtorZ
014c7a3d73
Fix error display in tx simulate.
2023-02-15 09:42:46 +01:00
Kasey White
a24fc55993
Delay 2nd arg on trace in case it throws and prevents trace from printing
2023-02-15 03:06:58 -05:00
Kasey White
e15e725bfe
add one more test
2023-02-15 02:20:05 -05:00
Kasey White
5e5a9dd25f
quick fix for test 59
2023-02-15 02:20:05 -05:00
Kasey White
32b0200966
fixes: tuple clauses, zero args funcs, list clause named pattern
...
List Clauses patterns handle var cases
Fixed Tuple Clauses issue with last clause not being a tuple
Redid how zero arg functions and dependencies are handled. Tough one lol
2023-02-15 02:20:05 -05:00
Kasey White
b7fa57027a
scope is now properly handled in expect cases
2023-02-14 12:38:36 -05:00
KtorZ
428b5f2b37
Align output of `tx simulate` with other Aiken's commands.
...
And also return a structured output as JSON, so it's more easily used
by other tools.
```
Parsing script context
Simulating 78ec148ea647cf9969446891af31939c5d57b275a2455706782c6183ef0b62f1
Redeemer Spend → 0
{"mem":151993,"cpu":58180696}
```
2023-02-14 16:50:55 +01:00
KtorZ
34596b3084
Fix collecting withdrawal scripts in eval_phase_one
...
The current implementation assumed that ALL withdrawals present in a
transaction had to be locked by a script and failed otherwise. But a
transaction can actually be composed of both. So instead of failing,
we should rather just ignore withdrawals that can't be referenced by
redeemers.
2023-02-14 15:58:34 +01:00
Kasey White
3b3ec7d95c
format fix
2023-02-12 19:12:38 -05:00
Kasey White
765ceefd38
feat: add ability to downcast void to data
2023-02-12 18:56:38 -05:00
Kasey White
4c838defd1
fix issue with final clause producing clauseguard air
2023-02-12 18:43:11 -05:00
Kasey White
e9883adf12
fix: scope issue when using when with a function call subject
2023-02-12 18:43:11 -05:00
Kasey White
4b1015e0d4
change how expect works on lists and constructors
...
Add more coverage to acceptance test 40 on expect
2023-02-11 22:26:34 -05:00
Matthias Benkort
deb2ab8f80
Merge pull request #362 from aiken-lang/patterns-improvements
...
Patterns improvements
2023-02-11 22:46:04 +01:00
KtorZ
b83a247ff7
Add slightly more informative note for list pattern on int.
2023-02-11 17:00:32 +01:00
KtorZ
2e8fd6e1c2
Remove patterns on 'String'
...
There's arguably no use case ever for that in the context of on-chain
Plutus. Strings are really just meant to be used for tracing. They
aren't meant to be manipulated as heavily as in classic programming
languages.
2023-02-11 16:57:14 +01:00
KtorZ
6649821200
Add type-checker sanity tests for list patterns.
2023-02-11 16:54:49 +01:00
KtorZ
56e90fba21
Add missing newlines to 'join' in error messages.
2023-02-11 16:24:56 +01:00
KtorZ
3c7663cd3c
Basic exhaustivness check on list patterns
...
Before that commit, the type-checker would allow unsafe list patterns
such as:
```
let [x] = xs
when xs is {
[x] -> ...
[x, ..] -> ...
}
```
This is quite unsafe and can lead to confusing situations. Now at
least the compiler warns about this. It isn't perfect though,
especially in the presence of clause guards. But that's a start.
2023-02-11 16:20:28 +01:00
rvcas
831a37d094
feat: shouldn't use this warning on list
2023-02-11 09:42:39 -05:00
Kasey White
e92d9af3c2
fix: changed how list_access_to_uplc handles discards fixing unit test 55
...
Also fix incorrect error message in runtime in machine
2023-02-11 04:30:18 -05:00
Kasey White
ddef61a855
fix: blueprint tests
2023-02-10 19:45:44 -05:00
Kasey White
0269409fa1
case where removing a lam with 0 occurrences is not safe
...
Since a function call can have arbitrary other calls that lead to error and that is difficult to detect.
2023-02-10 19:24:47 -05:00
KtorZ
21fbd48b8d
Improve error on duplicate imports.
2023-02-10 17:07:08 +01:00
KtorZ
f747ee0aca
Improve error message when finding a non-exhaustive let-binding.
2023-02-10 11:01:13 +01:00
rvcas
c1d67e95e1
feat: fix errors and add tests for BigInt changes
2023-02-09 15:01:30 -05:00
KtorZ
bd4aeb779c
Implement integer_log2 on BigInt
...
Comparing it with the Haskell's implementation.
2023-02-09 18:14:00 +01:00
KtorZ
e76d26eb3c
Fixup: follow compiler.
2023-02-09 16:09:49 +01:00
rvcas
cfbe5fd3cc
feat: use BigInt in constant integer
2023-02-09 09:46:42 -05:00
rvcas
ec58279424
test(machine): integer overflow
2023-02-09 09:44:06 -05:00
Matthias Benkort
37bd22a0d2
Merge pull request #353 from aiken-lang/rvcas/assert_expect
...
Rename assert to expect
2023-02-09 15:17:14 +01:00
rvcas
461aaf14bd
chore: no more loose numbers for location offsets
2023-02-09 09:16:54 -05:00
KtorZ
b5cf8c78a5
Add Ordering data-type definition to prelude known constructors.
2023-02-09 14:36:39 +01:00
KtorZ
6be2a9ed80
Fix formatting of unary operators applied to binary operators.
...
Add crucial parenthesis...
2023-02-09 13:58:11 +01:00
KtorZ
83a86e6dc0
Fix logical operator precedence in parser.
...
Whoopsie... || and && were treated with the same precedence, causing very surprising behavior down the line.
I noticed this because of the auto-formatter adding parenthesis where it really shouldn't. The problem came actually from the parser and how it constructed the AST.
2023-02-09 13:57:12 +01:00
KtorZ
62fe321ddf
Add 'Ordering' data-type to the Prelude.
...
Useful to have around to build comparison functions.
2023-02-09 11:07:30 +01:00
Matthias Benkort
b803332f99
Update crates/aiken-lang/src/tipo/error.rs
2023-02-09 09:25:33 +01:00
rvcas
460da20e4a
feat: warn when using expect in a completely safe way
2023-02-09 02:10:22 -05:00
rvcas
e9caa710c4
chore: rename assert_parser to expect_parser
2023-02-09 01:05:11 -05:00
rvcas
9348caab2f
feat(expect): update formatter
...
* Token::Expect should format to expect
* since we still capture assert this means
we can help users update to the new syntax
2023-02-09 00:57:38 -05:00
rvcas
3f540c7c99
chore: rename assignment kind
2023-02-09 00:47:38 -05:00
rvcas
dbd162e985
feat: handle expect in parser
...
* map both assert/expect to Token::Expect
* use the new token in the parser
* new unit test to expect
2023-02-09 00:43:29 -05:00
rvcas
5a4a8df727
feat(token): add Token::Expect
2023-02-09 00:25:54 -05:00
rvcas
fd14da0720
chore: fix blueprint tests
2023-02-09 00:09:23 -05:00
Kasey White
f60b7d84c1
clippy fix
2023-02-09 00:09:23 -05:00
Kasey White
076871492b
fix: unwrap used in a reachable place. Replaced with alternative option
2023-02-09 00:09:23 -05:00
Kasey White
9ae28aaa88
all nebula tests pass. Had one more fix on listaccessor to finish
2023-02-09 00:09:23 -05:00
Kasey White
986a6009f7
fix: Various fixes for FieldsExpose, ListAccessor, TupleAccessor
2023-02-09 00:09:23 -05:00
KtorZ
95a62f7172
Fix oversights in blueprint / schema generation.
2023-02-08 19:04:50 +01:00
alessandrokonrad
221f1afbfe
Changed imports
2023-02-08 16:28:59 +01:00
alessandrokonrad
74b3507777
Added tag/constructor conversion tests
2023-02-08 16:26:58 +01:00
Ales
242eaa8b67
Merge pull request #347 from spacebudz/constr
...
Fix constructor tag range
2023-02-08 14:52:50 +01:00
alessandrokonrad
ce648b7483
Fixed schnorr and limiting it to 32 bytes messages for now
2023-02-08 08:04:24 -05:00
alessandrokonrad
3012a0b41d
Fix constructor tag range
2023-02-08 13:14:26 +01:00
alessandrokonrad
7c9443d87f
Changed to prehash function
2023-02-07 22:53:30 +01:00
KtorZ
6e554129e9
Fix blueprint validator tests.
2023-02-07 12:28:34 +01:00
Matthias Benkort
8feaefe073
Merge pull request #335 from aiken-lang/blueprint-parameters
...
Blueprint parameters
2023-02-07 11:43:01 +01:00
KtorZ
4aa92a6d5e
Use positional argument for blueprint 'apply' command
2023-02-07 11:42:42 +01:00
rvcas
08e8347317
chore: rename feature flag to native-secp256k1
2023-02-07 00:25:22 -05:00
rvcas
67a2674d27
feat: allow verify functions to build for wasm
2023-02-07 00:25:22 -05:00
Kasey White
5d0c5d2a5b
remove a redundant type replacement in build_ir
2023-02-05 23:56:44 -05:00
rvcas
3ff927d30a
feat: reset the generator when generate finishes
2023-02-05 20:35:39 -05:00
rvcas
501d667532
chore: fix tests
2023-02-05 20:35:39 -05:00
Kasey White
f1b24a5f6d
fix: the following issues
...
fix conversion from inner opaque type for when and assignment
This fixes Clause being used in cases where ListClause or TupleClause should be used
Reset defined and zero arg functions between each code gen
Fixes for optimizations when encountering shadowed variables
2023-02-05 20:35:39 -05:00
Kasey White
c32a9d7b6f
commit working changes so far
2023-02-05 20:35:39 -05:00
rvcas
31cd19f198
feat: use secp256k1 to implement verify for ecdsa and schnorr
2023-02-04 22:07:56 -05:00
rvcas
cde3e31723
feat: fill in todo for verify ecdsa and schnorr costing
2023-02-04 22:07:56 -05:00
rvcas
09d8d683b6
fix: switch to error from secp256k1
2023-02-04 22:07:56 -05:00
rvcas
fb69a2c8a9
fix: switch to rust bindings for bitcoin-secp256k1
2023-02-04 22:07:56 -05:00
rvcas
c2ff9389c5
feat(runtime): implement verifyEcdsaSecp256k1Signature
2023-02-04 22:07:56 -05:00
rvcas
d224fe5356
feat(runtime): set force count and arg typechecking for the elliptic curve builtins
2023-02-04 22:07:56 -05:00
rvcas
fb37521857
feat: make a transparent machine error for signature::Error
2023-02-04 22:07:56 -05:00
rvcas
175cd777d8
feat: enable elliptic curve verification builtins
2023-02-04 22:07:56 -05:00
rvcas
7bffb994fc
feat: add k256 for elliptic curve algos
2023-02-04 22:07:56 -05:00
dependabot[bot]
71b7ec6088
chore(deps): bump tokio from 1.23.1 to 1.24.2
...
Bumps [tokio](https://github.com/tokio-rs/tokio ) from 1.23.1 to 1.24.2.
- [Release notes](https://github.com/tokio-rs/tokio/releases )
- [Commits](https://github.com/tokio-rs/tokio/commits )
---
updated-dependencies:
- dependency-name: tokio
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com>
2023-02-04 20:06:54 -05:00