From a4101f4ed8a52dc48c4bc20600331382fd3172cb Mon Sep 17 00:00:00 2001 From: Delyan Angelov Date: Wed, 12 Feb 2025 00:49:52 +0200 Subject: [PATCH] checker: allow for `module no_main` programs, that can redefine their own main function, or not define any of their own as well --- vlib/v/checker/checker.v | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/vlib/v/checker/checker.v b/vlib/v/checker/checker.v index db5f2a305a..cce4e04cd8 100644 --- a/vlib/v/checker/checker.v +++ b/vlib/v/checker/checker.v @@ -324,6 +324,7 @@ pub fn (mut c Checker) check_files(ast_files []&ast.File) { // println('check_files') // c.files = ast_files mut has_main_mod_file := false + mut has_no_main_mod_file := false mut has_main_fn := false unsafe { mut files_from_main_module := []&ast.File{} @@ -331,6 +332,9 @@ pub fn (mut c Checker) check_files(ast_files []&ast.File) { mut file := ast_files[i] c.timers.start('checker_check ${file.path}') c.check(mut file) + if file.mod.name == 'no_main' { + has_no_main_mod_file = true + } if file.mod.name == 'main' { files_from_main_module << file has_main_mod_file = true @@ -446,6 +450,9 @@ pub fn (mut c Checker) check_files(ast_files []&ast.File) { // This is useful for compiling linux kernel modules for example. return } + if has_no_main_mod_file { + return + } if !has_main_mod_file { c.error('project must include a `main` module or be a shared library (compile with `v -shared`)', token.Pos{})