From 4020a3ab8c3c2a8b6c331154366d8eb4b3e36ced Mon Sep 17 00:00:00 2001 From: d2verb Date: Mon, 15 Jul 2019 23:32:35 +0900 Subject: [PATCH] Prevent main function form returning value --- compiler/parser.v | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/compiler/parser.v b/compiler/parser.v index 94df3896f7..3452a6390c 100644 --- a/compiler/parser.v +++ b/compiler/parser.v @@ -3087,12 +3087,6 @@ fn (p mut Parser) return_st() { p.cgen.insert_before(p.cur_fn.defer) p.check(.key_return) - if p.cur_fn.name == 'main' { - p.gen('return 0') - p.returns = true - return - } - fn_returns := p.cur_fn.typ != 'void' if fn_returns { if p.tok == .rcbr { @@ -3118,11 +3112,16 @@ fn (p mut Parser) return_st() { } else { // Don't allow `return val` in functions that don't return anything - // if p.tok != .rcbr && p.tok != .hash { if false && p.tok == .name || p.tok == .integer { p.error('function `$p.cur_fn.name` does not return a value') } - p.gen('return') + + if p.cur_fn.name == 'main' { + p.gen('return 0') + } + else { + p.gen('return') + } } p.returns = true }