Commit Graph

1287 Commits

Author SHA1 Message Date
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
47e77aa819 Add new context test for datums and reference scripts 2023-02-15 17:10:14 +01:00
KtorZ
6772e20d85 Replace withdrawals withdraw validator with always true validator. 2023-02-15 12:59:33 +01:00
KtorZ
b300cf38db Add new script context test scenario covering minting & values. 2023-02-15 12:49:56 +01:00
KtorZ
cf7f206324 Add missing cbor-diag dependency for running acceptance tests. 2023-02-15 10:46:18 +01:00
KtorZ
014c7a3d73 Fix error display in tx simulate. 2023-02-15 09:42:46 +01:00
KtorZ
01c392836e Fix CI script + add script interactions. 2023-02-15 09:42:46 +01:00
KtorZ
e1c0c3986d Remove unused imports in 054. 2023-02-15 09:42:45 +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
KtorZ
23bf101e08 Add new acceptance test scenario: 058
Doesn't like var patterns in list pattern-matching

  ```
  Error:
    × Main thread panicked.
    ├─▶ at crates/aiken-lang/src/uplc.rs:770:29
    ╰─▶ internal error: entered unreachable code
  ```
2023-02-15 02:20:05 -05:00
KtorZ
d9cfad8f68 Add new acceptance test scenario: 061
```
  Error:
    × Main thread panicked.
    ├─▶ at crates/uplc/src/optimize.rs:16:68
    ╰─▶ called `Result::unwrap()` on an `Err` value: FreeUnique(Name { text: "tests_tx_1", unique:
        Unique(14) })
  ```
2023-02-15 02:20:05 -05:00
KtorZ
6132c092e3 Add new acceptance test scenario: 059
```
  Error:
    × Main thread panicked.
    ├─▶ at crates/aiken-lang/src/uplc.rs:1451:52
    ╰─▶ called `Option::unwrap()` on a `None` value
  ```

  See also: #310
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
Lucas
d8ff9e23a4 Merge pull request #373 from aiken-lang/test-script-context-interactions
Test (some) script context interactions
2023-02-14 12:03:04 -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
a3078adce8 Add succinct README to explain what's going on. 2023-02-14 16:25:48 +01:00
KtorZ
685473ead6 Rename data -> ctx 2023-02-14 16:11:00 +01:00
KtorZ
5369872a3d Add new script_context acceptance scenario for withdrawals. 2023-02-14 16:11:00 +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
KtorZ
251aa756d9 Make basic script a template, and add more assertions. 2023-02-14 11:37:10 +01:00
KtorZ
545323128c Write basic e2e validator with evaluation. 2023-02-14 10:39:31 +01:00
KtorZ
4ef1ba69de Use blueprint in hello-world example. 2023-02-14 09:16:30 +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
KtorZ
2bda581fbd Add new acceptance test scenario: 057
```
  Error:
    × Main thread panicked.
    ├─▶ at crates/aiken-lang/src/uplc.rs:4286:48
    ╰─▶ called `Option::unwrap()` on a `None` value
  ```
2023-02-12 18:43:11 -05:00
Kasey White
1c9540ec87 one more test case to add 2023-02-11 22:26:34 -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
Matthias Benkort
22f5ecc8c6 Merge pull request #358 from aiken-lang/patch/cargo.nix
Update Cargo.nix
2023-02-10 10:15:28 +01:00
KtorZ
22eea92c6f [create-pull-request] automated change 2023-02-10 09:11:55 +00:00
rvcas
9b0fc0b395 chore: fix some weirdness after rebasing with main 2023-02-10 10:09:00 +01:00
Matthias Benkort
bf15fece57 Merge pull request #356 from aiken-lang/big_int
Upgrade Term::Constant to use BigInt
2023-02-10 09:49:44 +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