Commit graph

6636 commits

Author SHA1 Message Date
snobee
35a0671c52
parse block without indentation after indented else 2024-09-06 14:35:47 -07:00
Elias Mulhall
85aad0d000
Move comment explaining use of line_info field into can::Env struct definition 2024-09-05 20:13:54 -04:00
Elias Mulhall
25af18daaa
Cleanup unused function param 2024-09-05 20:13:54 -04:00
Elias Mulhall
19931ecd43
Support passing values into dbg with the pipe operator
In order to desugar `dbg` in a pipeline we need to allow a bare `dbg`
node in desugaring and only report it as an error if the bare node
survives to the next step of canonicalization. This means we move the
error code out of `desugar_expr` and into `canonicalize_expr`. This is
much simpler to do now that these functions use the same `env` struct,
since previously we would have had to pass down extra args to
`canonicalize_expr`. Sharing the `env` struct means that we also don't
have to worry about calculating `line_info` more than once.
2024-09-05 20:13:54 -04:00
Elias Mulhall
b515bfa77e
Use a shared env for desugaring and the rest of canonicalization
This refactor simplifies the desugar pass by reducing the number of
arguments threaded through each recursive function call.

- Add the module src string to `Env`.
- Add `line_info` to `Env` as a lazy-evaled function.
- Refactor desugar functions to take the `can::Env` struct in place of a
  number of params. This is mostly a find-and-replace, but in a few
  places `Vec::from_iter_in` was changed to `Vec::with_capacity_in`
  followed by a `for` loop in order to avoid lifetime issues.
- Remove unnecessary linter annotations for `clippy::too_many_arguments`
2024-09-05 20:13:48 -04:00
snobee
a7afac7ac7
Add boolean flag to Expr::If for indented else statement 2024-09-05 16:28:44 -07:00
Elias Mulhall
49a3f2d68e
Extract helper function to get the IdentIds related to a symbol's module 2024-09-03 14:09:16 -04:00
Elias Mulhall
f356f6f7a0
Do not display generated symbol names in error messages
When an error message reports on a symbol that was generated during
canonicalization, use text like "This value" instead of "This `123`
value". Generated symbols use the identifier index as the symbol name,
since valid Roc variables cannot begin with a number so there's no
chance of collision. We don't want to display generated symbols to the
user, so when building the error message we check if the symbol's name
starts with a digit.
2024-09-03 14:00:46 -04:00
Elias Mulhall
82d0566041
Use module scope instead of var store to generate idents in dbg desugar
Fix a bug in `dbg` expression desugaring by using the module scope to
generate unique identifiers instead of the variable store.

In the initial implementation of `dbg` expressions we used the
`VarStore` to generate unique identifiers for new variables created
during desugaring. We should have instead used the current module's
`Scope`, which handles identifiers within the module. Each scope has its
own incrementing variable count which is independent of the shared
variable store. The scope is used to generate new identifiers at other
points in canonicalization, such as when assigning a global identifier
to closures and `expect`s. It's possible that the identifier generated
for `dbg` could conflict with an identifier generated by the scope,
resulting in a confusing error.
2024-09-03 14:00:39 -04:00
Agus Zubiaga
2469a3aa2d
Merge pull request #7050 from roc-lang/arg-patterns-as 2024-09-02 14:02:17 -03:00
Agus Zubiaga
458878dbea
Fix record as pattern mono test 2024-09-02 12:29:14 -03:00
Agus Zubiaga
e2bd31a549
Add mono tests for opaque pattern with as 2024-09-02 12:23:25 -03:00
Agus Zubiaga
ada24e4fd9
Add mono tests for record pattern with as 2024-09-02 12:17:53 -03:00
Agus Zubiaga
4e19753189
fmt: Use format_with_options Parens for as pattern arguments 2024-09-02 12:02:01 -03:00
Agus Zubiaga
2486ce0e48
fmt: Add parens around as patterns in arguments 2024-09-02 11:54:34 -03:00
Anton-4
02cf61f985
Merge pull request #7038 from mulias/expr-dbg
Support `dbg` in expressions
2024-09-02 13:30:32 +02:00
Agus Zubiaga
9ce5b8b50b
Fix zero-arity home value def var 2024-09-01 19:11:56 -03:00
Agus Zubiaga
ed931a458e
Use fresh vars for home params destructures 2024-09-01 19:11:09 -03:00
Sam Mohr
a1c9273721
Merge pull request #7041 from roc-lang/dependabot/npm_and_yarn/crates/compiler/checkmate/www/webpack-5.94.0
Bump webpack from 5.88.1 to 5.94.0 in /crates/compiler/checkmate/www
2024-08-31 17:00:42 -07:00
Anton-4
e7a44430fd
update to basic cli 15 2024-08-31 14:30:07 +02:00
dependabot[bot]
8c5f01b405
Bump webpack from 5.88.1 to 5.94.0 in /crates/compiler/checkmate/www
Bumps [webpack](https://github.com/webpack/webpack) from 5.88.1 to 5.94.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.88.1...v5.94.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-30 16:13:58 +00:00
Anton-4
3c679f6338
Merge branch 'main' into lower-module-params 2024-08-30 16:29:46 +02:00
Sam Mohr
e310ba8494
Merge branch 'main' into builtin-task 2024-08-29 18:58:04 -07:00
Elias Mulhall
56c5b790a7 Refactor dbg expression parsing to work more like function application
Instead of parsing dbg with an expression block, parse the dbg keyword
with no additional arguments. This way the parser treats dbg just like a
variable in function application. We desugar by pattern matching on
`Apply(Dbg, args, called_via)` nodes. This changes the output of syntax
tests since the initial AST is different, but does not change the output
of can or mono.

Add two new errors for dbg in expression position with either no args or
too many args. This is similar to the error behavior of `crash`.

Continue to parse dbg statements with an expression block, as before.
2024-08-29 15:36:48 -04:00
Elias Mulhall
14fabdff07 Double the amount of indentation allowed in parser trace debugging
Increase from 36 levels of indentation to 80. This is excessive, but
it's confusing to have a parser test crash just because
parse_debug_trace is enabled.
2024-08-29 07:25:42 -04:00
Anton-4
b491a5c3e6
add roc check tip
Signed-off-by: Anton-4 <17049058+Anton-4@users.noreply.github.com>
2024-08-28 18:15:24 -04:00
jamin-eisenberg
7429f8a970
Initial attempt (failing tests?) 2024-08-28 18:15:23 -04:00
Elias Mulhall
fefb4a3115 Don't use debug formatting to convert Variable into string 2024-08-28 12:51:02 -04:00
Anton-4
7938e4bdc8
basic-cli 0.15, test fixes 2024-08-28 18:39:15 +02:00
Elias Mulhall
7a07f13f31 Test dbg expr desugaring 2024-08-28 12:16:22 -04:00
Elias Mulhall
4cf214869e Extract helper functions for desugaring dbg statements and expressions
This reduces code duplication because `desugar_dbg_expr` calls
`desugar_dbg_stmt`. We will also reuse these functions for desugaring
dbg in pipelines.
2024-08-28 11:53:44 -04:00
Elias Mulhall
2242e9b2c3 Remove error handling for dbg in expression position 2024-08-28 11:53:44 -04:00
Elias Mulhall
9dae102603 Allow dbg expression inside string interpolation 2024-08-28 11:53:44 -04:00
Elias Mulhall
220bb55048 Desugar dbg expression into a dbg statement
Use a temporary variable to print and then return the body of the dbg
expression.
2024-08-28 11:53:44 -04:00
Elias Mulhall
335265e15c Parse dbg in expression position
Add dbg parsing logic everywhere we parse normal expressions. Add
special case to statement parsing to handle a series of statements
ending in a `dbg` in expression position.

Rename existing `dbg_help` function to `dbg_stmt_help`, similarly rename
syntax snapshot test files to specify which ones are for dbg statements.
2024-08-28 11:53:44 -04:00
Elias Mulhall
43d932df3b Update parser AST to support dbg as both a statment and expression
Make `Expr::Dbg` node specific to dbg expressions, add `Expr::DbgStmt`
for dbg statements. Debug expressions don't have a continuation branch.
Support formatting both kinds of `Dbg` nodes.
2024-08-28 11:53:44 -04:00
Elias Mulhall
a16f757164 Pass var_store into desugar_expr so that desugaring may generate fresh vars 2024-08-28 11:53:44 -04:00
Elias Mulhall
dc5c8aeaf9 cargo fmt --all 2024-08-28 11:53:44 -04:00
Elias Mulhall
3120a1ea46 Replace panic! with internal_error! 2024-08-28 11:53:44 -04:00
Agus Zubiaga
287a8fa2e7
Merge branch 'main' into lower-module-params 2024-08-28 08:50:40 -03:00
Agus Zubiaga
b2bcf8f988
Restore ErrorType Debug impl 2024-08-27 19:43:33 -03:00
Agus Zubiaga
ad27129fd7
Rename todo with comment 2024-08-27 19:19:30 -03:00
Agus Zubiaga
e4352b913f
Do not remove params from errors in check mode 2024-08-27 19:11:50 -03:00
Agus Zubiaga
d033057a58
Hide params from annotation type mismatches 2024-08-27 19:06:31 -03:00
Agus Zubiaga
a4f4d00ff0
Add unexpected fn params test case 2024-08-27 17:24:13 -03:00
Agus Zubiaga
121a087328
Handle TOO MANY ARGS error for value defs 2024-08-27 17:04:39 -03:00
Agus Zubiaga
658c6963c5
Remove param arguments from TOO MANY ARGS error 2024-08-27 16:08:26 -03:00
Anton-4
ed01e521f0
add roc check tip
Signed-off-by: Anton-4 <17049058+Anton-4@users.noreply.github.com>
2024-08-27 20:29:12 +02:00
Agus Zubiaga
8b9cb22f49
Add custom CalledVia for naked param vars 2024-08-27 13:39:20 -03:00
Agus Zubiaga
49a6b1bfba
Capture whole params record when needed 2024-08-27 11:20:59 -03:00