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;')