Report effectful top-level exprs

This commit is contained in:
Agus Zubiaga 2024-10-16 19:29:08 -03:00
parent b62665e49e
commit f666dba67d
No known key found for this signature in database
5 changed files with 61 additions and 4 deletions

View file

@ -14824,6 +14824,44 @@ All branches in an `if` must have the same type!
"###
);
test_report!(
effect_in_top_level_value_def,
indoc!(
r#"
app [main!] { pf: platform "../../../../../examples/cli/effects-platform/main.roc" }
import pf.Effect
hello =
Effect.putLine! "calling hello!"
"hello"
main! = \{} ->
Effect.putLine! hello
"#
),
@r###"
EFFECT IN TOP-LEVEL in /code/proj/Main.roc
This top-level expression calls an effectful function:
6 Effect.putLine! "calling hello!"
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
However, only functions are allowed to be effectful. This limitation
ensures that importing a module never produces a side effect.
Tip: If you don't need any arguments, use an empty record:
askName! : {} => Str
askName! = \{} ->
Stdout.line! "What's your name?"
Stdin.line! {}
This will allow the caller to control when the effect runs.
"###
);
test_report!(
aliased_fx_fn,
indoc!(