From 49d7a151b76ef42098f36007ac6fbb3bb6499b7e Mon Sep 17 00:00:00 2001 From: Emily Hudson Date: Mon, 15 Jun 2020 21:30:16 +0100 Subject: [PATCH] cgen: edge case for multi-returns --- vlib/v/gen/cgen.v | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/vlib/v/gen/cgen.v b/vlib/v/gen/cgen.v index d12c3b6acf..f6755f21f5 100644 --- a/vlib/v/gen/cgen.v +++ b/vlib/v/gen/cgen.v @@ -2355,6 +2355,14 @@ fn (mut g Gen) return_statement(node ast.Return) { g.write('return ') styp = g.typ(g.fn_decl.return_type) } + // Edge case handling for 2 multi returns of the same type + if node.exprs.len == 1 && g.expr_is_multi_return_call(node.exprs[0]) { + g.go_before_stmt(0) + g.write('return ') + g.expr(node.exprs[0]) + g.writeln(';') + return + } // Use this to keep the tmp assignments in order mut multi_unpack := '' g.write('($styp){')