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
KtorZ
e06bbc4e73
Slightly edit module matching logic for conciseness/clarity
...
Also allow using identifier names directly as shorthand, without
surrounding .{ ... }
2023-01-10 18:41:02 +01:00
rvcas
99ec0ff6b0
feat(check): change some logic around and add --exact-match
2023-01-10 11:46:44 -05:00
rvcas
9002ea263f
feat(check): make match tests flag fancier
2023-01-10 10:19:13 -05:00
rvcas
6a95d23811
fix: filter on regular iter before par iter cc @kprotty
2023-01-09 18:21:40 -05:00
rvcas
158b3dfe51
feat(aiken-project): use rayon to run tests in parallel
2023-01-09 18:12:18 -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
rvcas
c89802eaed
chore: bump pallas version
2023-01-06 13:39:18 -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
alessandrokonrad
3aba9baba5
Fixed reward account creation in ScriptContext
2023-01-05 10:31:32 -05: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
KtorZ
ad5a393c4d
Add 'docs' and 'assets' to generated gitignore
...
And also make 'docs' the default folder (instead of doc) to be more aligned with Github's defaults.
2022-12-29 10:54:46 +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
alessandrokonrad
b97570bc00
Fixed clippy issue
2022-12-27 17:08:05 -05:00
alessandrokonrad
c6b5380c27
Fixed ex unit budget limit per redeemer
2022-12-27 17:08:05 -05:00
rvcas
01f2142606
fix: the push was in the wrong place
2022-12-23 22:00:59 -05:00
rvcas
cbaf629645
feat: warn if no validators on build
2022-12-23 22:00:59 -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
rvcas
22103739c3
chore: some clippy warnings
2022-12-23 15:52:44 -05:00
KtorZ
39f5d1a86d
Make build, check and docs target directory an (optional) argument
...
Instead of being an option. Feels more natural that way.
2022-12-23 20:23:27 +01:00
KtorZ
b1b57406e7
Do not generate placeholder files when creating new projects.
...
And fix the --lib flag to be a flag.
2022-12-23 20:19:28 +01: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
KtorZ
ce0c6e0d0f
Use smart-constructor for UnexpectedLabeledArg errors.
...
Reduce duplications and keep the formatting of the error inside the error module.
2022-12-23 00:24:57 +01:00
KtorZ
dca633da48
Refactor 'UnknownVariable' and 'UnknownTypeConstructor' as smart-constructor.
2022-12-23 00:09:07 +01:00
KtorZ
aa2a235790
Suggest possible candidate on unknown imports.
...
## Before
```
× Type-checking
╰─▶ Unknown module field 'ValidityRaneg' in module 'aiken/transaction'
```
## After
```
× Type-checking
╰─▶ Unknown import 'ValidityRaneg' from module 'aiken/transaction'
╭─[../stdlib/validators/tmp.ak:2:1]
2 │ use aiken/interval.{Interval, IntervalBound, IntervalBoundType}
3 │ use aiken/transaction.{ScriptContext, ValidityRaneg}
· ─────────────
4 │
╰────
help: Did you mean to import 'ValidityRange'?
```
2022-12-22 23:46:17 +01:00
KtorZ
70b1ec4324
Add function to calculate lenvenshtein distance of two strings
...
Will be useful to make import or usage suggestions.
2022-12-22 23:44:15 +01:00
KtorZ
666761efef
Make 'UnexpectedLabelArg' errors more helpful
...
## Before
```
× Checking
╰─▶ Unexpected labeled argument
t
╭─[/Users/mati/Devel/OpenSource/time_lock_aiken/validators/time_lock.ak:13:1]
13 │ let now = when context.transaction.validity_range.lower_bound.bound_type is {
14 │ Finite { t } -> t
· ─
15 │ NegativeInfinity -> 0
╰────
```
## After
```
× Type-checking
╰─▶ Unexpected labeled argument 't'
╭─[../stdlib/validators/tmp.ak:10:1]
10 │ let now = when context.transaction.validity_range.lower_bound.bound_type is {
11 │ interval.Finite { t } -> t
· ─
12 │ interval.NegativeInfinity -> 0
╰────
help: The constructor 'Finite' does not have any labeled field. Its fields
must therefore be matched only by position.
Perhaps, try the following:
╰─▶ interval.Finite(t)
```
2022-12-22 21:45:49 +01:00
KtorZ
0682781460
Better errors when using unknown data-type constructor.
...
## Before
```
× Checking
╰─▶ Unknown variable
Finite
╭─[../stdlib/validators/tmp.ak:10:1]
10 │ let now = when context.transaction.validity_range.lower_bound.bound_type is {
11 │ Finite { t } -> t
· ────────────
12 │ NegativeInfinity -> 0
╰────
```
## After
```
× Type-checking
╰─▶ Unknown data-type constructor 'Finite'
╭─[../stdlib/validators/tmp.ak:10:1]
10 │ let now = when context.transaction.validity_range.lower_bound.bound_type is {
11 │ Finite { t } -> t
· ────────────
12 │ NegativeInfinity -> 0
╰────
help: Did you forget to import it?
Data-type constructors are not automatically imported, even if their type is
imported. So, if a module `aiken/pet` defines the following type:
┍━ aiken/pet.ak ━━━━━━━━
│ pub type Pet {
│ Cat
│ Dog
│ }
You must import its constructors explicitly to use them, or prefix them
with the module's name.
┍━ foo.ak ━━━━━━━━
│ use aiken/pet.{Pet, Dog}
│
│ fn foo(pet : Pet) {
│ when pet is {
│ pet.Cat -> // ...
│ Dog -> // ...
│ }
│ }
```
2022-12-22 19:34:50 +01:00
KtorZ
2aa4429231
Rename Unit -> Void
2022-12-22 18:52:28 +01:00
KtorZ
5cf9742e5e
Move tuple-index hint as diagnostic's help
2022-12-22 18:52:28 +01:00
Lucas
168196f903
Merge pull request #210 from aiken-lang/fix-if-expressions
2022-12-22 12:46:24 -05:00
KtorZ
1f15c2ca20
Sort import alphabetically when formatting.
...
Fixes #211 .
2022-12-22 18:00:25 +01:00
rvcas
c723f4f796
feat: redo the new command
2022-12-22 10:52:49 -05:00
KtorZ
1ca705005d
Fix formatting of if-expressions
...
Fixes #129 .
2022-12-22 16:51:23 +01:00
Matthias Benkort
a129a8a0d3
Merge pull request #208 from aiken-lang/tuple-when2
...
fix todo and list and tuple not equal operator
2022-12-22 10:28:06 +01:00
KtorZ
7ad8babf17
Rename ArgName::{Discard,NamedLabeled} as ArgName::{Discarded,Named}
...
Now that the other variants are gone, this is clearer.
2022-12-22 09:36:44 +01:00
KtorZ
8ab05509b1
Remove Named & DiscardLabeled, now unused
...
And unify everything into either 'Discard' or 'NamedLabeled'
2022-12-22 09:36:44 +01:00
KtorZ
bf7cdfba73
Implement parser & type-checker for tuple indexes.
...
```aiken
fn foo() {
let tuple = #(1, 2, 3, 4)
tuple.1st + tuple.2nd + tuple.3rd + tuple.4th
}
```
2022-12-22 09:14:23 +01:00
Kasey White
b1dec1259d
fix todo and list and tuple not equal comparator
2022-12-22 01:09:06 -05:00
rvcas
7867793bcd
feat: on fmt if label and name are the same only print one
2022-12-21 19:17:15 -05:00
rvcas
4c4e454ea3
feat: all function args are now labeled implicitly
2022-12-21 19:17:15 -05:00
rvcas
42204d2d71
chore: make folder names match crate name
2022-12-21 18:11:07 -05:00
rvcas
9028424a96
feat: rename Nil to Unit
2022-12-21 17:27:20 -05:00
rvcas
9df5005820
feat: add IData and BData builtins
2022-12-21 14:39:46 -05:00
rvcas
429126e38f
feat: add trace
2022-12-21 14:39:46 -05:00
KtorZ
9068c89c00
Show trace logs as part of the test output when any.
...
```
┍━ test ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ PASS [mem: 6370, cpu: 2591822] trace_1
│ ↳ is negative
│ ↳ is non-negative
┕━━━━━━━━━ 1 tests | 1 passed | 0 failed
```
2022-12-21 14:39:46 -05:00
KtorZ
2fc14c7c1f
Make box-drawing code more reusable
...
- Move it to 'pretty' module.
- Have function work on colored strings titles and contents
2022-12-21 14:39:46 -05:00
KtorZ
f26737ecb4
Remove the 'trace/try' keyword, use builtin.trace
...
I am not entirely sure what the intent was for that keyword, but
nothing really matched between the parser, the formatter and the uplc
code gen. I don't think there's any need for a keyword here, trace is
already readily available from the builtins.
2022-12-21 14:39:46 -05:00
KtorZ
2aad1794a1
make dependencies optional in Aiken's manifest.
2022-12-21 14:32:40 +01:00
Matthias Benkort
e6f4b378e1
Merge pull request #146 from aiken-lang/micah/file-errors
...
Raise more descriptive errors when the `aiken.toml` manifest is missing.
2022-12-21 11:05:02 +01:00
Micah Kendall
bd816615d7
Display more descriptive error on missing manifest
...
Before:
```
❯ aiken check
Error:
× No such file or directory (os error 2)
```
After:
```
❯ aiken check
Error:
× Missing 'aiken.toml' manifest in /Users/ktorz/Documents/Projects/aiken-lang/aiken
help: Try running `aiken new <REPOSITORY/PROJECT>` to initialise a project with an example manifest.
```
Co-authored-by: KtorZ <matthias.benkort@gmail.com>
2022-12-21 10:10:17 +01:00
KtorZ
28c907d9de
Fix acceptance 021: allow registering type aliases in any order.
...
This is the most intuitive thing I could come up with: since the
problem is mainly due to the order in which we try declaring the
aliases, then it suffices to simply try as much as we can, and retry
on failure until there's no more failure.
Note that it's important to detect cycles if we do such thing (which
we can by noticing that a given iteration didn't make any progress).
It works pretty well in the end and even allow us to define a new kind
of type error should there be a cyclic definition.
2022-12-21 09:43:37 +01:00
KtorZ
a3591cc7dc
Fix 'aiken new', now require project name in specific format.
2022-12-21 00:19:24 +01:00
rvcas
796ac28044
feat: change the printing a little
2022-12-20 16:32:31 -05:00
rvcas
e34cbc8e7e
feat: compile deps
2022-12-20 16:32:31 -05:00
rvcas
b06bf610b7
feat: dep downloading now works
2022-12-20 16:32:31 -05:00
rvcas
6a0b1ce5c3
feat: start trying to use deps
2022-12-20 16:32:31 -05:00
rvcas
5bd2a9336c
feat: tons of boilerplate for fetching packages
2022-12-20 16:32:31 -05:00
rvcas
a6fd8f92a8
feat(deps): start laying out some types and functions
2022-12-20 16:32:31 -05:00
rvcas
b3266fb837
chore: clippy warnings
2022-12-20 16:32:31 -05:00
Kasey White
ac14512706
feat: fix nil equals nil, and fix funcs with discard params
2022-12-20 15:40:01 -05:00
Kasey White
9177267570
feat: test 24 passes
...
fixed issue with is_tuple in types
minor monomorphize change
2022-12-20 15:40:01 -05:00
Kasey White
17603e8cca
checkpoint
2022-12-20 15:40:01 -05:00
Kasey White
43ff66cd01
all tests pass besides todo in 13, couple changes
...
Use more cost efficient recurse
Monomorphize needed to deal with function arg return types
bytearray variant added for variant names
2022-12-19 00:41:27 -05:00
KtorZ
b6556e6739
Rework 'new' to not generate needless boilerplate
...
Instead, prints out a README with useful informations.
2022-12-19 00:41:27 -05:00
Kasey White
421e7148d0
zero arg functions now work: test 15
2022-12-19 00:41:27 -05:00
Kasey White
3a765ddef5
add better todo
2022-12-19 00:41:27 -05:00
KtorZ
529b3e87ff
Rename builtin as 'verify_ed25519_signature'
...
It's best to keep builtin as-close-as possible to their standard name
because they're hard to document. We can then leverage the prelude and
the standard lib for convenient names.
2022-12-19 00:41:27 -05:00
KtorZ
44d72c046e
Print files / tests as they're processed when --debug
...
This is because there's no proper way to catch panics in Rust, which
makes it hard to know _which_ test did cause the panic when this
happen. The stack trace gives little detail about this, but we can
print this information before it happens -- making it easier to
identify the culprit.
2022-12-19 00:41:27 -05:00
Kasey White
eb386f4606
feat: Add nil support for test 19
2022-12-19 00:41:27 -05:00
Kasey White
5b908aaeb7
fix: fieldsexpose getting wrong generic id and not replacing type
2022-12-19 00:41:27 -05:00
Kasey White
47fae21af7
minor fix to monomorphize
2022-12-19 00:41:27 -05:00
Kasey White
2bce818110
chore: fix list insertion order, function insertion order,
...
and Inner function issues with variant
2022-12-19 00:41:27 -05:00
Kasey White
e6c59dca2c
cleanup if then else a bit
2022-12-19 00:41:27 -05:00
Kasey White
eddd202253
tests 1 through 10 pass now, add negate
2022-12-19 00:41:27 -05:00
rvcas
841babae5c
chore: clean some links up so they point to the new repo
2022-12-17 11:19:02 -05:00
KtorZ
1055e342b1
Tweak syntax-highlighting for better output.
2022-12-17 17:09:13 +01:00
KtorZ
202678e21e
Improve rendering of type-signatures in docs
...
- [x] Display function arguments using a newline-multiline strategy
when the signature gets too long. For example:
```
union_with
( left left: AssocList<key, value>
, right right: AssocList<key, value>
, with with: fn(key, value, value) -> value
) -> AssocList<key, value>
```
- [x] Show type-aliases as type-aliases in signatures; provided
they've been specified as type annotations. Otherwise, fallback to
the inferred type.
- [x] Do not show argument names in signatures, but show labels when
they're present. This reflects more the original intent behind
labels (which are meant as public-facing documentation).
2022-12-17 13:07:28 +01:00
KtorZ
579030db36
Highlight current module in the sidebar.
2022-12-17 12:13:51 +01:00
KtorZ
a34d7d4dbb
Revert 71e71ff
...
Redundant with the `kind: ModuleKind` field already.
2022-12-17 11:54:39 +01:00
KtorZ
1178fa3f01
Add source repository to config & docs.
2022-12-17 04:11:54 +01:00
KtorZ
a83900409b
Adjust docs theme to catppuccin
...
- light-mode uses catpuccin-latte
- dark-mode uses catpuccin-mocha
2022-12-17 04:11:54 +01:00
KtorZ
5c0920d6bb
Factor out common module prefix when all modules are under a same namespace.
2022-12-17 02:38:04 +01:00
KtorZ
600c7747da
Do not show link to source.
...
This require slightly more work and has little benefits at this stage given that the sources are literally inlined in the docs.
2022-12-17 01:02:21 +01:00
KtorZ
e7f729c61b
Define HighlightJS definition for Aiken.
2022-12-17 01:02:21 +01:00
KtorZ
e1065e892a
Support module constants in docs.
2022-12-17 01:02:21 +01:00
KtorZ
ac0d180c5c
Apply suggestions from clippy.
2022-12-17 01:02:21 +01:00
KtorZ
873bd85d8b
Implement modules' extra, to get function & module comments in docs.
2022-12-17 01:02:21 +01:00
KtorZ
536c9457b3
Refactor project source parsing
...
There was already a 'parse_sources' function, and 'parse' was actually more about typechecking than parsing.
2022-12-17 01:02:21 +01:00
KtorZ
b323c95241
Fix type-parameter pretty printing (use chevrons)
2022-12-17 01:02:20 +01:00
KtorZ
d2c6d27545
Support data-types in documentation.
2022-12-17 01:02:20 +01:00
KtorZ
1f3f769b53
Add command 'docs' for generating project documentation.
2022-12-16 18:34:05 +01:00
KtorZ
6da53fd875
Add a 'docs' method to projects, using the newly introduced docs::generate_all
2022-12-16 18:33:36 +01:00
KtorZ
16b0a9fbe4
Introduce 'docs' for generating documentation for aiken libraries.
2022-12-16 18:33:04 +01:00
KtorZ
71e71fffe8
Define 'is_library' for 'CheckedModule'
...
So that we can separate libraries from executable modules if necessary.
2022-12-16 15:33:27 +01:00
jmhrpr
775e90d782
chore: remove unnecessary Option wrapper on type
2022-12-15 18:22:31 -05:00
jmhrpr
325a7b7b45
fix: correct V1 to_plutus_data() for txout with no datum hash
2022-12-15 18:22:31 -05:00
rvcas
0188003323
refactor: move helper option builder to lang
2022-12-15 13:28:30 -05:00
rvcas
42f8a694f4
tests: missing token broke a test
2022-12-15 11:12:35 -05:00
rvcas
53bc9aa56f
fix: properly capture empty lines
2022-12-15 11:12:35 -05:00
Matthias Benkort
d9d1310c6d
Merge pull request #166 from aiken-lang/some-interesting-test-cases
...
Include generics to get test cases working
2022-12-15 02:07:05 +01:00
KtorZ
5024bd884c
Remove debug line for pretty-printing test, and add '--debug' flag to 'check instead.
2022-12-15 02:02:10 +01:00
KtorZ
e5972640d2
Remove 'eval' command.
...
Was introduced as a work-around to get some debugging info out of scripts, but tests do now provide the same capability with a better output and, do so automatically.
2022-12-14 22:14:35 +01:00
KtorZ
978a6c6981
Collect and display evaluation hints on test failures.
2022-12-14 22:00:56 +01:00
KtorZ
7b22b63ad8
move 'EvalInfo' to project::script & define a new 'EvalHint'
2022-12-14 22:00:09 +01:00
KtorZ
921e7abbb6
Move pretty-printing utilities to project::pretty
2022-12-14 21:59:09 +01:00
Carlos Souza
6343fa7105
Change generated assets file extensions
2022-12-14 12:48:29 -05:00
KtorZ
87546e0abd
Return non-zero exit code on test failure
...
And integrated test results with miette report.
2022-12-14 18:44:31 +01:00
Carlos Souza
c77b7c293b
Fix errors on aiken build
...
- Update generics syntax
- Add required args to default validator function
This allows running a successful aiken build from
files generated by aiken new.
2022-12-14 12:03:30 -05:00
KtorZ
3a9cc668fc
Use bright_black (i.e. grey) for box drawing.
2022-12-14 17:45:16 +01:00
KtorZ
2d6fc8bd54
Group test results by module.
2022-12-14 17:34:24 +01:00
Kasey White
3c664b9651
test 1-9 passing
2022-12-14 09:45:26 +01:00
rvcas
b71315ba2f
chore: trying to fix test 5
2022-12-14 09:45:26 +01:00
Kasey White
6635a918b5
clean up minor warnings
2022-12-14 09:45:26 +01:00
KtorZ
b6962ba9d3
Add 'eval' command to evaluate target aiken function
...
Pretty useful for debbugging. Though, on second-thoughts, this is
something we may want to review later and maybe have that done by
default for tests.
At the moment, we expects tests to unify to `bool`, and treat `false`
values as failing tests. Yet, on failures, this gives little
information about what's wrong with the test.
It'd be nice to either have better way to assert in tests, or, to
simply accept non-bool tests, and show whatever the test evaluates
to as a debug output.
2022-12-14 09:45:26 +01:00
rvcas
11c793dd2a
feat(Type): add is_option method
2022-12-14 09:45:25 +01:00
Kasey White
8393d8555c
fill constants to data so now test 006 passes
2022-12-14 09:45:25 +01:00
Kasey White
dc5ae296db
implement anonymous functions, more tests pass now
2022-12-14 09:45:25 +01:00
Kasey White
d78e2c9c6f
feat: finish up generic match cases
2022-12-14 09:45:23 +01:00
Kasey White
e43063d447
overhaul monomorphize to cover all generic cases
...
test b passes
2022-12-14 09:45:23 +01:00
Kasey White
15dc202810
Feat: generic function call tests work
2022-12-14 09:45:23 +01:00
Kasey White
e4d9ca4586
support generics
2022-12-14 09:45:23 +01:00
rvcas
16fbf5bbcd
feat: fix recursive functions
2022-12-14 09:45:22 +01:00
Kasey White
3d3b3d7e10
checkpoint
2022-12-14 09:45:22 +01:00
KtorZ
95986fed83
Fix lexer for signed integers.
2022-12-13 19:52:30 -05:00
KtorZ
18bf89418a
Fix codegen for binary operator 'or'
...
a && b → if a { b } else { false }
a || b → if a { true } else { b }
2022-12-13 18:52:23 -05:00
KtorZ
431b0cfcf2
Preserve newlines after blocks of comments.
...
This is an example of output from the formatter now:
```
//// Some module documentation
// foo
const a: Int = 42
// Some comment block
// For which newlines are respected.
// Foo
// Another one
/// add_one documentation
pub fn add_one(n: Int) -> Int {
// n + 1
n + 1
}
```
before this commit, comments would all be collapsed into one group
above the function as:
```
// Some comment block
// For which newlines are respected.
// Foo
// Another one
/// add_one documentation
pub fn add_one(n: Int) -> Int {
```
2022-12-13 18:52:23 -05:00
KtorZ
22a526bb13
Enforce unique top-level names for tests too.
...
This prevents the compiler from crashing later on. Test names should be unique and not clash with function names.
2022-12-13 18:52:23 -05:00
rvcas
4dfb454d8a
refactor: change match to if matches!
2022-12-13 10:34:34 -05:00
KtorZ
1637a0d30e
Add --match-tests to 'check' cmd
...
For running only tests matching a certain pattern. Useful when doing TDD.
2022-12-13 10:34:34 -05:00
rvcas
69db9696d6
feat: prefix tuples with hash again cause ambguity with call
2022-12-13 10:27:17 -05:00
rvcas
6dc4738b66
feat: update formatter for new changes
2022-12-12 19:22:11 -05:00
rvcas
a4f6388eca
feat: remove the need for # in front of tuples
2022-12-12 19:22:11 -05:00
rvcas
dfc57b347a
feat: switch generic type args to be delimited by chevrons
2022-12-12 19:22:11 -05:00
rvcas
a18aad7daf
refactor(project): use new Options instead of a spiderweb of bools
2022-12-10 19:14:58 -05:00
KtorZ
0eb3cf221b
Trigger and report on more events in the compilation pipeline.
2022-12-09 15:04:02 +01:00
KtorZ
749d8ecb10
Fix formatter to not prefix tests as 'pub'
2022-12-09 14:35:50 +01:00
KtorZ
d09d38d65b
Add a flag '--skip-tests' to the 'check' cmd.
...
So that tests can be skipped, and the old behavior recovered if necessary.
Tests execution is on by default however.
2022-12-09 14:14:15 +01:00
rvcas
4ad74bef1f
refactor: move prints to cli via EventListener trait
2022-12-08 19:25:28 -05:00
KtorZ
801ab3989e
feat: display test runner summary alongside test results.
...
Moar sexy.
2022-12-08 19:25:28 -05:00
KtorZ
4cae4a4467
pad left instead of right, so units/thousands are aligned.
2022-12-08 19:25:28 -05:00
rvcas
2ba712eef6
feat: start adding padding to test output
2022-12-08 19:25:28 -05:00
KtorZ
5770ea2456
Make test runner more sexy.
...
Using colors.
2022-12-08 19:25:28 -05:00
KtorZ
db25ff3817
refactor: run_tests to avoid repetition.
2022-12-08 19:25:28 -05:00
rvcas
e9d8e1d317
feat: print budget consumed by test
2022-12-08 19:25:24 -05:00
rvcas
141a9aef30
feat: impl Sub for ExBudget
2022-12-08 19:24:20 -05:00
rvcas
f250d3df84
feat: eval should take initial budget
2022-12-08 19:24:20 -05:00
KtorZ
4cdb5d8d02
Implement test runner.
...
easy.
2022-12-08 19:24:20 -05:00
rvcas
384c4daa4a
feat: add test_gen function
2022-12-08 19:24:20 -05:00
KtorZ
bc785673b2
Fix compilation errors for the newly introduce test & add type inference.
...
Tests are basically functions for which the return type should unify with bool. In principle, the type checker could also check that a test function has no arguments but, a test function with arguments wouldn't parse in the first place; feels a bit hacky but it works when considering the pipeline as a whole.
Note that the code generation is still to be done.
2022-12-08 19:24:20 -05:00
KtorZ
ea48747825
Extend parser for 'test' keyword.
2022-12-08 19:24:20 -05:00
rvcas
a65b4aa471
feat: add test def and test token
2022-12-08 19:24:20 -05:00
Kasey White
80a9b7b36a
feat: add map support and tuple deconstruction in let
2022-12-08 14:28:30 -05:00
Kasey White
26d2a95618
missing a couple forces
2022-12-08 14:28:30 -05:00
Kasey White
2f7131e9b8
feat: add tuples and streamline conversion of types to and from data
2022-12-07 08:40:23 -05:00
rvcas
45990f1f84
feat: unify tuples and stdlib updates
2022-12-06 22:23:40 -05:00
Kasey White
3f47a1f4b8
fix: constr issue
...
- also fixed constant parsing
- added new cbor flag to eval
Co-authored-by: rvcas <x@rvcas.dev>
2022-12-05 22:55:57 -05:00
rvcas
7875af7d35
feat: better errors for incorrect contructor making
2022-12-05 18:11:04 -05:00
rvcas
7e6dc978a1
feat: commit latest build assets for sample
2022-12-05 14:18:44 -05:00
rvcas
ed3d143477
feat: rename ir to air
2022-12-05 14:18:44 -05:00
rvcas
24d724e10e
chore: fix fmt
2022-12-05 14:18:44 -05:00
Kasey White
3e68204768
replace uplc with uplc_two and move structs over
2022-12-05 14:18:44 -05:00
Kasey White
22fbef2fbe
feat: finish up binops and fix constr creation
2022-12-05 14:18:44 -05:00
Kasey White
0fda535c50
feat: add module constants except for tuple
2022-12-05 14:18:44 -05:00
Kasey White
de9302a877
feat: finish list destructure in when matches
2022-12-05 14:18:44 -05:00
Kasey White
8cbdf97d22
finish uplc code gen for complex clauses with constr
2022-12-05 14:18:44 -05:00