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
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
Kasey White
98d2cb5afc
in progress: working on taking special opaque types and converting them to their inner type
2023-01-17 08:44:28 -05:00
Kasey White
0da4560792
fix failing unit tests
2023-01-17 03:02:06 -05:00
rvcas
5ceb3b07fb
fix: call was not capturing full span
2023-01-16 15:26:07 -05:00
rvcas
4024add4da
feat: error when an expression is implicitly discarded
2023-01-16 15:17:39 -05:00
KtorZ
844570caf5
Fix multi-line type-alias tuple definitions
...
Somehow missed it when reworking tuples. We need to allow the new
'NewLineLeftParen' token in this situation as well. Especially because
this is what the formatter outputs.
2023-01-16 11:30:20 +01:00
rvcas
1adac64585
feat(imports): return a nice error if a validator module is imported
2023-01-15 18:54:35 -05:00
rvcas
f114905f7d
fix: small typos in error messages
2023-01-15 18:54:35 -05:00
rvcas
c66d07a54c
feat: validator fns no longer need to be public
...
If the function doesn't match a script purpose
and is unused then it will till present as a
warning.
2023-01-15 12:33:10 -05:00
rvcas
00f2150eed
feat: add identity, always, & flip
2023-01-14 23:33:49 -05:00
rvcas
b69c1f66d7
feat: return err if data type contains functions
...
Due to how PlutusData works it doesn't make sense
to allow user defined types to contain
functions.
```
type Foo {
bar: fn(Int) -> Int
}
```
The above definition will now return an error.
2023-01-14 22:03:56 -05:00
KtorZ
5b7147fc43
Remove leading '#' for tuple definitions.
...
This possibly breaks many Aiken programs out there, but it's for the
best. We haven't released the alpha yet so we still have a bit of
freedom when it comes to breaking change.
Plus, the migration path is easy, simply run:
```
find . -name "*.ak" | xargs sed -i "s/#(/(/g"
```
(or `-i ''` on MacOS).
2023-01-14 20:22:19 +01:00
KtorZ
2d99c07dd3
Support (and default to) parenthesis for block expressions
...
This changes allow to use parenthesis `(` `)` to encapsulate
expressions in addition to braces `{` `}` used to define blocks.
The main use-case is for arithmetic and boolean expressions for which
developers are used to using parenthesis. For example:
```
{ 14 + 42 } * 1337
```
can now be written as:
```
( 14 + 42 ) * 1337
```
This may sound straightforward at first but wasn't necessarily trivial
in Aiken given that (a) everything is an expression, (b) whitespaces
do not generally matter and (c) there's no symbol indicating the end
of a 'statement' (because there's no statement).
Thus, we have to properly disambiguate between:
```
let foo = bar(14 + 42)
```
and
```
let foo = bar
(14 + 42)
```
Before this commit, the latter would be interpreted as a function call
and would lead to a somewhat puzzling error. Now, the newline serves
as a delimiting symbol. The trade-off being that for a function call,
the left parenthesis has to be on the same line as the function name
identifier -- which is a fair trade off. So this is still allowed:
```
let foo = bar(
14 + 42
)
```
As there's very little ambiguity about it.
This fixes #236 and would seemingly allow us to get rid of the leading
`#` in front of tuples.
2023-01-14 11:49:45 -05:00
KtorZ
b791131fd0
Small tweak on error messages; better grammer.
2023-01-14 14:13:30 +01:00
Kasey White
7b023911af
add assert and record
...
Record is a more efficient air for making records
Assert guarantees a custom is of a certain variant.
2023-01-13 13:50:27 -05:00
Kasey White
1721c3945b
Refactors:
...
Add test 40
refactor how we get data type from type
Call contains type now to handle certain record cases
2023-01-13 13:50:27 -05:00
rvcas
59ef63b513
chore: field might not always need to be plural
2023-01-11 20:47:47 -05:00
rvcas
99a334b132
fix(check): the expected arity with hardcoded to 0
2023-01-11 20:47:47 -05:00
rvcas
3be05b1545
fix(fmt): error fmt was removing label
2023-01-11 19:47:11 -05:00
Kasey White
eac8f7a80e
replace discard assignment with nothing
2023-01-11 09:46:37 -05:00
rvcas
6ea9ad9c41
chore: clippy warnings
2023-01-09 18:12:18 -05:00
Kasey White
ce2de96226
clippy fix
2023-01-08 19:42:49 -05:00
Kasey White
42c8d50fa1
feat: finish record update
2023-01-08 19:42:49 -05:00
Kasey White
ea135e6f42
refactor term::apply to apply_wrap. Fixed a list eq binop
2023-01-08 19:42:49 -05:00
rvcas
d649b34ec3
Release 0.0.28
...
aiken@0.0.28
aiken-lang@0.0.28
aiken-lsp@0.0.28
aiken-project@0.0.28
uplc@0.0.28
Generated by cargo-workspaces
2023-01-06 13:41:00 -05:00
Kasey White
1a29ee3b72
my discard add got lost in the rebasing -_-
2023-01-06 14:23:46 +01:00
Kasey White
dc052bf9b8
fix nested lists without removing discard pop
...
Also fix bool constants created as a data type like in a list
start on record update
fix: nested list issues in when statements
2023-01-06 14:23:45 +01:00
KtorZ
4b34617466
Revert "fix: nested list issues in when statements"
...
This reverts commit 542962a2ea
.
2023-01-06 06:50:42 +01:00
Kasey White
542962a2ea
fix: nested list issues in when statements
2023-01-03 01:31:18 -05:00
Kasey White
67e4ff8317
feat: allow functions from prelude
...
Co-authored-by: rvcas <x@rvcas.dev>
2022-12-31 00:09:02 -05:00
Kasey White
e495eefb34
feat implement tuple index
2022-12-31 00:09:02 -05:00
Kasey White
3514e66234
Fix to variant name creation for dependencies.
...
Last few changes to go Tuple Index,
Assert, Check, not
change test 35 to produce intended functionality
2022-12-30 14:01:11 -05:00
Kasey White
b0ea187151
better data deserialization errors and test hint
...
now runs even being in a sequence
2022-12-30 14:01:11 -05:00
rvcas
ee678f2978
Release 0.0.27
...
aiken@0.0.27
aiken-lang@0.0.27
aiken-lsp@0.0.27
aiken-project@0.0.27
flat-rs@0.0.27
uplc@0.0.27
Generated by cargo-workspaces
2022-12-30 00:57:49 -05:00
Kasey White
34d398ab3b
fix dependencies ordering so now test 34 passes
2022-12-29 17:14:23 -05:00
Kasey White
306fa891a0
validator params are now converted to type from data
2022-12-29 17:14:23 -05:00
KtorZ
85a6a711e1
Add more colors to error messages.
...
And, let 'formatdoc' insert newlines when relevant to
format the text to the same column length.
2022-12-29 17:38:34 +01:00
KtorZ
3139c85fe8
Support declaring bytearray literals as base16 strings.
2022-12-29 13:08:58 +01:00
KtorZ
1701cacb52
Add builtin functions to the prelude
...
Starting with 'not', will add 'always' and 'identity' later.
2022-12-29 12:05:30 +01:00
Kasey White
cce76bbd63
fix issue with constructor clauses and clause props
2022-12-28 18:00:11 -05:00
KtorZ
c4c0ace3a6
Align warnings message's style with errors.
2022-12-28 18:45:04 +01:00
KtorZ
7c1b8e8f3b
Map remaining relevant builtins.
2022-12-28 18:27:28 +01:00
KtorZ
f2e716dd86
Fix else/if formatter.
2022-12-28 17:55:11 +01:00
KtorZ
bae8267f18
Fix formatter for unary operation
...
Was wrongly converting any unary operation into '!'
2022-12-28 17:51:00 +01:00
Kasey White
722117bfc4
one minor scope fix
2022-12-27 22:33:09 -05:00
Kasey White
551d4eea93
fix test 28
2022-12-27 22:33:09 -05:00
Kasey White
010024fb95
fix: acceptance test 031
...
Co-authored-by: rvcas <x@rvcas.dev>
2022-12-27 22:33:09 -05:00
Kasey White
083b7fcb5f
feat: support negation of int
...
* add unary op
* parse, typecheck, and code gen it
* express boolean not as unary op as well, previously called negate
Co-authored-by: rvcas <x@rvcas.dev>
2022-12-27 20:39:03 -05:00
Kasey White
542e39f093
feat: finish up zero arg issues with dependencies
2022-12-27 19:35:08 -05:00
Kasey White
30487cc232
fix test 23
2022-12-27 19:35:08 -05:00
Kasey White
919ea6c723
tuple destructuring nested and not now works
2022-12-27 19:35:08 -05:00
Kasey White
a08c615da4
checkpoint
2022-12-27 19:35:08 -05:00
Kasey White
b7d506a8db
nested lists now work
2022-12-27 19:35:08 -05:00
Kasey White
6126ee4cb4
checkpoint
2022-12-27 19:35:08 -05:00
rvcas
38a716d94e
feat: allow error to hold a label
2022-12-23 15:52:44 -05:00
rvcas
37196a29ee
feat: error keyword
2022-12-23 15:52:44 -05:00
KtorZ
7b9ea5dabb
Add links to the user-manual to errors, when applicable.
2022-12-23 19:50:14 +01:00
KtorZ
69f060e675
Rework all errors to provide better help text.
2022-12-23 19:27:06 +01:00
KtorZ
c47c50ffb8
Show most type-checking error on a single line; reads better.
2022-12-23 00:25:18 +01:00