aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/go/gofrontend/gogo.cc5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/go/gofrontend/gogo.cc b/gcc/go/gofrontend/gogo.cc
index 39072e0..b278711 100644
--- a/gcc/go/gofrontend/gogo.cc
+++ b/gcc/go/gofrontend/gogo.cc
@@ -3126,7 +3126,10 @@ Variable::type_from_tuple(Expression* expr, bool report_error) const
else if (expr->receive_expression() != NULL)
{
Expression* channel = expr->receive_expression()->channel();
- return channel->type()->channel_type()->element_type();
+ Type* channel_type = channel->type();
+ if (channel_type->is_error_type())
+ return Type::make_error_type();
+ return channel_type->channel_type()->element_type();
}
else
{