Commit Graph

36 Commits

Author SHA1 Message Date
Kasey White 2d77ec1a6a add merge function 2023-03-27 20:00:32 -04:00
Kasey White 32d34d5fd3 create struct Air Env
refactor out some to_strings
2023-03-27 20:00:32 -04:00
Kasey White 74a7a2f214 commit air changes that expose scope as a mutable pointer 2023-03-21 00:50:13 -04:00
Kasey White c85240cbed Fix exception when doing expect boolean = ..
Add new Air Assert Bool
Add acceptance test 76
2023-03-08 22:31:30 -05:00
Kasey White 665a8dec67 feat: add support for unconstr_data
-Builitins IR now acts like Record IR in terms of argument consumption
-UnConstrData returns as Pair(Data,Data) to conform with how pairs are treated behind the scenes.
2023-02-26 00:13:38 -05:00
KtorZ 6525f21712
Remove 'Todo' from the AST & AIR
Todo is fundamentally just a trace and an error. The only reason we kept it as a separate element in the AST is for the formatter to work out whether it should format something back to a todo or something else.

  However, this introduces redundancy in the code internally and makes the AIR more complicated than it needs to be. Both todo and errors can actually be represented as trace + errors, and we only need to record their preferred shape when parsing so that we can format them back to what's expected.
2023-02-15 21:57:08 +01:00
KtorZ 7b676643bd
Lift 'error' up one level in the parser and remove its label.
We now parse errors as a combination of a trace plus and error term. This is a baby step in order to simplify the code generation down the line and the internal representation of todo / errors.
2023-02-15 21:09:03 +01:00
KtorZ 7abd76b6ad
Allow to trace expressions (and not only string literals)
This however enforces that the argument unifies to a `String`. So this
  is more flexible than the previous form, but does fundamentally the
  same thing.

  Fixes #378.
2023-02-15 21:07:56 +01:00
Kasey White 86ca466807 feat: some code gen improvements
* fix assert on pattern Var
* fix tuple index unwrapping closes #334
* allow wrapping when casting with let
* allow wrapping when casting via function call
2023-02-04 02:33:10 -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 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 1af1b6d898 finalize aiken ir with typing 2023-01-27 05:02:19 -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
Kasey White d7e4aef4c5 feat: Add boolean conditions to when statements 2023-01-18 15:29:51 -05: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 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
Kasey White ea135e6f42 refactor term::apply to apply_wrap. Fixed a list eq binop 2023-01-08 19:42:49 -05: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 e495eefb34 feat implement tuple index 2022-12-31 00:09:02 -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 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 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
rvcas 42204d2d71 chore: make folder names match crate name 2022-12-21 18:11:07 -05:00