Commit Graph

130 Commits

Author SHA1 Message Date
KtorZ d27ea98a8f
Rework tracing arguments to --keep-traces & --trace-level
This allows for a more fine-grained control over how the traces are showed. Now users can instrument the compiler to preserve only their user-defined traces, or the only the compiler, or all, or none. We also want to add another trace level on top of that: 'compact' to only show line numbers; which will work for both user-defined and/or compiler-generated traces.
2024-01-19 14:30:15 +01:00
rvcas 07122aaa88
feat: allow importing off validators in validators/tests/* 2023-12-11 18:27:08 -05:00
rvcas 1f411cde0e
chore: needless dbg 2023-11-28 20:59:23 -05:00
rvcas 6ce30bd949
fix: allow spread operator on positional constructors closes #677 2023-11-27 23:11:17 -05:00
rvcas 2980e8e21d
fix: use a distinct warning for discarded let assignments to avoid confusion closes #763 2023-11-27 21:23:10 -05:00
microproofs 78b0789cbc chore: unit test for pub in validator module warnings closes #681 2023-11-22 18:02:21 -05:00
rvcas abd18656e3 fix: unable to have newline after expect bool shortcut 2023-11-20 11:44:16 -05:00
rvcas 7680d33663 fix: panic in formatter when substracting u8 0 - 1 2023-11-20 11:44:16 -05:00
rvcas 6869f73033 fix: sequence formatting when not top level 2023-11-20 11:44:16 -05:00
rvcas d53d2665b2 test(bls): g1 and g2 formatting 2023-11-15 15:55:56 -05:00
rvcas 55f89a7ff4
fix: incorrect 'unused::constructor'
`ExprTyper` was not incrementing the usage of a constructor
when infering `RecordAccess`.

closes #554
2023-10-12 17:44:57 -04:00
rvcas 135dbd8335 feat: handle pipe fn infer TODOs
This improves error messages for `a |> b(x)`.

We need to do a special check when looping over the args
and unifying. This information is within a function that does not belong
to pipe typer so I used a closure to forward along a way to add
metadata to the error when the first argument in the loop has a
unification error. Simply adding the metadata at the pipe typer
level is not good enough because then we may annotate regular
unification errors from the args.
2023-10-03 01:17:15 -04:00
rvcas 9a4f181a0f
chore: clippy fix 2023-09-13 17:19:31 -04:00
KtorZ 8ba5946c32
Preserve escape sequence after formatting
Bumped into this randomly. We do correctly parse escape sequence, but
  the format would simply but the unescaped string back on save. Now it
  properly re-escapes strings before flushing them back. I also removed
  the escape sequence for 'backspace' and 'new page' form feed as I
  don't see any use case for those in an Aiken program really...
2023-09-08 12:12:15 +02:00
rvcas 0ff64e3bac test: check and format tests for logical op chain 2023-08-15 09:58:35 -04:00
rvcas ab3a418b9c feat(parser): add support for and/or chaining 2023-08-15 09:58:35 -04:00
rvcas 60ac8ab591
fix(exhaustiveness): adjust helper method to get contructors properly 2023-08-03 16:14:42 -04:00
KtorZ 675b737898
Check exhaustiveness behavior on pattern guards. 2023-08-02 10:40:59 +02:00
KtorZ 4f7f39292d
Fix subtle bug in pattern rendering
When rendering missing or redundant patterns, linked-list would
  wrongly suggest the last nil constructor as a pattern on non-empty
  list.

  For example, before this commit, the exhaustivness checker would yield:

  ```
  [(_, True), []]
  ```

  as a suggestion, for being the result of being a list pattern with a
  single argument being `(_, True) :: Nil`. Blindly following the
  compiler suggestion here would cause a type unification error (since
  `[]` doesn't unify with a 2-tuple).

  Indeed, we mustn't render the Nil constructor when rendering non-empty
  lists! So the correct suggestion should be:

  ```
  [(_, True)]
  ```
2023-08-02 10:31:35 +02:00
KtorZ 00b255e960
Remove now-dead code. 2023-08-02 09:22:21 +02:00
rvcas f3cab94ae1 test(check): a bunch of tests for the new exhaustiveness stuff 2023-08-01 21:13:50 -04:00
rvcas a6b230aad4 fix: exhaustiveness on types from other modules 2023-08-01 21:13:50 -04:00
rvcas 1b8e94fe32
feat: expect boolean sugar 2023-07-15 20:50:02 -04:00
rvcas 69fdee9f7e fix: trace expr 2023-07-15 20:08:16 -04:00
rvcas 2edfd33594 fix: some attempted adjustments 2023-07-15 20:08:16 -04:00
rvcas 252b760ca1
test: remove prefix on all format tests 2023-07-14 16:56:27 -04:00
rvcas 03e7d6e944 feat: update syntax for failing test to be more consistent 2023-07-12 09:16:37 -04:00
rvcas 1ab1ff9a1f feat: rename error to fail 2023-07-12 09:16:37 -04:00
Cainã Costa b80c41b4b7 chore: cargo fmt 2023-07-11 13:06:25 -04:00
Cainã Costa 14652abd4f fix: port last missing test
This test has been added after the first implementation, so we move it
to the new format :)
2023-07-11 13:06:25 -04:00
Cainã Costa c27ef8ad93 chore: refactor formatting tests
This changes the tests from normal assertions into snapshot tests, as
well as standardizing test names.
2023-07-11 13:06:25 -04:00
KtorZ 126f2ab004 Implement new formatter for 'int'.
This is used for constants and patterns, which can carry negative
   values.
2023-07-06 16:10:46 -04:00
rvcas 5e8edcb340
test(parser): finish moving tests to their correct modules 2023-07-04 17:48:48 -04:00
rvcas 47567c5e6f
test(parser): some adjustments after rebase with @ktorz fix 2023-07-04 17:19:30 -04:00
rvcas b25db429be
test(parser): anon binop and ambiguous sequence 2023-07-04 17:19:30 -04:00
rvcas 8a6c81493c
test(parser): record create 2023-07-04 17:19:30 -04:00
rvcas a75bcff5c8
test(parser): type alias, anon fn, record update and more 2023-07-04 17:19:30 -04:00
rvcas bd8c13c372
test(parser): move over the validator tests and some misc tests to parser 2023-07-04 17:19:29 -04:00
rvcas 6b05d6a91e
test(parser): rename definitions to definition and more tests 2023-07-04 17:19:29 -04:00
rvcas 715752718d
test: assert_module 2023-07-04 17:19:29 -04:00
rvcas da0b969865
test: adjust snapshots 2023-07-04 17:19:29 -04:00
Cainã Costa 291dedf4e8
chore: refactor all parse tests to use assert_parse! 2023-07-04 17:19:28 -04:00
rvcas f878ef7cef
feat: move some token processing to the lexer 2023-07-04 17:19:28 -04:00
Cainã Costa 63cdb8aa09
chore: add more details on snapshot tests
We added a macro to add more information about the code that is being
tested, so we can add lots and lots of small snapshot tests.
2023-07-04 17:19:28 -04:00
Cainã Costa eeaa1a05d2
feat: add first code snapshot test with insta 2023-07-04 17:19:28 -04:00
KtorZ 5a6cc855e6 Use byte count for token span in the lexer.
Somehow, miette doesn't play well with spans when using chars indices.
  So we have to count the number of bytes in strings / chars, so that
  spans align accordingly.
2023-07-04 16:51:59 -04:00
KtorZ 4252ee6373
Implement formatter for anon binop. 2023-06-17 08:44:59 +02:00
KtorZ 91f03abb7b
Support all binary operator in the anonymous binop parser. 2023-06-17 08:44:45 +02:00
KtorZ d0b4c1c3b5
Add remaining boolean comparison operator to anon binop parser.
Nothing to see here as they all have the same signature. Implementing
  arithmetic bin-operators and boolean logic operators will require some
  more logic.
2023-06-17 07:57:37 +02:00
KtorZ ec94230294
Extend parser to accept anonymous binop as expressions.
This is simply a syntactic sugar which desugarize to a function call with two arguments mapped to the specified binary operator.
  Only works for '>' at this stage as a PoC, extending to all binop in the next commit.
2023-06-17 07:36:11 +02:00