Commit Graph

724 Commits

Author SHA1 Message Date
KtorZ 547696abde
Add title and description to exported types in the blueprint
This also fixes a bug where the documentation of record constructor arguments would be dropped after type-checking. Took me a while to pinpoint.
2023-01-31 09:48:44 +01:00
KtorZ 59ffc6434f
Add title to blueprint's validators
And use it to prefix UPLC artifacts' names.
2023-01-31 09:48:44 +01:00
KtorZ f8970ecb9e
Move UPLC dump into separate function + log event.
```
    Compiling aiken-lang/stdlib 43d8e740ffdf5febc59e51b7f0d5f8506115340c (examples/hello_world/build/packages/aiken-lang-stdlib)
    Compiling aiken-lang/hello_world 1.0.0 (examples/hello_world)
   Generating project's blueprint (examples/hello_world/plutus.json)
    Exporting UPLC (examples/hello_world/artifacts)
  ```
2023-01-31 09:48:44 +01:00
KtorZ b667b7f7b7
Refactor test collection to use the new CheckedModules method
And also, caught a little issue regarding the filtering of test cases.
2023-01-31 09:48:44 +01:00
KtorZ 5683d19a4c
Refactor build steps to generate blueprints instead
The blueprint is generated at the root of the repository and is
  intended to be versioned with the rest. It acts as a business card
  that contains many practical information. There's a variety of tools
  we can then build on top of open-source contracts. And, quite
  importantly, the blueprint is language-agnostic; it isn't specific to
  Aiken. So it is really meant as an interop format within the
  ecosystem.
2023-01-31 09:48:38 +01:00
KtorZ 3cefbd00af
Draft basic Blueprint schema type definition.
This doesn't include validations yet. Let's start simple
  and try to get some basic schema generated already.
2023-01-31 09:47:47 +01:00
rvcas 60ad3dae50
chore: fmt builder.rs 2023-01-30 12:07:50 -05:00
rvcas af67f41ead
fix: Air::Lam not real, probably meant Air::Let 2023-01-30 12:01:40 -05:00
Lucas b653714c0c
Merge branch 'main' into when-clause-guards 2023-01-30 11:40:29 -05:00
Kasey White 0ea2be0e95 feat: Add codegen for handling clause guards 2023-01-30 05:11:27 -05:00
Kasey White a638388747 Add more complex test 40.
Add assert for when constr index is given
2023-01-30 04:17:03 -05:00
Kasey White 8c04ab093a update test 40 2023-01-30 03:24:52 -05:00
Kasey White afd040fda5 feat: Finish up assert feature
Better error reporing on NonFunctionalApplication Error
Refactor redundant code
Add handling of whens with one clause.
2023-01-29 05:21:55 -05:00
Kasey White 4c8089c28a Assert now works for a variety of types.
Still some final work to finish and test. Things are good so far
2023-01-28 05:14:12 -05:00
Kasey White 60736b4a54 chore: Add error when type casting without annotation
Also implement and test most of assert. Finishing last few cases.
2023-01-28 02:40:53 -05:00
Kasey White fc88028034 some refactoring and adding assert on lists 2023-01-27 05:02:19 -05:00
Kasey White d4eec1fe79 chore: Add scaffolding for assert 2023-01-27 05:02:19 -05:00
Kasey White 38c24cca01 single clause when not yet implemented 2023-01-27 05:02:19 -05:00
Kasey White 1af1b6d898 finalize aiken ir with typing 2023-01-27 05:02:19 -05:00
rvcas 4976ea4164 chore: add test for the new token captures 2023-01-26 10:16:29 -05:00
rvcas 703fcb451d fix(parser,windows): capture carriage return properly 2023-01-26 10:16:29 -05:00
rvcas 3c97f057cc chore: fix clippy 2023-01-24 12:07:06 -05:00
rvcas ba05f1f070 feat: add label to span 2023-01-24 12:07:06 -05:00
rvcas a485406e3d fix: use the location of the pattern not the entire clause 2023-01-24 12:07:06 -05:00
rvcas 7206360baa feat(when): single when clause now emits warning 2023-01-24 12:07:06 -05:00
Kasey White e36f91c39c fix: multiple list cases of the same length weren't being handled 2023-01-21 19:42:17 -05:00
Kasey White e8fb386bdc chore: Switch from hashmap and hashset to indexmap and indexset 2023-01-21 18:10:15 -05:00
KtorZ 5d7585cc05
Implement parser for when clause guard
With pretty parse errors on failures. The type-checker was already
  implemented for those, so it now only requires some work in the code
  generation.

  Fixes #297.
2023-01-21 17:43:13 +01:00
KtorZ 91bd0d1d77
Display warning help + minor error improvements. 2023-01-21 17:42:58 +01:00
KtorZ 333a990249
Fix parsing of subtractions and negations in the absence of space. 2023-01-21 12:43:11 +01:00
KtorZ bb360cd7c8
Fix display of 'UnknownLabels'
This is a bit annoying as we are forced to use #[related] here which isn't quite what we want.
  Ideally, this would use #[diagnostic_source] but, there's a bug upstream. See: zkat/miette#172.
2023-01-21 11:37:19 +01:00
KtorZ d905f24e7f
Forbid solo-assignment as the only function body
In the similar spirit to what we did for sequences. Yet, we need to handle the case of body being just an assignment -- or a trace of an assignment which is basically the same thing.
2023-01-21 10:32:06 +01:00
KtorZ 2101bb924d
Fix tuple-pattern parser
This case was originally left out but, tuple parsers are almost always exclusively starting with a NewLineLeftParen token.
2023-01-21 10:04:11 +01:00
KtorZ d321b85df2
Refactor type errors back into macro annotations
Far less verbose than defining classes by hand, plus, it allows to have everything about a single error be co-located. And finally, it allows to use 'related', 'label' and so on more easily.
2023-01-20 20:11:44 +01:00
KtorZ 4459fdb360
Fix error reporting on cyclic definitions.
Fixes #292
2023-01-20 20:09:00 +01:00
KtorZ ce65236514
Parse tests as private functions.
They actually are private; we can't export / import tests. Fixes #284.
2023-01-20 12:50:07 +01:00
KtorZ 61be8ca73e
Add diagnostic codes to type-check warnings. 2023-01-20 12:27:48 +01:00
KtorZ 10fb7455f3
Forbid let-binding as last expression of a sequence
Fixes #283
2023-01-19 18:05:57 +01:00
KtorZ c5e876e817
Fix typo in variant name: Implicity -> Implicitly 2023-01-19 17:26:33 +01:00
KtorZ bb82b1bc1e
slightly rework hint for 'ImpliclyDiscardedExpression' 2023-01-19 17:25:18 +01:00
KtorZ 092151d6a0
Remove dead-code and fix comment about discarded expressions
While Gleam originally allowed various kinds of expressions to be discarded in a sequence, we simply do not allow expressions to be discarded implicitly. So any non-final expression in a sequence must be a let-binding. This prevents silly mistakes.
2023-01-19 16:35:39 +01:00
Kasey White 52724ea0e0 feat: handle anon zero arg functions.
Test 045
2023-01-19 01:34:27 -05:00
Kasey White 7215bf33e9 fix: get_variant_name was not properly traversing type args on map and data types 2023-01-18 16:06:44 -05:00
Kasey White 71ae85a720 missing a condition check on when 2023-01-18 15:29:51 -05:00
Kasey White d7e4aef4c5 feat: Add boolean conditions to when statements 2023-01-18 15:29:51 -05:00
KtorZ c440026e36
Fix generated projects' README + rename 'certify' -> 'publish'
This hints to how this particular purpose is about publishing
  certificate (either delegation or key de-registration).
2023-01-18 16:48:42 +01:00
KtorZ 20ac9c20a2
Remove some dead-code. 2023-01-18 16:43:40 +01:00
KtorZ b475d6a6a4
Provide better errors when packages aren't found. 2023-01-18 16:34:26 +01:00
KtorZ 071dc00624
Implement various visual improvements for the doc generator
- Display function's signature next to the function name
    (instead of being repeated below the function documentation).

  - Same for module constants

  - Display record constructors in a more concise manner, with
    constructors fields next to constructors.

  - Display generic parameters, if any, next to the type

  - Plus some minor color and icon rework.
2023-01-18 15:12:15 +01:00
Kasey White 33d902ba2a feat: Now opaque types with one constr and one field are converted to inner field type 2023-01-17 08:44:28 -05:00