Commit Graph

692 Commits

Author SHA1 Message Date
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
Kasey White
f48039fd4f Add ability to generate ir with complex constructor cases 2022-12-05 14:18:44 -05:00
Kasey White
64cbae938d Add clause guard to IR and use it for complex clauses 2022-12-05 14:18:44 -05:00
Kasey White
e1d6ffa92a add more binops 2022-12-05 14:18:44 -05:00
Kasey White
044d609a24 feat: nested constr access and module funcs now work 2022-12-05 14:18:44 -05:00
Kasey White
3d3beef7d4 feat: uplc code gen for functions and minor recursion fix 2022-12-05 14:18:44 -05:00
Kasey White
8f984ad131 fix up function definitions in the IR 2022-12-05 14:18:44 -05:00