From cd8bcf728628c429534b5e73c474b8cfc2d30cdb Mon Sep 17 00:00:00 2001 From: Richard Feldman Date: Tue, 18 Nov 2025 07:56:25 -0500 Subject: [PATCH] Fix regression in checking module type --- src/compile/compile_package.zig | 1 + test/snapshots/default_app_no_main.md | 17 +++++++++++-- test/snapshots/default_app_wrong_arity.md | 16 ++++++++++++ test/snapshots/fuzz_crash/fuzz_crash_001.md | 15 +++++++++++ test/snapshots/fuzz_crash/fuzz_crash_002.md | 15 +++++++++++ test/snapshots/fuzz_crash/fuzz_crash_003.md | 15 +++++++++++ test/snapshots/fuzz_crash/fuzz_crash_004.md | 15 +++++++++++ test/snapshots/fuzz_crash/fuzz_crash_005.md | 15 +++++++++++ test/snapshots/fuzz_crash/fuzz_crash_006.md | Bin 1677 -> 1949 bytes test/snapshots/fuzz_crash/fuzz_crash_007.md | 15 +++++++++++ test/snapshots/fuzz_crash/fuzz_crash_008.md | 15 +++++++++++ test/snapshots/fuzz_crash/fuzz_crash_009.md | 19 ++++++++++++++ test/snapshots/fuzz_crash/fuzz_crash_010.md | 18 +++++++++++++ test/snapshots/fuzz_crash/fuzz_crash_012.md | 15 +++++++++++ test/snapshots/fuzz_crash/fuzz_crash_013.md | 15 +++++++++++ test/snapshots/fuzz_crash/fuzz_crash_014.md | 16 ++++++++++++ test/snapshots/fuzz_crash/fuzz_crash_015.md | 17 +++++++++++++ test/snapshots/fuzz_crash/fuzz_crash_016.md | 15 +++++++++++ test/snapshots/fuzz_crash/fuzz_crash_017.md | 15 +++++++++++ test/snapshots/fuzz_crash/fuzz_crash_018.md | 15 +++++++++++ test/snapshots/fuzz_crash/fuzz_crash_021.md | 18 +++++++++++++ test/snapshots/fuzz_crash/fuzz_crash_031.md | 17 +++++++++++++ test/snapshots/fuzz_crash/fuzz_crash_038.md | 15 +++++++++++ test/snapshots/fuzz_crash/fuzz_crash_064.md | 17 +++++++++++-- test/snapshots/fuzz_crash/fuzz_crash_079.md | 17 +++++++++++-- test/snapshots/fuzz_crash/fuzz_hang_001.md | 15 +++++++++++ .../nominal/nominal_associated_vs_module.md | 24 ++++++++++++++++-- test/snapshots/some_folder/002.md | 18 +++++++++++++ test/snapshots/type_module/WrongName.md | 19 ++++++++++++-- test/snapshots/type_module/no_type_no_main.md | 17 +++++++++++-- 30 files changed, 449 insertions(+), 12 deletions(-) diff --git a/src/compile/compile_package.zig b/src/compile/compile_package.zig index 3698a66763..3bb196703a 100644 --- a/src/compile/compile_package.zig +++ b/src/compile/compile_package.zig @@ -789,6 +789,7 @@ pub const PackageEnv = struct { // Canonicalize var czer = try Can.init(env, parse_ast, module_envs_out); try czer.canonicalizeFile(); + try czer.validateForChecking(); czer.deinit(); // Type check using the SAME module_envs_map diff --git a/test/snapshots/default_app_no_main.md b/test/snapshots/default_app_no_main.md index e81c0c5766..15d7e4698e 100644 --- a/test/snapshots/default_app_no_main.md +++ b/test/snapshots/default_app_no_main.md @@ -8,9 +8,22 @@ type=file helper = |x| x + 1 ~~~ # EXPECTED -NIL +MISSING MAIN! FUNCTION - default_app_no_main.md:1:1:1:19 # PROBLEMS -NIL +**MISSING MAIN! FUNCTION** +Default app modules must have a `main!` function. + +No `main!` function was found. + +Add a main! function like: +`main! = |arg| { ... }` +**default_app_no_main.md:1:1:1:19:** +```roc +helper = |x| x + 1 +``` +^^^^^^^^^^^^^^^^^^ + + # TOKENS ~~~zig LowerIdent,OpAssign,OpBar,LowerIdent,OpBar,LowerIdent,OpPlus,Int, diff --git a/test/snapshots/default_app_wrong_arity.md b/test/snapshots/default_app_wrong_arity.md index 589e0ba169..39261fbf76 100644 --- a/test/snapshots/default_app_wrong_arity.md +++ b/test/snapshots/default_app_wrong_arity.md @@ -11,6 +11,7 @@ main! = |arg1, arg2| { ~~~ # EXPECTED UNUSED VARIABLE - default_app_wrong_arity.md:1:16:1:20 +MAIN! SHOULD TAKE 1 ARGUMENT - default_app_wrong_arity.md:1:1:3:2 # PROBLEMS **UNUSED VARIABLE** Variable `arg2` is not used anywhere in your code. @@ -24,6 +25,21 @@ main! = |arg1, arg2| { ^^^^ +**MAIN! SHOULD TAKE 1 ARGUMENT** +`main!` is defined but has the wrong number of arguments. `main!` should take 1 argument. + +Found `2` arguments. + +Change it to: +`main! = |arg| { ... }` +**default_app_wrong_arity.md:1:1:3:2:** +```roc +main! = |arg1, arg2| { + arg1 +} +``` + + # TOKENS ~~~zig LowerIdent,OpAssign,OpBar,LowerIdent,Comma,LowerIdent,OpBar,OpenCurly, diff --git a/test/snapshots/fuzz_crash/fuzz_crash_001.md b/test/snapshots/fuzz_crash/fuzz_crash_001.md index fdd98cc867..fd3d64f36a 100644 --- a/test/snapshots/fuzz_crash/fuzz_crash_001.md +++ b/test/snapshots/fuzz_crash/fuzz_crash_001.md @@ -11,6 +11,7 @@ mo|% PARSE ERROR - fuzz_crash_001.md:1:1:1:3 PARSE ERROR - fuzz_crash_001.md:1:3:1:4 PARSE ERROR - fuzz_crash_001.md:1:4:1:5 +MISSING MAIN! FUNCTION - fuzz_crash_001.md:1:1:1:5 # PROBLEMS **PARSE ERROR** A parsing error occurred: `statement_unexpected_token` @@ -45,6 +46,20 @@ mo|% ^ +**MISSING MAIN! FUNCTION** +Default app modules must have a `main!` function. + +No `main!` function was found. + +Add a main! function like: +`main! = |arg| { ... }` +**fuzz_crash_001.md:1:1:1:5:** +```roc +mo|% +``` +^^^^ + + # TOKENS ~~~zig LowerIdent,OpBar,OpPercent, diff --git a/test/snapshots/fuzz_crash/fuzz_crash_002.md b/test/snapshots/fuzz_crash/fuzz_crash_002.md index 554ca47c81..80cba11734 100644 --- a/test/snapshots/fuzz_crash/fuzz_crash_002.md +++ b/test/snapshots/fuzz_crash/fuzz_crash_002.md @@ -20,6 +20,7 @@ PARSE ERROR - fuzz_crash_002.md:1:21:1:23 PARSE ERROR - fuzz_crash_002.md:1:23:1:24 PARSE ERROR - fuzz_crash_002.md:1:24:1:25 MALFORMED TYPE - fuzz_crash_002.md:1:6:1:7 +MISSING MAIN! FUNCTION - fuzz_crash_002.md:1:1:1:25 # PROBLEMS **UNEXPECTED TOKEN IN TYPE ANNOTATION** The token **;** is not expected in a type annotation. @@ -152,6 +153,20 @@ modu:;::::::::::::::le[% ^ +**MISSING MAIN! FUNCTION** +Default app modules must have a `main!` function. + +No `main!` function was found. + +Add a main! function like: +`main! = |arg| { ... }` +**fuzz_crash_002.md:1:1:1:25:** +```roc +modu:;::::::::::::::le[% +``` +^^^^^^^^^^^^^^^^^^^^^^^^ + + # TOKENS ~~~zig LowerIdent,OpColon,MalformedUnknownToken,OpDoubleColon,OpDoubleColon,OpDoubleColon,OpDoubleColon,OpDoubleColon,OpDoubleColon,OpDoubleColon,LowerIdent,OpenSquare,OpPercent, diff --git a/test/snapshots/fuzz_crash/fuzz_crash_003.md b/test/snapshots/fuzz_crash/fuzz_crash_003.md index e95b750762..2772e7bdc4 100644 --- a/test/snapshots/fuzz_crash/fuzz_crash_003.md +++ b/test/snapshots/fuzz_crash/fuzz_crash_003.md @@ -13,6 +13,7 @@ PARSE ERROR - fuzz_crash_003.md:1:1:1:2 PARSE ERROR - fuzz_crash_003.md:1:3:1:4 PARSE ERROR - fuzz_crash_003.md:1:4:1:6 PARSE ERROR - fuzz_crash_003.md:1:6:1:6 +MISSING MAIN! FUNCTION - fuzz_crash_003.md:1:1:1:6 # PROBLEMS **UNCLOSED STRING** This string is missing a closing quote. @@ -68,6 +69,20 @@ This is an unexpected parsing error. Please check your syntax. ^ +**MISSING MAIN! FUNCTION** +Default app modules must have a `main!` function. + +No `main!` function was found. + +Add a main! function like: +`main! = |arg| { ... }` +**fuzz_crash_003.md:1:1:1:6:** +```roc += "te +``` +^^^^^ + + # TOKENS ~~~zig OpAssign,StringStart,StringPart,StringEnd, diff --git a/test/snapshots/fuzz_crash/fuzz_crash_004.md b/test/snapshots/fuzz_crash/fuzz_crash_004.md index 1f64de1992..abd75da4a8 100644 --- a/test/snapshots/fuzz_crash/fuzz_crash_004.md +++ b/test/snapshots/fuzz_crash/fuzz_crash_004.md @@ -9,6 +9,7 @@ F ~~~ # EXPECTED PARSE ERROR - fuzz_crash_004.md:2:1:2:1 +MISSING MAIN! FUNCTION - fuzz_crash_004.md:1:1:1:2 # PROBLEMS **PARSE ERROR** Type applications require parentheses around their type arguments. @@ -33,6 +34,20 @@ Other valid examples: ^ +**MISSING MAIN! FUNCTION** +Default app modules must have a `main!` function. + +No `main!` function was found. + +Add a main! function like: +`main! = |arg| { ... }` +**fuzz_crash_004.md:1:1:1:2:** +```roc +F +``` +^ + + # TOKENS ~~~zig UpperIdent, diff --git a/test/snapshots/fuzz_crash/fuzz_crash_005.md b/test/snapshots/fuzz_crash/fuzz_crash_005.md index a886ce9f67..a28900f0ec 100644 --- a/test/snapshots/fuzz_crash/fuzz_crash_005.md +++ b/test/snapshots/fuzz_crash/fuzz_crash_005.md @@ -9,6 +9,7 @@ modu ~~~ # EXPECTED PARSE ERROR - fuzz_crash_005.md:1:1:1:5 +MISSING MAIN! FUNCTION - fuzz_crash_005.md:1:1:1:5 # PROBLEMS **PARSE ERROR** A parsing error occurred: `statement_unexpected_token` @@ -21,6 +22,20 @@ modu ^^^^ +**MISSING MAIN! FUNCTION** +Default app modules must have a `main!` function. + +No `main!` function was found. + +Add a main! function like: +`main! = |arg| { ... }` +**fuzz_crash_005.md:1:1:1:5:** +```roc +modu +``` +^^^^ + + # TOKENS ~~~zig LowerIdent, diff --git a/test/snapshots/fuzz_crash/fuzz_crash_006.md b/test/snapshots/fuzz_crash/fuzz_crash_006.md index 1be6f8731786f44281ee4295c72822a4b37b0bc6..c6fcb9d67fa9fb4a27f7ec3830a980b73d5057e0 100644 GIT binary patch delta 260 zcmeC>oy)&Lf>F=cGdS4O&t1XS(bG>+!7bF!ImFZ7PeE59t+c8tKDj8dI3wP`z)UYU z#mdmiXtOZm1?GA!E$q6qw76VS(-KQ_N)!?c3KVklQ%ZAEixqN9i%S$T63bE*5)~41 z6EpJ^6M&}YC6{F8=jm~A`Q>AXDwHP{E2QO@=A{7T9aB<(8o~M?+AM+k6ml}NQ?0ll p#wpk;)Fc+A*CE#