KtorZ
90ee86d14e
Improve error reporting for the blueprint generation.
...
Actually link schema error to source code with a span and a label. This is easily done and provides some extra context.
2023-01-31 09:48:45 +01:00
KtorZ
b3fc2d51cf
Fix help on unknown::module error.
2023-01-31 09:48:45 +01:00
KtorZ
2523816813
Handle opaque single-variant-single-field special case.
2023-01-31 09:48:45 +01:00
KtorZ
aaa8cba0cf
Fix nested generics and phantom-types, and handle list special case
...
List of pairs are actually encoded as 'map'.
2023-01-31 09:48:45 +01:00
KtorZ
9a44cba007
Add support for generics in the blueprint generation.
2023-01-31 09:48:45 +01:00
KtorZ
0bd9d045b0
Support tuples in blueprint generation.
2023-01-31 09:48:44 +01:00
KtorZ
d2cc44e5f4
Allow testing blueprint generation from Aiken programs
...
This is quite something, because now we have a testing pipeline that
can also be used for testing other compiler-related stuff such as the
type-checker or the code generator.
2023-01-31 09:48:44 +01:00
KtorZ
b93e14659c
Refactor blueprint & handle annotated schemas
...
This also now introduce two levels of representable types (because it's needed at least for tuples):
Plutus Data (a.k.a Data) and UPLC primitives / constants (a.k.a Schema).
In practice, we don't want to specify blueprints that use direct UPLC primitives because there's little support for producing those in the ecosystem. So we should aim for producing only Data whenever we can. Yet we don't want to forbid it either in case people know what they're doing. Which means that we need to capture that difference well in the type modelling (in Rust and in the CIP-0057 specification).
I've also simplified the error type for now, just to provide some degree of feedback while working on this. I'll refine it later with proper errors.
2023-01-31 09:48:44 +01:00
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
Lucas
0e65fecf69
Merge pull request #302 from aiken-lang/when-clause-guards
...
When clause guards
2023-01-30 12:18:04 -05:00
rvcas
60ad3dae50
chore: fmt builder.rs
2023-01-30 12:07:50 -05:00
rvcas
d4a73f1235
chore: commit assets
2023-01-30 12:01:56 -05:00
rvcas
af67f41ead
fix: Air::Lam not real, probably meant Air::Let
2023-01-30 12:01:40 -05:00
rvcas
aec79936e2
chore: move a test case to 049
2023-01-30 11:49:18 -05:00
Lucas
b653714c0c
Merge branch 'main' into when-clause-guards
2023-01-30 11:40:29 -05:00
Lucas
f7421032bd
Merge pull request #315 from aiken-lang/assert-data-type
...
Assert data type to type cast
2023-01-30 11:34:47 -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
Micah
ad7a62d2bf
Merge pull request #306 from aiken-lang/micah/acceptance-test-048
...
Added 048 acceptance test
2023-01-23 12:46:42 +11:00
Micah Kendall
d608c50130
Added 048 acceptance test
2023-01-23 01:12:29 +11:00
Kasey White
e36f91c39c
fix: multiple list cases of the same length weren't being handled
2023-01-21 19:42:17 -05:00
KtorZ
a178cee7bf
Add new acceptance test scenario: 046
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
a926a1a2d4
Add new acceptance test scenario 048
2023-01-21 17:49:44 +01: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
83fd910604
Update artifacts from acceptance tests 036
2023-01-21 12:46:22 +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