Commit Graph

2362 Commits

Author SHA1 Message Date
KtorZ
52a39629b7 Add UPLC test for always_true mint validator.
Mainly to have a trivial example with just the validator boilerplate code.
2024-08-25 16:20:08 +02:00
KtorZ
8c2fdf9ad4 Use dot to separate purpose from validator name in blueprint
The rationale is two folds:

  1. It's more consistent with how we already separate the validator
  name from its module.

  2. Because `_` may be present in Aiken's validator's name, it is hard
     to read and I am afraid it could potentially conflict later on. So
     it's better to use a separator that cannot appear in validator
     names.
2024-08-25 16:20:08 +02:00
KtorZ
ed55f03aa2 Fix remaining blueprint test.
Probably an oversight when we reworked them.
2024-08-25 16:20:08 +02:00
KtorZ
442010d056 Fix generation of fallback validator
This must only happen in case all other validator succeed; otherwise
  we might generate invalid validators.
2024-08-25 16:20:08 +02:00
rvcas
73522296aa chore: accept updated snapshot 2024-08-25 16:20:08 +02:00
rvcas
ff1464b462 feat: annotated data for option datum 2024-08-25 16:20:08 +02:00
rvcas
d8723c5497 feat: use __fallback in bluprint for the else 2024-08-25 16:20:07 +02:00
rvcas
4589c51cd3 feat: enforcement that spend first arg is option 2024-08-25 16:20:07 +02:00
rvcas
c57009bf99 chore: fix some tests that now correctly fail due to arity checks 2024-08-25 16:20:07 +02:00
KtorZ
c706d6072d Fix few blueprint generation tests
Some remains invalid, in particular:

  - We need to handle the annotated Data case, which we still parse
    correctly but do nothing about any longer.

  - There's also a strange behavior with opaque type turned public?
2024-08-25 16:20:07 +02:00
KtorZ
f9acbd3bcb DRY handlers generation from validator 2024-08-25 16:20:07 +02:00
KtorZ
6a6bf6f65f Handle (though discard) first script purpose argument of publish and propose. 2024-08-25 16:20:07 +02:00
KtorZ
5943d94c6c Finish re-working machine errors display. 2024-08-25 16:20:06 +02:00
KtorZ
fe205e360f Update remaining script context e2e tests. 2024-08-25 16:20:06 +02:00
KtorZ
7ec3f2e8df DRY builtins types creation to ensure proper consistency. 2024-08-25 16:20:06 +02:00
rvcas
5b61a75088 feat: handler withdraw purpose 2024-08-25 16:20:06 +02:00
microproofs
f86d550ca0 Fix type for mint scriptinfo 2024-08-25 16:20:06 +02:00
microproofs
953ee6b5d1 Fix ordering for ScriptInfo type 2024-08-25 16:20:05 +02:00
rvcas
b9456b5946 fix: wrap_validator_condition needs to happen earlier 2024-08-25 16:20:05 +02:00
rvcas
e174532bfd chore: add more redacted values to machine errors 2024-08-25 16:20:05 +02:00
rvcas
79099675d4 fix: free unique on purpose arg 2024-08-25 16:20:05 +02:00
rvcas
c2c4bddfb3 feat: new check for valid purpose names 2024-08-25 16:20:05 +02:00
KtorZ
5cf0a4d294 Fix validator arity check
For now, this panics, but ideally, we should return a "unknown
  purpose" error when we cannot map the name to an arity.
2024-08-25 16:20:04 +02:00
KtorZ
823492c27b Adjust v3 script context end-to-end tests to work with new syntax. 2024-08-25 16:20:04 +02:00
KtorZ
972e9bd763 Define ScriptPurpose & ScriptContext types in prelude, fix codegen new v3 wrapper. 2024-08-25 16:20:04 +02:00
rvcas
90d75d4a13 fix: redeemer could be missing 2024-08-25 16:20:04 +02:00
rvcas
00b8a39236 fix: private type leaks 2024-08-25 16:20:04 +02:00
rvcas
79840248c0 fix: more parse errors in some tests 2024-08-25 16:20:04 +02:00
rvcas
f94e40daf4 fix: more test and issues with scoping/names 2024-08-25 16:20:03 +02:00
rvcas
cf3180996a fix: map fallback name if present to else 2024-08-25 16:20:03 +02:00
rvcas
00907c2bcc fix: format snapshot tests 2024-08-25 16:20:03 +02:00
rvcas
7f26db401c feat: handler implicit some and none 2024-08-25 16:20:03 +02:00
rvcas
6b8be61b6e test: new snapshots for parsing v3 validators 2024-08-25 16:20:03 +02:00
rvcas
0d8d80e5a7 feat: transform TypedValidator in a function of handlers 2024-08-25 16:20:03 +02:00
rvcas
466a4f0b39 feat: adjust blueprint stuff to be aware of handlers 2024-08-25 16:20:02 +02:00
rvcas
471bbe2175 feat: append validator name to handlers 2024-08-25 16:20:02 +02:00
rvcas
b984f0455a feat: return a vec instead of Option 2024-08-25 16:20:02 +02:00
rvcas
4287fa3f4a feat: new formatting for validators v3 2024-08-25 16:20:02 +02:00
rvcas
9e866a5ec1 fix: make sure that fallback gets it's own scope with params 2024-08-25 16:20:02 +02:00
rvcas
1d9034573b feat: impl infer for new validators 2024-08-25 16:20:02 +02:00
rvcas
fff90f7df5 feat: fix inference comp issues 2024-08-25 16:20:02 +02:00
rvcas
0de5cbc74e feat: implement new validator parsing 2024-08-25 16:20:01 +02:00
jmhrpr
c98e32d3e9 optional costmodel in eval p2 raw 2024-08-24 18:28:08 +02:00
KtorZ
8dfaa1bf90 Fix parsing of v3 cost model
Closes #1002.
2024-08-24 18:26:37 +02:00
KtorZ
a71d7c260c Fix doc_test examples for 'common_prefix' 2024-08-23 16:17:54 +02:00
KtorZ
c92b260260 Fix gen_uplc tests following: 0f905045 2024-08-23 16:17:27 +02:00
KtorZ
c3b287507e Fix link_tree test following 0ff12b92 2024-08-23 16:10:07 +02:00
KtorZ
9aa9070f56 Revise desugaring following feedback
- We now consistently desugar an expect in the last position as
    `Void`. Regardless of the pattern. Desugaring to a boolean value is
    deemed too confusing.

  - This commit also removes the desugaring for let-binding. It's only
    ever allowed for _expect_ which then behaves like a side effect.

  - We also now allow tests to return either `Bool` or `Void`. A test
    that returns `Void` is treated the same as a test returning `True`.
2024-08-23 16:04:40 +02:00
KtorZ
fbe6f02fd1 Allow assignment as last expression
This is debatable, but I would argue that it's been sufficiently
  annoying for people and such a low-hanging fruit that we ought to do
  something about it.

  The strategy here is simple: when we find a sequence of expression
  that ends with an assignment (let or expect), we can simply desugar it
  into two expressions: the assignment followed by either `Void` or a
  boolean.

  The latter is used when the assignment pattern is itself a boolean;
  the next boolean becomes the expected value. The former, `Void`, is
  used for everything else. So said differently, any assignment
  implicitly _returns Void_, except for boolean which return the actual
  patterned bool.

  <table>
  <thead><tr><th>expression</th><th>desugar into</th></tr></thead>
  <tbody>
  <tr>
  <td>

  ```aiken
  fn expect_bool(data: Data) -> Void {
    expect _: Bool = data
  }
  ```
  </td>
  <td>

  ```aiken
  fn expect_bool(data: Data) -> Void {
    expect _: Bool = data
    Void
  }
  ```
  </td>
  </tr>
  <tr>
  <td>

  ```aiken
  fn weird_maths() -> Bool {
    expect 1 == 2
  }
  ```
  </td>
  <td>

  ```aiken
  fn weird_maths() -> Bool {
    expect True = 1 == 2
    True
  }
  ```
  </td>
  </tr>
  </tbody>
  </table>
2024-08-23 16:04:39 +02:00
KtorZ
0f905045e7 Rename mk_nil_data, mk_pair_data & mk_nil_pair_data builtins. 2024-08-23 10:39:37 +02:00