From b0e628fb3f152bc8b7e12166fc1d1a8a4864c95a Mon Sep 17 00:00:00 2001 From: ian Date: Thu, 10 Feb 2011 19:21:20 +0000 Subject: [PATCH] Don't crash on field reference to erroneous struct. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@170020 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/go/gofrontend/expressions.cc | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/gcc/go/gofrontend/expressions.cc b/gcc/go/gofrontend/expressions.cc index 739032b3290..d17b173a6ab 100644 --- a/gcc/go/gofrontend/expressions.cc +++ b/gcc/go/gofrontend/expressions.cc @@ -9946,7 +9946,10 @@ Expression::make_map_index(Expression* map, Expression* index, Type* Field_reference_expression::do_type() { - Struct_type* struct_type = this->expr_->type()->struct_type(); + Type* type = this->expr_->type(); + if (type->is_error_type()) + return type; + Struct_type* struct_type = type->struct_type(); gcc_assert(struct_type != NULL); return struct_type->field(this->field_index_)->type(); } @@ -9956,7 +9959,10 @@ Field_reference_expression::do_type() void Field_reference_expression::do_check_types(Gogo*) { - Struct_type* struct_type = this->expr_->type()->struct_type(); + Type* type = this->expr_->type(); + if (type->is_error_type()) + return; + Struct_type* struct_type = type->struct_type(); gcc_assert(struct_type != NULL); gcc_assert(struct_type->field(this->field_index_) != NULL); } -- 2.11.0