diff --git a/tools/vbuild-examples.v b/tools/vbuild-examples.v index a8db8f075f..fc1c6881bc 100644 --- a/tools/vbuild-examples.v +++ b/tools/vbuild-examples.v @@ -3,12 +3,21 @@ module main import ( os testing -) +) fn main() { args := os.args args_string := args[1..].join(' ') - if testing.v_build_failing(args_string.all_before('build-examples'), 'examples') { + if testing.v_build_failing( + args_string.all_before('build-examples'), 'examples') + { + exit(1) + } + // Test -live + vexe := args[1] + ret := os.system('$vexe -live examples/hot_reload/message.v') + if ret != 0 { + println('-live message.v failed') exit(1) } } diff --git a/vlib/compiler/parser.v b/vlib/compiler/parser.v index f245cf658c..dc3f906947 100644 --- a/vlib/compiler/parser.v +++ b/vlib/compiler/parser.v @@ -1236,11 +1236,16 @@ fn (p mut Parser) statement(add_semi bool) string { } else { // panic and exit count as returns since they stop the function - if p.lit == 'panic' || p.lit == 'exit' { + is_panic := p.lit == 'panic' || p.lit == 'exit' + if is_panic { p.returns = true } // `a + 3`, `a(7)`, or just `a` q = p.bool_expression() + // Fix "control reaches end of non-void function" error + if is_panic && p.cur_fn.typ == 'bool' { + p.genln(';\nreturn false;') + } } } .key_goto { diff --git a/vlib/os/os.v b/vlib/os/os.v index 8edc0ef0f1..280923f054 100644 --- a/vlib/os/os.v +++ b/vlib/os/os.v @@ -858,11 +858,15 @@ pub fn is_dir(path string) bool { // is_link returns a boolean indicating whether the given path is a link. pub fn is_link(path string) bool { - statbuf := C.stat{} - if C.lstat(path.str, &statbuf) != 0 { - return false + $if windows { + return false // TODO + } $else { + statbuf := C.stat{} + if C.lstat(path.str, &statbuf) != 0 { + return false + } + return int(statbuf.st_mode) & S_IFMT == S_IFLNK } - return int(statbuf.st_mode) & S_IFMT == S_IFLNK } // chdir changes the current working directory to the new directory path.