Commit Graph

2306 Commits

Author SHA1 Message Date
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
KtorZ
6e67fe837b Keep constants and types sorted; only functions are unsorted. 2024-08-23 10:30:18 +02:00
KtorZ
c3e39301e2 Re-format source code using cargo fmt. 2024-08-22 16:42:41 +02:00
KtorZ
b479a289cf Implement source linker and add URL to source code in generated docs.
Long overdue.
2024-08-22 16:37:48 +02:00
KtorZ
44e42d608d Allow hidden modules, not generating any documentation.
This is useful when splitting module for dependencies, yet without the desire to expose internal constructors and types. This merely skips the documentation generation; but doesn't prevent the hidden module from being accessible.
2024-08-22 15:47:00 +02:00
KtorZ
7eee3ce63c Fix CLI output colors when generating documentation. 2024-08-22 15:47:00 +02:00
KtorZ
10c829edfa Parse and display documentation section headers.
The idea is pretty simple, we'll just look for lines starting with Markdown heading sections, and render them in the documentation. They appear both in the sidebar, and within the generated docs themselves in between functions. This, coupled with the order preservation of the declaration in a module should make the generated docs significantly more elegant to organize and present.
2024-08-22 15:47:00 +02:00