From 1d706674f2646f859dc970493931e3b72aa74de2 Mon Sep 17 00:00:00 2001 From: spaceface777 Date: Fri, 6 Nov 2020 17:46:41 +0100 Subject: [PATCH] cgen: don't generate a default expr if a function ends with `return` (#6766) --- vlib/v/gen/fn.v | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vlib/v/gen/fn.v b/vlib/v/gen/fn.v index 317df8e33e..86e39f8b1a 100644 --- a/vlib/v/gen/fn.v +++ b/vlib/v/gen/fn.v @@ -158,8 +158,8 @@ fn (mut g Gen) gen_fn_decl(it ast.FnDecl, skip bool) { // TODO: remove this, when g.write_autofree_stmts_when_needed works properly g.autofree_scope_vars(it.body_pos.pos) } - if it.return_type != table.void_type { - mut default_expr := g.type_default(it.return_type) + if it.return_type != table.void_type && it.stmts.len > 0 && it.stmts.last() !is ast.Return { + default_expr := g.type_default(it.return_type) // TODO: perf? if default_expr == '{0}' { g.writeln('\treturn ($type_name)$default_expr;')