Commit Graph

378 Commits

Author SHA1 Message Date
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
rvcas 3891016bc3
chore(gift_card): better input id 2023-04-21 12:07:18 -04:00
rvcas 6ab42735b0
fix: switch back to blockfrost kupmios + demeter setup showing strange behavior 2023-04-21 11:59:31 -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
rvcas d0d482b3cb
chore(gift_card): run fmt 2023-04-07 16:35:58 -04:00
rvcas 4e380012fb
chore(gift_card): use kupmios backed by demeter for lucid 2023-04-06 21:35:08 -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
Kasey White b2dcb112c9 fix last 2 acceptance tests 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
rvcas 0060d29265
chore: update gift card example to use new validator syntax 2023-03-27 13:39:34 -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 50db958d06 update codegen to use more streamlined uplc building methods 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 a4c7337df2
Add new acceptance scenario 079 (double validators) 2023-03-17 18:40:49 -04:00
rvcas c3870e340e
feat(codegen): support multi-validators
* rename force_wrap to force
* add a bunch of builder methods to Term<Name>
* refactor one tiny location to show off builder methods
* split generate into `generate` and `generate_test`
* create wrap_as_multi_validator function

Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2023-03-17 18:40:44 -04:00
KtorZ 660d2199d4
Make blueprint generation deterministic
Sort validators before iterating on them.
2023-03-17 14:57:39 +01:00
KtorZ c113582404 Support multi-clause patterns as syntactic sugar
And disable multi-patterns clauses. I was originally just controlling
  whether we did disable that from the parser but then I figured we
  could actually support multi-patterns clauses quite easily by simply
  desugaring a multi-pattern into multiple clauses.

  This is only a syntactic sugar, which means that the cost of writing
  that on-chain is as expensive as writing the fully expanded form; yet
  it seems like a useful shorthand; especially for short clause
  expressions.

  This commit however disables multi-pattern when clauses, which we do
  not support in the code-generation. Instead, one pattern on tuples for
  that.
2023-03-16 19:45:41 -04:00
KtorZ 13890874c0
Fix 'run' script, also do 'check' on modules that have validators. 2023-03-16 23:04:24 +01:00
Lucas fab6d56bf2
Merge branch 'main' into newline-assignment 2023-03-16 15:30:55 -04:00
KtorZ 45575cae96 Fix 'run' script and re-generate blueprint for scenario 077. 2023-03-16 15:29:44 -04:00
KtorZ 20f5baffa7
Enforce newline after assignment / clause.
This leads to more consistent formatting across entire Aiken programs.
  Before that commit, only long expressions would be formatted on a
  newline, causing non-consistent formatting and additional reading
  barrier when looking at source code.

  Programs also now take more vertical space, which is better for more
  friendly diffing in version control systems (especially git).
2023-03-16 19:46:46 +01:00
rvcas bf9297efcf
chore(gift_card): cardano scan url should be preprod as well 2023-03-16 09:45:11 -04:00
rvcas f7308f22fd
fix: gift_card deno.lock 2023-03-15 16:41:25 -04:00
waalge d13db5f34e Fix deno.lock
Switch to preprod, and test against eternl (passed)
2023-03-15 12:24:35 -04:00
rvcas 7e467ada2b chore(gift_card): more readme info 2023-03-14 19:13:21 -04:00
rvcas 56aa53eb73 chore: update lucid 2023-03-14 19:13:21 -04:00
rvcas 81359246f9 chore: update against latest main, rerun build, change unlock interface 2023-03-14 19:13:21 -04:00
rvcas 0147af8330 chore: rename example parents folder to gift card 2023-03-14 19:13:21 -04:00
rvcas a522cd1e7d chore: better names for the validators and some functions 2023-03-14 19:13:21 -04:00
rvcas 5e062c130d feat: finish up end to end example
* create a gift card (nft)
* lock ADA while minting gift card
* unlock ADA while burning gift card

Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2023-03-14 19:13:21 -04:00
rvcas 79fd6b4828 feat(one_shot): actually getting properly applied contracts
Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2023-03-14 19:13:21 -04:00
rvcas a82cedbd92 feat(one_shot): apply params to script 2023-03-14 19:13:21 -04:00
rvcas e35ccc9e0c feat(one_shot): document vendored lucid 2023-03-14 19:13:21 -04:00
rvcas 14cdac7bfa feat(one_shot): some deno and lucid stuff 2023-03-14 19:13:21 -04:00
rvcas ab1ee17ad4 feat(one_shot): some deno boilerplate 2023-03-14 19:13:21 -04:00
rvcas 7ea8aeda01 feat: one_shot example
Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2023-03-14 19:13:21 -04:00
KtorZ ae981403c6 Re-introduce field title & description in referenced schemas. 2023-03-12 12:44:49 -04:00
KtorZ 45a463786f Update blueprints from acceptance tests and hello, world. 2023-03-12 12:44:49 -04:00
Kasey White 31c280552d add another validator 2023-03-12 00:25:26 -05:00
Kasey White 4a7bbc23df fix: change in scope was applied in wrong place in pattern_ir for constr expect 2023-03-12 00:25:26 -05:00
Kasey White f377d60085 ChooseData is now lazy with its branch arguments.
This enables calling the un_data builtins directly from choose_data args
2023-03-09 00:31:57 -05:00
KtorZ dbef4474fa Add new acceptance scenario: 065
-> The provided Plutus code called 'error'.

  This scenario _could_ work if `choose_data` was lazy in its arguments.
  Which is a reasonable thing to expect from `choose_data`. Since we
  don't have any way to introduce on-demand lazyness in the language
  (and we are not looking for ways), we need to make a special case for
  `choose_data` which is a perfect (and singular) use case for it.
2023-03-09 00:31:57 -05:00
Kasey White c85240cbed Fix exception when doing expect boolean = ..
Add new Air Assert Bool
Add acceptance test 76
2023-03-08 22:31:30 -05:00
Matthias Benkort d8934b3d8d
Merge pull request #421 from aiken-lang/monomorph-panic-fix
Functions with only a generic return weren't being properly monomorph…
2023-03-08 11:39:50 +01:00
Kasey White 89373c32e6
Functions with only a generic return weren't being properly monomorphized. Fixed that. 2023-03-08 10:31:05 +01:00
rvcas f8545854fc
feat: json output for uplc eval 2023-03-08 10:19:36 +01:00
KtorZ 7257c2d89e
Small tweaks on the hello_world examples. 2023-03-08 09:47:08 +01:00
KtorZ 4ea50ca9ab
Remove editor configuration file.
Editor configurations and other system-specific files aren't meant to
  be committed to public repository. This belongs to a dev environment
  and should be handled by developers themselves though local git
  configurations.
2023-03-08 09:42:03 +01:00
Jack Fraser 6ec37778d7 change var to utxo from lockOutRef 2023-03-07 19:15:03 -05:00
Jack Fraser 2cfa0aeda9 add missing types, update log descriptions, deno fmt 2023-03-07 19:15:03 -05:00
Jack Fraser 80afb5fc2d update cli documentation 2023-03-07 19:15:03 -05:00
Jack Fraser 6aa51213e4 add deno settings 2023-03-07 19:15:03 -05:00
rvcas 9b96f7bb2e
chore: commit acceptance test plutus files 2023-03-06 13:26:36 -05:00
Kasey White f230af436c fix: scope issue with expect and function calls
Add acceptance test 72
2023-03-03 01:00:35 -05:00
Kasey White 5779b77ccc fix: Had to also check for generic type in return of a function.
add check to prevent stack overflow error
Add panic to prevent any other occurrences of stack overflow
2023-03-02 21:49:20 -05:00
Kasey White 26b4156d5a remove comment 2023-03-02 21:49:20 -05:00
KtorZ 451d9d8493 Add new acceptance test scenario: 068
Stack overflow happening during code generation.
2023-03-02 21:49:20 -05:00
KtorZ 65c336cb82
Update blueprint outputs to reflect latest specification.
Schemas of datums, redeemers and parameters are now nested under a field 'schema'. This allows to define a field 'purpose' at the same level.
2023-03-02 17:17:27 +01:00
Kasey White 0c1c7da16f add accpetance test 71 2023-03-01 14:22:59 -05:00
Kasey White 665a8dec67 feat: add support for unconstr_data
-Builitins IR now acts like Record IR in terms of argument consumption
-UnConstrData returns as Pair(Data,Data) to conform with how pairs are treated behind the scenes.
2023-02-26 00:13:38 -05:00
KtorZ 81e072a14e Add new acceptance test scenario: 064
- Type mismatch expected 'data' got 'integer'
  - Type mismatch expected 'data' got 'list data'
2023-02-26 00:13:38 -05:00
KtorZ c0230a811f
Add 'plutusVersion' to blueprints. 2023-02-21 15:37:35 +01:00
Kasey White 70164282f8 fix: switch from unwrap to if let to allow boolean when
fix: test 67 fixed to take in ByteArray instead of string literal
2023-02-20 04:37:33 -05:00
Kasey White 87eb4ca3b4 feat: handle single constr when with multiple branches
Add case to acceptance test 40
Add special case for top level single constr in a when.
2023-02-20 02:46:46 -05:00
KtorZ 5132110d4b
Fix acceptance tests to use new syntax. 2023-02-19 10:10:40 +01:00
Kasey f3cdc05875
fix: the refactor on discharge value env (#393) 2023-02-18 20:49:29 -05:00
KtorZ cd4ceb219c
Remove complex and compound constants.
This is not supported by the code generation, so it's a bit of a lie
  to have them in the language in the first place. There's arguably not
  even any use for constant records, list and tuples to begin with. So
  this cleans this up everywhere for the sake of moving forward with the
  alpha release.

  This now reduces constants to:

  - Integer
  - ByteArray
  - String

  Anything else can be declared via a function anyway. We can revisit
  this choice later.... or not.
2023-02-17 17:31:15 +01:00
KtorZ 560c17d5aa
Add new acceptance test scenario: 060
```
  Error:
    × Main thread panicked.
    ├─▶ at crates/aiken-lang/src/builder.rs:1088:13
    ╰─▶ not yet implemented
  ```
2023-02-17 17:13:04 +01:00
KtorZ f10e9e8977
Add new acceptance test scenario: 062
```
  Error:
    × Main thread panicked.
    ├─▶ at crates/uplc/src/optimize.rs:16:68
    ╰─▶ called `Result::unwrap()` on an `Err` value: FreeUnique(Name { text: "tests_bar", unique: Unique(1) })
  ```
2023-02-17 11:25:41 +01:00
KtorZ 8fabfd112e Add new acceptance test scenario: 063 2023-02-16 20:29:41 -05:00
KtorZ e7a61df1f3 Add new acceptance test scenario: 062
```
  Error:
    × Main thread panicked.
    ├─▶ at crates/uplc/src/optimize.rs:16:68
    ╰─▶ called `Result::unwrap()` on an `Err` value: FreeUnique(Name { text: "tests_bar", unique: Unique(1) })
  ```
2023-02-16 20:27:00 -05: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 d41e6942c6 test: fix acceptance tests 2023-02-16 00:05:55 -05:00
rvcas a311531508 fix(cli): aiken address 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 a88a193383 fix: properly lex new token and adjust parsed spans 2023-02-16 00:05:55 -05:00
KtorZ d26ff0298f Add new acceptance test scenario: 054.
**a**

  ```
  × Main thread panicked.
  ├─▶ at crates/uplc/src/optimize.rs:16:68
  ╰─▶ called `Result::unwrap()` on an `Err` value: FreeUnique(Name { text: "__other_clauses_delayed", unique: Unique(13) })
  ```

  **b**

  ```
  × Main thread panicked.
  ├─▶ at crates/aiken-lang/src/builder.rs:771:14
  ╰─▶ not yet implemented: Assign
  ```

  **c**

  ```
  × choice_4 failed
  help: ┍━ left ━━━━━━━━━━━━━┑
        │ (con data #d87a80) │
        ┕━━━━━━━━━━━━━━━━━━━━┙

        should be equal to

        ┍━ right ━━━━━━━━━━━━━━━━━━┑
        │ (con data #d8799f182aff) │
        ┕━━━━━━━━━━━━━━━━━━━━━━━━━━┙
  ```
2023-02-15 22:12:41 -05:00
KtorZ 808ff97c68
Preserve trace, error & todo formatting. 2023-02-15 23:19:07 +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 4e51e49fe6
Align context diagnostics to use similar syntax. 2023-02-15 17:26:26 +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