KtorZ
4f6defcf3e
rename: 'r' → 'expression' & 'seq_r' → 'sequence'
...
Better readability.
2023-07-05 14:42:14 +02:00
KtorZ
66296df9c3
Move parsing of literals under new 'literal' parser module group
...
Also moved the logic for 'int' and 'string' there though it is trivial. Yet, for bytearray, it tidies things nicely by removing them from the 'utils' module.
2023-07-05 14:37:29 +02:00
KtorZ
e15cdaf248
Move 'utils::bytearray' to 'expr/bytearray'
2023-07-05 14:10:47 +02:00
KtorZ
44eb501d78
Favor pattern-match over if-else when parsing assignment kinds
...
Equality on a union-type is potentially dangerous as the compiler won't
complain if we add a new case that we don't cover. Reversing the
assignment by yielding a `Token` for a given `AssignmentKind`. This way
we can use a pattern-match that got us covered for future cases.
2023-07-05 14:01:13 +02:00
KtorZ
93e010b345
Replace 'public' utils with a more generic 'optional_flag'
...
The 'public' util was arguably not really adding much except a layer of indirection.
In the end, one useful parsing behavior to abstract is the idea of 'optional flag' that we use for both 'pub' and 'opaque' keywords.
2023-07-05 13:57:34 +02:00
rvcas
5e8edcb340
test(parser): finish moving tests to their correct modules
2023-07-04 17:48:48 -04:00
rvcas
47567c5e6f
test(parser): some adjustments after rebase with @ktorz fix
2023-07-04 17:19:30 -04:00
rvcas
b25db429be
test(parser): anon binop and ambiguous sequence
2023-07-04 17:19:30 -04:00
rvcas
8a6c81493c
test(parser): record create
2023-07-04 17:19:30 -04:00
rvcas
a75bcff5c8
test(parser): type alias, anon fn, record update and more
2023-07-04 17:19:30 -04:00
rvcas
bd8c13c372
test(parser): move over the validator tests and some misc tests to parser
2023-07-04 17:19:29 -04:00
rvcas
6b05d6a91e
test(parser): rename definitions to definition and more tests
2023-07-04 17:19:29 -04:00
rvcas
baf807ca2d
test(parser): list spread
2023-07-04 17:19:29 -04:00
rvcas
44d0432560
test(parser): int list
2023-07-04 17:19:29 -04:00
rvcas
f9c099a923
test: add indoc to assert_expr macro
2023-07-04 17:19:29 -04:00
rvcas
715752718d
test: assert_module
2023-07-04 17:19:29 -04:00
rvcas
da0b969865
test: adjust snapshots
2023-07-04 17:19:29 -04:00
rvcas
8a7df7f66b
test: add empty list test
2023-07-04 17:19:29 -04:00
Cainã Costa
291dedf4e8
chore: refactor all parse tests to use assert_parse!
2023-07-04 17:19:28 -04:00
rvcas
f878ef7cef
feat: move some token processing to the lexer
2023-07-04 17:19:28 -04:00
rvcas
2226747dc1
feat: finish splitting up parsers
2023-07-04 17:19:28 -04:00
Cainã Costa
63cdb8aa09
chore: add more details on snapshot tests
...
We added a macro to add more information about the code that is being
tested, so we can add lots and lots of small snapshot tests.
2023-07-04 17:19:28 -04:00
Cainã Costa
eeaa1a05d2
feat: add first code snapshot test with insta
2023-07-04 17:19:28 -04:00
Cainã Costa
58c854fd3f
feat: add insta as dependency
...
We are going to start to add "golden"/snapshot tests, so we are using
[insta](https://insta.rs ) to do so.
2023-07-04 17:19:28 -04:00
rvcas
eea94fc9a4
feat: move anon fn, let, and expect
2023-07-04 17:19:28 -04:00
rvcas
9c98fc8026
feat: start splitting apart expr_parser
2023-07-04 17:19:28 -04:00
rvcas
e3ed5d3b00
feat: move expr_parser and remove module.rs to definitions
2023-07-04 17:19:28 -04:00
rvcas
3339d41fdd
feat: finish moving definitions and start exprs
2023-07-04 17:19:27 -04:00
rvcas
fc580d4fa0
feat(parser): move definitions to their own modules
2023-07-04 17:19:27 -04:00
KtorZ
49098d5a45
Bump miette to 5.9.0
...
No particular reason, but it's good to be up-to-date with our dependencies.
2023-07-04 16:51:59 -04:00
KtorZ
5a6cc855e6
Use byte count for token span in the lexer.
...
Somehow, miette doesn't play well with spans when using chars indices.
So we have to count the number of bytes in strings / chars, so that
spans align accordingly.
2023-07-04 16:51:59 -04: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
Pi Lanningham
c10f0e53df
cargo fmt
2023-07-01 16:17:10 -04:00
Pi Lanningham
4a8cb72708
Add a blueprint policy command
...
Computes the policy ID of a minting policy; added guards for blueprint address to check that it's not a minting policy; Wasn't 100% sure where the errors should live, so I'm happy to move them if there's objections
2023-07-01 16:17:10 -04:00
microproofs
42544af799
fix: safe encode bits to check for 2^num_bits <= byte we are encoding
...
fix: I thought namedDeBruijn takes advantage of Binder for encoding and decoding.
It does not...
fix: Debruijn was being converted to NamedDeBruijn incorrectly
2023-06-30 23:06:38 -04:00
microproofs
d641f731b7
fix: needed a stricter check for expect_pattern func on discard pattern
2023-06-28 15:54:59 -04:00
rvcas
90ff211205
chore: Release
2023-06-23 19:41:14 -04:00
rvcas
619b73d03e
feat: enhance new command
2023-06-23 19:40:11 -04:00
rvcas
d633129ddf
fix: clearer unused var warning closes #579
2023-06-23 19:04:54 -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
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
microproofs
e1f788b628
chore: commit tests first
2023-06-19 21:43:38 -04:00
KtorZ
4252ee6373
Implement formatter for anon binop.
2023-06-17 08:44:59 +02:00
KtorZ
91f03abb7b
Support all binary operator in the anonymous binop parser.
2023-06-17 08:44:45 +02:00
KtorZ
d0b4c1c3b5
Add remaining boolean comparison operator to anon binop parser.
...
Nothing to see here as they all have the same signature. Implementing
arithmetic bin-operators and boolean logic operators will require some
more logic.
2023-06-17 07:57:37 +02:00
KtorZ
ec94230294
Extend parser to accept anonymous binop as expressions.
...
This is simply a syntactic sugar which desugarize to a function call with two arguments mapped to the specified binary operator.
Only works for '>' at this stage as a PoC, extending to all binop in the next commit.
2023-06-17 07:36:11 +02:00
KtorZ
ba911d48ea
Refactor 'is_capture' field on function expressions.
...
Refactored into an enum to make it easier to extend with a new variant to support binary operators.
2023-06-17 07:26:46 +02:00
microproofs
93135cebbb
fix: redeemers in the script context are sorted by redeemer ptr not data hash
2023-06-16 12:24:44 -04:00
microproofs
e72a9f8e0b
chore: rearrange code gen test order
2023-06-14 13:12:49 -04:00
rvcas
85d82e5aec
chore: Release
2023-06-13 21:24:41 -04:00
rvcas
06079fa57e
fix: wow
2023-06-13 21:03:16 -04:00
microproofs
379c2fe2bf
chore: Release
2023-06-13 20:32:22 -04:00
rvcas
878fd4de48
feat: include column number in location
2023-06-13 20:30:43 -04:00
rvcas
44e066f907
feat: add a panic hook, present issue link
2023-06-13 20:30:43 -04:00
microproofs
c3bb7b0f75
fix: tail list being expected on when it should be empty
2023-06-13 12:03:38 -04:00
microproofs
1e0f7ea0ab
fix: foldl test
2023-06-13 12:03:38 -04:00
microproofs
af36b5ac77
fixes:
...
fix: Issue where using var pattern in a when was passing the constr index instead of the constr
fix: Issue where expecting on a list had unexpected behaviors based on list length
2023-06-13 12:03:38 -04:00
rvcas
aeaec6bcd8
fix: record format when module select
...
- instead of checking the container we need to check
the FieldAccess label.
closes #601
2023-06-13 00:18:32 -04:00
microproofs
a5245fdc6b
chore: couple more identity tests in optimize step
2023-06-10 00:01:54 -04:00
microproofs
c5af6e0be3
chore: Release
2023-06-08 19:34:51 -04:00
KtorZ
6bd8e94e17
Preserve numeric underscore and hexadecimal notation through formatting.
2023-06-08 16:37:20 +02:00
KtorZ
0b7682306f
Refactor formatter to use new 'self.int' helper function.
2023-06-08 15:34:28 +02:00
KtorZ
79a2174f0a
Extend parser to support int as hexadecimal and numeric underscore.
...
We only allow numeric underscore for decimal numbers as I am not sure how we can define it for non-decimal numbers?
2023-06-08 15:33:50 +02:00
KtorZ
0ea11a4d13
Introduce new test cases for hexadecimal and underscore parsing.
2023-06-08 13:26:22 +02:00
rvcas
3fc9c8e0db
chore: re-add empty line handling by @KtorZ
...
Co-authored-by: KtorZ
2023-06-07 17:21:04 -04:00
rvcas
41a08e4a06
chore: re-add nix stuff from @waalge
...
Co-authored-by: waalge
2023-06-07 17:16:56 -04:00
rvcas
8d107b1293
fix(build): --uplc must use Program<Name> to pretty print
2023-06-07 16:25:59 -04:00
rvcas
1747090931
fix: fmt crashing with comment at end of file
...
closes #568
2023-06-07 15:59:54 -04:00
KtorZ
0afc3aba13
Fix operator precedences, in particular |>
...
Fixes #571 .
2023-06-06 17:17:47 +02: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
rvcas
cf6d04e95b
chore: some clippy warnings
2023-06-02 19:47:52 -04:00
microproofs
cdf8bd6548
fix: list items in when were not being added to scope
...
fix: tuple clause must preserve previous clause properties state
2023-06-02 18:38:21 -04:00
microproofs
8f0cf289b4
fixes:
...
fix: rearrange clauses and fill in gaps now handles nested patterns in a uniform way
fix: discards in records was being sorted incorrectly leading to type issues
chore: remove some filter maps in cases where None is impossible anyway
chore: some refactoring on a couple functions to clean up
2023-06-02 18:38:21 -04:00
rvcas
9c29f4f26b
fix: blueprints gen failing on List
...
closes #569
* added new methods to Definitions
it doesn't use expect
* lookup was failing for the special map/pair case
when resolving list generics
Co-authored-by: Pi <pi@sundaeswap.finance>
2023-06-02 17:53:10 -04:00
microproofs
6609ab335c
chore: add another test for field destructuring in a list
2023-06-02 13:00:09 -04:00
Pi Lanningham
fbec4a9385
Update docs.rs
...
The doc comment was long, leading to an incorrect description on the command line
2023-06-02 02:25:04 -04:00
rvcas
cb9a140601
chore: Release
2023-06-02 00:34:07 -04:00
rvcas
335cc0c8bc
feat(cli): rework uplc subcommands
...
closes #553
* rename flat to encode
* rename unflat to decode
* alias both to their old names
* both only print to stdout
use can pipe to file
* split cbor and hex flags
* hex flag works for either cbor or flat
* encode takes --to flag
[name, named-debruijn, debruijn]
* decode takes --from flag
[name, named-debruijn, debruijn]
2023-06-01 23:50:59 -04:00
rvcas
e5d9398625
fix: add module name to type mismatch error
...
* if expected and given are equal then we show
the module
* we could do it in all cases it looks kinda nice
* format is `Type - ModuleName`
2023-06-01 20:00:36 -04:00
microproofs
6955f79035
chore: update changelog
...
fix: Minor improvement to record update to use empty list instead of the null list from a record fields list.
2023-06-01 12:22:42 -04:00
microproofs
deee50b77e
fix: just change `as_key`
...
Co-authored-by: Lucas Rosa <x@rvcas.dev>
2023-05-31 00:27:31 -04:00
microproofs
a6807f0bfb
fix: seems like definition lookups weren't working
...
Co-authored-by: Lucas Rosa <x@rvcas.dev>
2023-05-31 00:18:05 -04:00
microproofs
c710d488d6
fix: need to sort record update args so they match indices order
2023-05-30 20:23:12 -04:00
microproofs
52a51acc69
fix: fix record update so it actually works
...
Created multiple tests of varying record updates
2023-05-30 20:23:12 -04:00
microproofs
e1e65d7695
typo
2023-05-30 17:28:52 -04:00
microproofs
a65821d5ab
fix: constrs that contain fields now work when passed as an arg to a function.
...
Convert acceptance test 22
Create test for passing constr as a function
2023-05-30 17:28:52 -04:00
rvcas
26a607eb00
fix: bad parsing of comments at end of file closes #551
2023-05-30 11:07:39 -04:00
rvcas
2860bac4c6
fix: bad parsing for module select type annotations closes #550
2023-05-30 10:39:49 -04:00
microproofs
28a9152f09
add acceptance tests to 20
2023-05-25 22:54:53 -04:00
microproofs
f571665538
add test 18
2023-05-25 22:54:53 -04:00
rvcas
7b3e1c6952
feat: adjust failing test syntax
...
* also add a formatter test
2023-05-25 18:21:12 -04:00
Niels Mündler
00ac6b6c56
Fix dumping of builtin pairs
2023-05-25 18:03:24 -04:00
rvcas
a44b5e1a77
test: adjust formatter tests after latest tweaks
2023-05-25 17:37:53 -04:00
rvcas
151db8d4ae
fix: formatter weirdness relates to #542
2023-05-25 17:19:02 -04:00
rvcas
a124a16a61
feat(tests): implement a way to express that tests can fail
2023-05-25 16:54:53 -04:00
microproofs
6740107256
add acceptance test 17
2023-05-20 17:02:57 -04:00
microproofs
dda8c4de7a
adding more tests for code gen.
2023-05-20 15:29:13 -04:00
Micah Kendall
ccb2d0b7ee
urgent nix patch
2023-05-19 18:28:07 -04:00
rvcas
d68d4656df
feat(aiken-new): output a github action
...
- bonus: include git short sha in version
closes #515
2023-05-18 01:33:03 -04:00
microproofs
8e60234562
chore: Release
2023-05-17 18:04:45 -04:00
microproofs
173154e406
fix: (code gen): expect type now properly tracks constructor dependency.
...
This was specific to code gen generated functions.
2023-05-17 17:56:01 -04:00
microproofs
340ed3b6a5
fix: case where identity function was used as a param.
...
This was causing a free unique. The fix is after stripping applied usage of identity,
we then check if it is passed around and if so we leave in the function declaration.
2023-05-16 16:21:37 -04:00
rvcas
f2d8c8938c
chore: Release
2023-05-14 21:25:29 -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
3356e2ecd0
fix: nested constrs with a single index was ignoring fields
2023-05-14 17:33:01 -04:00
microproofs
c3eab4cc2a
chore: fix up when tuple deconstruction test
...
add inline test for optimization tests
add some more builder functions
2023-05-11 18:06:46 -04:00
rvcas
1fb31e246c
fix: better conditional comp for wasm
2023-05-11 16:59:54 -04:00
rvcas
e1a75391a1
chore: Release
2023-05-09 23:16:59 -04:00
microproofs
0c3dc0580a
chore: add if_else optimization test
2023-05-09 19:09:24 -04:00
microproofs
6456001cbc
fix: the uplc optimization tests were missing intern
...
add builtin force reduce tests
2023-05-09 18:55:53 -04:00
microproofs
419b946a82
fix: wrap_data_reduce optimization should leave constr data
...
and unconstr data untouched.
2023-05-09 16:56:50 -04:00
microproofs
4b8fd1769a
chore: change pattern todos to have a better error message
2023-05-08 16:27:43 -04:00
microproofs
49898f7420
fix: to_data_builtin to operate on arg not func result
2023-05-08 16:15:09 -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
d2dbae1cbf
fix:
...
Negative numbers now show up as a constant instead of 0 - that number
Expect on constructors without field maps no longer panics
Expect on constructors with discard as assigned field names now no longer throws free unique
2023-04-30 14:44:54 -04:00
microproofs
b1728b57b8
chore: Release
2023-04-28 17:11:56 -04:00
microproofs
7201163b77
fix: better function hoisting for code gen functions
...
mainly code gen function dependencies won't be hoisted to the top.
2023-04-28 17:05:46 -04:00
microproofs
0d0c96deda
commit validator changes and tests
2023-04-28 17:05:46 -04:00
microproofs
b108c0f610
chore: add optimization test on unwrap data
2023-04-27 12:17:57 -04:00
microproofs
8b11844282
clippy fix
2023-04-26 17:40:27 -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
ae68ae9afb
fix: wrong var usage on inline_direct_reduce, now it properly looks at applied func not arg
2023-04-25 01:57:04 -04:00
rvcas
baa2cef6c4
feat(playground): impl clone for some errors
2023-04-24 17:13:20 -04:00
microproofs
ff87a4c60f
fix: "when bool is" was not properly assigning term to body when not a complex clause
...
Add some end to end tests to test uplc
2023-04-23 12:51:23 -04:00
microproofs
9bb1a88f23
fix: expect [] on a non-empty list now fails.
2023-04-21 17:39:21 -04:00
microproofs
0066765ae5
convert acceptance tests 9-10
2023-04-21 16:01:54 -04:00
microproofs
016634fc38
fix: inline_direct_reduce now works properly
2023-04-21 16:01:54 -04:00
microproofs
0b7d217bd0
convert acceptance test 8
2023-04-21 16:01:54 -04:00
rvcas
c9a762a13c
fix: we weren't including the name unused var warning
2023-04-20 16:53:56 -04:00
KtorZ
2a8488d3c1
Fix css media query for newly introduced navigation.
2023-04-20 16:49:45 +02:00
KtorZ
6b1ed427e7
Some minor stylistic improvements on docs generation
...
- [x] Show links to prelude, builtins and stdlib
- [x] Remove project 'owner' in the header (only show repository)
- [x] Fix type annotation overflow on mobile
- [x] Remove the prewrap mode on mobile
2023-04-20 16:28:57 +02:00
KtorZ
4269cf20b0
Fix erroneous "aiken new" command's output instructions
...
Fixes #505 .
2023-04-20 14:38:48 +02:00
microproofs
672a900243
chore: converted acceptance tests 5-7
2023-04-19 20:03:41 -04:00
microproofs
c2ee631d07
feat: new setup for the gen_uplc testing
...
* new test only module aiken_project::tests
* move TestProject to tests/mod.rs
* new tests go in gen_uplc.rs
2023-04-19 16:08:55 -04:00
microproofs
e4276d7f5a
move uplc tests to new location
2023-04-19 16:08:55 -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
9de713803a
feat: Add wrap data reduce which helps prevent unnecessary wrap to unwrap and vice versa.
...
fix: in inline_reduce the wrong arg name was used. arg instead of argument
refactor var occurences
2023-04-19 16:08:55 -04:00
microproofs
022d557906
chore: convert acceptance test 4
2023-04-19 16:08:55 -04:00
microproofs
7da3ac2c99
chore: convert acceptance test 3
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
rvcas
3182dac908
chore: Release
2023-04-17 10:53:30 -04:00
rvcas
e3f2fb5393
fix: need to return deserialization error here
2023-04-17 10:50:40 -04:00
rvcas
3b351d36fb
fix(aiken-lang): assignment as last expr in when and if
2023-04-16 19:55:47 -04:00
rvcas
3d0fa1a5f6
chore: Release
2023-04-16 16:49:08 -04:00
rvcas
98c61ca151
feat(aiken-lang): anonymous functions
...
@MartinSchere noticed a weird error
where an unknown variable wasn't being reported
the type checker was incorrectly scoping
arguments for anonymous function definitions.
Luckily his compilation failed due to a FreeUnique
error during code gen which is good. But this may
have been the source of other mysterious FreeUnique
errors.
I also noticed that anonymous function allowed
arguments with the same name to be defined.
`fn(arg, arg)`
This now returns an error.
2023-04-16 16:38:43 -04:00
rvcas
63ddef7efb
chore: Release
2023-04-13 13:37:12 -04:00
rvcas
12e8ebdf4f
chore: revert version bumps
2023-04-13 13:03:43 -04:00
KtorZ
067e39286d
Bump versions to 1.0.0-alpha, update CHANGELOG.
2023-04-13 17:35:21 +02:00
KtorZ
00550f8ddb
Add myself as co-authors for some of the project's crate
...
Forgot to do it before, and noticing now :D
2023-04-13 17:25:21 +02:00
KtorZ
e2c78bdd3b
Add min rust-version to crates
...
So that people runs into better errors if they try installing from source with an 'obsolete' rust compiler.
2023-04-13 17:24:44 +02:00
KtorZ
74a7257ec9
Add some more instructions to 'blueprint apply' command help text.
2023-04-13 12:23:20 +02:00
rvcas
ccc450659a
chore: switch discharge value back to the recursive form for simplicity
2023-04-13 01:28:27 -04:00
microproofs
564939ab61
feat
...
* remove more Rc's
* reconstruct Value::Builtin only when needed
Co-authored-by: Lucas Rosa <x@rvcas.dev>
2023-04-13 01:28:27 -04:00
microproofs
09a6ea51d6
feat(machine): reduce term allocations
...
* remove term from VBuiltin
* and also means we don't need the useless wrapping
Co-authored-by: Lucas Rosa <x@rvcas.dev>
2023-04-13 01:28:27 -04:00
rvcas
70f12d3fc5
chore: new branch with some things from the bumpalo branch
2023-04-13 01:28:27 -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
Kasey White
1e35281650
clause guard with discard is now handled
2023-04-12 08:26:03 +02: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
e69a70f49c
remove final wrapper and replace with equivalent 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
efb901f3b4
fix: issue with modifying a functions dependencies and adding a function that depended on it causing infinite loops
2023-04-09 17:43:56 -04:00
Kasey White
a17ebf301f
fix: now we monomorphize __expect_type functions
2023-04-09 17:43:56 -04:00
Kasey White
9d9f8a914a
fix generics causing a free unique due to ordering in expect_type
2023-04-09 17:43:56 -04:00
Kasey White
581c86ed83
chore: commented code removal
2023-04-09 17:43:56 -04:00
Kasey White
4d97719e6d
update blueprint tests with new hashes and script outputs
2023-04-09 17:43:56 -04:00
Kasey White
8d81345fb1
fix: diff_defined_types was not being filled if constructor had 0 args
2023-04-09 17:43:56 -04:00
Kasey White
f8483da4e0
Code gen now handles expecting on validator args in the air stack.
...
Thus allowing us to use code gen created functions to expect on data types including recursive ones.
Some minor tweaks to the air.
Added a uplc optimization for later.
2023-04-09 17:43:56 -04:00
Kasey White
4e4eed13e1
refactor define_ir_recurse to use let else
2023-04-09 17:43:56 -04:00
Kasey White
4ff0504d58
feat: change define_ir_processor to handle code_gen_functions
...
Also flattened out that function by using let else
2023-04-09 17:43:56 -04:00
Kasey White
bc7b07c1d9
fix: expect_type now works on recursice constructors and validator args are now handled by air
2023-04-09 17:43:56 -04:00
Kasey White
a1b3ae52d8
fix: optimization that was being ignored
2023-04-09 17:43:56 -04:00
Kasey White
6c932bb562
expect on map and list now use a function that gets instantiated as air in code gen functions
2023-04-09 17:43:56 -04:00
Kasey White
abd97f0ade
changed assert_on_list from being defined at uplc level to being defined at air level to enable proper hoisting
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
Kasey White
ddf0fbfa0a
fix: expect void now checks for unit instead of expecting data
...
Args in validator are now fully expected on.
Add new air FieldsEmpty to make checking for empty constructors easier
2023-04-09 17:43:56 -04:00
KtorZ
4799af3242
Rework 'blueprint apply' command and wrap up wiring up validation.
...
The apply command now works only from a serialized CBOR data (instead of a UPLC syntax). So it is no longer possible to specify arbitrary cbor terms through the CLI. I believe it to be an acceptable limitation for now; especially given that Aiken will never generate blueprints with non-data terms at the interface boundary.
2023-04-08 08:57:40 +02:00
KtorZ
bf222a3ea2
Fix reference JSON deserialization.
2023-04-08 08:57:40 +02:00
KtorZ
c18deecdc8
Show slightly better schema mismatch errors
...
Display terms as CBOR diagnostic when they are Plutus data.
2023-04-08 08:57:38 +02:00
KtorZ
176cb45524
Factor out error (schema mismatch) creation during blueprint validation.
2023-04-08 08:57:04 +02:00
KtorZ
7d6612b108
Rework parameter validation to work from 'Constant' instead of 'Term'
...
This simplifies the code and makes it more efficient as we no longer need to wrap and unwrap constant terms constantly.
2023-04-08 08:57:03 +02:00
KtorZ
d58ef1a079
Implement blueprint schema & data validations.
2023-04-08 08:57:03 +02:00
KtorZ
ee220881b6
Generalize schema definition to work from inline schema or reference.
2023-04-08 08:57:03 +02:00
KtorZ
d620f6367c
Bootstrap schema validation for simple constants.
2023-04-08 08:57:03 +02:00
KtorZ
9033b44044
Implement quick builder on PlutusData.
...
In the same spirit of the existing Term builder; I also added a `data`
method to lift a `PlutusData` into a `Term<T>` and generalized a bit
the builder to only require a `Term<Name>` when necessary and remain
generic otherwise.
The `PlutusData` builder could potentially be upstreamed to pallas
diretly.
2023-04-08 08:57:03 +02:00
KtorZ
f311e048b7
Improve error message on 'ParameterizedValidator'.
2023-04-08 08:57:01 +02:00
KtorZ
cdc7ebf9a0
Remove now-unnecessary blueprint generics.
...
These were needed before as a way to _partially deserialize_
blueprints. Indeed, some commands required accessing information of
the blueprint, but not necessarily the schema. So out of laziness (or
cleverness?), we only deserialized validators as serde::Value and
achieved that through the use of generics.
Now that validators and schemas have proper deserialisers, we can
simply deserialize a blueprint.
TODO: Our serialisation/deserialisation is safe with regards to
itself; i.e. it roundtrips. However, we only supports a subset of the
specified blueprint format. For example, we would fail to deserialize
blueprints that have inline data-schemas (we only use references).
2023-04-08 08:53:51 +02:00
KtorZ
f0d2d20a4c
Impl JSON deserialization for blueprint's 'Schema'.
2023-04-08 08:53:51 +02:00
KtorZ
565c0bea74
Write JSON deserializers for Reference, Constructors, Items and Data.
...
This is needed in order to deserialize a JSON blueprint and use it to perform validation.
Still TODO:
- [ ] Write JSON deserializer for 'Schema'
Which should now be relatively straightforward.
2023-04-08 08:53:49 +02:00
rvcas
1444c9328d
fix some typos
2023-04-07 16:51:18 -04:00
KtorZ
057102c491
Add function to uplc::parser for string escape
...
Was originally written as a way to fix a failing property test on the
program_builder; but the program builder is now gone. This function
is still useful to have around.
2023-04-05 14:27:20 +02:00
rvcas
298e8068ee
chore: remove program_builder
2023-03-30 21:15:27 -04:00
rvcas
d8cbcde61d
feat(validators): unused param warning
...
Params being unused were being incorrectly reported.
This was because params need to be initialized
at a scope above both the validator functions. This
manifested when using a multi-validator where one of
the params was not used in both validators.
The easy fix was to add a field called
`is_validator_param` to `ArgName`. Then
when infering a function we don't initialize args
that are validator params. We now handle this
in a scope that is created before in the match branch for
validator in the `infer_definition` function. In there
we call `.in_new_scope` and initialize params for usage
detection.
2023-03-30 21:15:27 -04:00
Kasey White
8fad5b77c6
chore: add some unit tests to stack
2023-03-30 11:32:18 -04:00
KtorZ
6a4f62d074
Allow newlines in when clause sequences.
2023-03-30 13:49:00 +02:00
KtorZ
5d4c95d538
Supports commenting validator inner functions.
2023-03-30 13:37:09 +02: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
KtorZ
cb5dc75326
Remove unnecessary import.
2023-03-30 11:50:59 +02:00
KtorZ
1d3315005c
Support some single-character escape sequences in UPLC
...
Fixes #472 .
This also partially addresses #195 . However, as pointed out in one of
the comment, there's no 'official rule' when it comes to what should
be considered valid escape sequences. Haskell relies mostly on the
AttoParsec library and Rust also has its own set of rules.
This is in particular true for unicode escape sequences, but there is
a common middleground for some usual single character escapes such as
\n or \\. So we now at least support these.
For more complicated escape sequence, please refer to #195 for now and
keep the discussion going there.
2023-03-30 11:50:59 +02:00
KtorZ
dc500b8e13
Add missing import to owo_colors
2023-03-30 09:21:59 +02:00
KtorZ
cc18e7cff2
Fix formatting of function expressions with traces
...
Fixes #471
2023-03-30 09:21:46 +02:00
KtorZ
efa31e3df7
minor lsp tweaks
...
- forcibly disable colors
- do not show labels in error messages
2023-03-29 18:25:56 +02:00
Kasey White
aa29636d50
fix: scope issue with ir_stack being incremented wrongly with assignment
...
Also fixed scope of constructor tag and void in whens
2023-03-28 21:15:22 -04:00
rvcas
80f2fd746d
test(gen_uplc::scope): more replace unit tests
...
Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2023-03-27 20:00:32 -04:00
rvcas
e5980c5a96
feat(gen_uplc::scope): use some assumptions to simplify replace
2023-03-27 20:00:32 -04:00
Kasey White
c8ac9aa165
test: add replace same value unit test
2023-03-27 20:00:32 -04:00
rvcas
5453572fc0
test(gen_uplc::scope): common ancestor method
...
Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2023-03-27 20:00:32 -04:00
Kasey White
822bb4242a
fix: function hoisting errors --
...
One involving zero args being hoisted instead of compiled and replaced.
Second involving not updating a function's dependeny function scope. Which then hoisted to a lower scope and caused free unique
2023-03-27 20:00:32 -04:00
rvcas
96b7fb1c50
chore: make clippy happy
2023-03-27 20:00:32 -04:00
rvcas
b5ed958f62
chore: remove unused variable
2023-03-27 20:00:32 -04:00
Kasey White
b2dcb112c9
fix last 2 acceptance tests
2023-03-27 20:00:32 -04:00
Kasey White
51a6589aac
2 acceptance tests left to fix
2023-03-27 20:00:32 -04:00
Kasey White
eef34b8f4b
feat: all compiler errors fixed
...
Co-authored-by: Lucas Rosa <x@rvcas.dev>
2023-03-27 20:00:32 -04:00
Kasey White
25ff8acb1e
feat: one more function to finish up
2023-03-27 20:00:32 -04:00
Kasey White
77afa76163
feat: refactor handle_each_clause
...
fix expect type ordering on constr type checking
2023-03-27 20:00:32 -04:00
rvcas
f07a959ab8
feat: almost done
...
Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2023-03-27 20:00:32 -04:00
rvcas
709ee914ed
feat: another round of functions using AirStack
...
Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2023-03-27 20:00:32 -04:00
rvcas
489dd235ff
feat(gen_uplc): finished up a few more functions
...
Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2023-03-27 20:00:32 -04:00
rvcas
33a3c5dc13
feat(gen_uplc): introduce scope new type
...
* new module scope which holds some ancestor logic
* rework some things to truly hide scope increments
Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2023-03-27 20:00:32 -04:00
rvcas
ca0d896b8d
feat: start using AirStack methods
...
Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2023-03-27 20:00:32 -04:00
rvcas
3e6f688e2d
feat: refactor some methods and modules
...
* move uplc::ast::builder to uplc::builder
* rename aiken_lang::uplc to aiken_lang::gen_uplc
* move aiken_lang::air and aiken_lang::builder to aiken_lang::gen_uplc
as submodules
Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2023-03-27 20:00:32 -04:00
Kasey White
2d77ec1a6a
add merge function
2023-03-27 20:00:32 -04:00
Kasey White
32d34d5fd3
create struct Air Env
...
refactor out some to_strings
2023-03-27 20:00:32 -04:00
Kasey White
bb820ebdd8
fix: trace and scope issues
...
fix scope issues involving fieldsexpose and other destructureing pattern
fix trace to extract string from term.
2023-03-21 12:38:13 -04:00
Kasey White
6e5b24a937
refactor the rest of the term builders to use more concise code
2023-03-21 00:50:13 -04:00
Kasey White
7c3750bbb4
fix: apply order on field expose
2023-03-21 00:50:13 -04:00
Kasey White
50db958d06
update codegen to use more streamlined uplc building methods
2023-03-21 00:50:13 -04:00
Kasey White
ef3862ade8
refactor: uplc code gen uses shorthand methods
2023-03-21 00:50:13 -04:00
Kasey White
74a7a2f214
commit air changes that expose scope as a mutable pointer
2023-03-21 00:50:13 -04:00
KtorZ
6422027c6c
Fix README template for newly generated projects, and hello, world
2023-03-18 22:23:55 +01:00
KtorZ
0f35675f57
remove wrongly committed println.
2023-03-18 17:33:21 +01:00
KtorZ
0b8c3b05fe
Fill-in test scenario for parsing large integer constants.
2023-03-18 16:17:42 +01:00
KtorZ
8a2af4cd2e
Fix lexer throwing errors when parsing a too large tuple index.
2023-03-18 16:13:50 +01:00
rvcas
2dbc50f098
feat: generate_test doesn't need arguments
2023-03-17 18:41:22 -04:00
rvcas
74c61358ab
feat: new error for when multi-validators have the same arg count
2023-03-17 18:40:50 -04:00
rvcas
d753b57c1b
chore: use let-else 🤯
2023-03-17 18:40:49 -04:00
KtorZ
bc690c5410
Generated wrapped schemas for multi-validators' redeemers
2023-03-17 18:40:49 -04:00
Kasey White
bb6fc76971
start on registering redeemer wrapper type in definitions
2023-03-17 18:40:49 -04:00
KtorZ
7e1403a3b2
Complete generation of blueprint multi-validators.
2023-03-17 18:40:49 -04:00
Kasey White
fe92b27d50
start on refactoring validator to support multi-validators in blueprint
2023-03-17 18:40:49 -04:00
KtorZ
61113cd7b9
distinguish between multi vs single validator case in blueprint schema generation.
2023-03-17 18:40:48 -04:00
Lucas
22880a300f
Update crates/aiken-lang/src/parser.rs
...
Co-authored-by: Matthias Benkort <5680256+KtorZ@users.noreply.github.com>
2023-03-17 18:40:48 -04:00