aboutsummaryrefslogtreecommitdiff
path: root/gcc/go
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2010-12-22 06:17:55 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2010-12-22 06:17:55 +0000
commitecdacbb3050849a2548475f0f632c13df0f38352 (patch)
treeca822584da85caa0eb7b9e2aa257c6cc5593c43d /gcc/go
parent8dcfef8f2b2ad81873c1d2bb55182125e3190557 (diff)
downloadgcc-ecdacbb3050849a2548475f0f632c13df0f38352.zip
gcc-ecdacbb3050849a2548475f0f632c13df0f38352.tar.gz
gcc-ecdacbb3050849a2548475f0f632c13df0f38352.tar.bz2
Don't crash on invalid type conversion.
From-SVN: r168161
Diffstat (limited to 'gcc/go')
-rw-r--r--gcc/go/gofrontend/expressions.cc12
1 files changed, 12 insertions, 0 deletions
diff --git a/gcc/go/gofrontend/expressions.cc b/gcc/go/gofrontend/expressions.cc
index 525ede2..114712b8 100644
--- a/gcc/go/gofrontend/expressions.cc
+++ b/gcc/go/gofrontend/expressions.cc
@@ -3242,6 +3242,18 @@ Type_conversion_expression::do_check_types(Gogo*)
Type* expr_type = this->expr_->type();
std::string reason;
+ if (type->is_error_type()
+ || type->is_undefined()
+ || expr_type->is_error_type()
+ || expr_type->is_undefined())
+ {
+ // Make sure we emit an error for an undefined type.
+ type->base();
+ expr_type->base();
+ this->set_is_error();
+ return;
+ }
+
if (this->may_convert_function_types_
&& type->function_type() != NULL
&& expr_type->function_type() != NULL)