diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 2010-12-22 06:17:55 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2010-12-22 06:17:55 +0000 |
commit | ecdacbb3050849a2548475f0f632c13df0f38352 (patch) | |
tree | ca822584da85caa0eb7b9e2aa257c6cc5593c43d | |
parent | 8dcfef8f2b2ad81873c1d2bb55182125e3190557 (diff) | |
download | gcc-ecdacbb3050849a2548475f0f632c13df0f38352.zip gcc-ecdacbb3050849a2548475f0f632c13df0f38352.tar.gz gcc-ecdacbb3050849a2548475f0f632c13df0f38352.tar.bz2 |
Don't crash on invalid type conversion.
From-SVN: r168161
-rw-r--r-- | gcc/go/gofrontend/expressions.cc | 12 |
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) |