aboutsummaryrefslogtreecommitdiff
path: root/gcc/go/gofrontend/gogo.cc
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2010-12-15 23:50:02 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2010-12-15 23:50:02 +0000
commite495c1360ddea801c27f438654fa5e18d6dfc8d4 (patch)
tree30e5014cf002eb615d3042659dc7661a7bc6fd7f /gcc/go/gofrontend/gogo.cc
parent81ef977e9e082ca9f23d64eaca9aa5d26a0a408f (diff)
downloadgcc-e495c1360ddea801c27f438654fa5e18d6dfc8d4.zip
gcc-e495c1360ddea801c27f438654fa5e18d6dfc8d4.tar.gz
gcc-e495c1360ddea801c27f438654fa5e18d6dfc8d4.tar.bz2
Don't crash on tuple initialization from erroneous channel.
From-SVN: r167882
Diffstat (limited to 'gcc/go/gofrontend/gogo.cc')
-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
{