Commit Graph

62 Commits

Author SHA1 Message Date
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
rvcas ae42dc964a
fix: allow var and discard with data on right hand side 2023-02-02 01:16:53 -05:00
Kasey White 1843b7e73b clippy fix and remove some prints 2023-02-01 23:49:33 -05:00
Kasey White 9dc2bac2c3 fix:minor optimization fixes
Unique only comparison for equals led to strange results
Fixed by interning in a different spot
2023-02-01 23:49:33 -05:00
Kasey White fdf89b7326 implement optimizations
-Force usage on builtins
-Inline vars used once
-Lambdas that use a var as an arg
-Lambdas that use a const as an arg
2023-02-01 23:49:33 -05:00
rvcas a365649360 chore: clippy autofix 2023-02-01 18:53:11 -05:00
rvcas c8efe60843 feat: use Rc for more things, fib_iter runs almost 3 seconds faster now 2023-02-01 18:53:11 -05:00
KtorZ 22a1c1dfb4
Use IndexMap throughout
In an ideal world, I should have handlded that directly at the conflicting commit in the rebase, but this would have bubbled up through all commits... which I wasn't really quite keen on going through. So here's an extra ugly commit that comes and 'fix the rebase'.
2023-01-31 09:51:00 +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
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 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
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 52724ea0e0 feat: handle anon zero arg functions.
Test 045
2023-01-19 01:34:27 -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
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 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
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 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
Kasey White cce76bbd63 fix issue with constructor clauses and clause props 2022-12-28 18:00:11 -05:00
Kasey White 722117bfc4 one minor scope fix 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