diff options
Diffstat (limited to 'gcc/go')
-rw-r--r-- | gcc/go/gofrontend/parse.cc | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/go/gofrontend/parse.cc b/gcc/go/gofrontend/parse.cc index 8e3aa3b..3b5ede5 100644 --- a/gcc/go/gofrontend/parse.cc +++ b/gcc/go/gofrontend/parse.cc @@ -5031,6 +5031,16 @@ Parse::send_or_recv_stmt(bool* is_send, Expression** channel, Expression** val, e = Expression::make_receive(*channel, (*channel)->location()); } + if (!saw_comma && this->peek_token()->is_op(OPERATOR_COMMA)) + { + this->advance_token(); + // case v, e = <-c: + if (!e->is_sink_expression()) + *val = e; + e = this->expression(PRECEDENCE_NORMAL, true, true, NULL, NULL); + saw_comma = true; + } + if (this->peek_token()->is_op(OPERATOR_EQ)) { if (!this->advance_token()->is_op(OPERATOR_CHANOP)) |