compiler: propagate array length error marker farther

Fixes golang/go#53639

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/415936
This commit is contained in:
Ian Lance Taylor 2022-07-03 14:37:23 -07:00
parent ccc39d9e97
commit c70a48a8f8
3 changed files with 11 additions and 2 deletions

View file

@ -1,4 +1,4 @@
a209dca9ec918535977dcab99fd9bb60986ffacd
d295a0a2c96c0f7c3abd94fea3aa4e2303bf2af2
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.

View file

@ -8486,6 +8486,11 @@ Builtin_call_expression::do_flatten(Gogo* gogo, Named_object* function,
pa != this->args()->end();
++pa)
{
if ((*pa)->is_error_expression())
{
go_assert(saw_errors());
return Expression::make_error(loc);
}
if ((*pa)->is_nil_expression())
{
Expression* nil = Expression::make_nil(loc);
@ -13391,6 +13396,7 @@ Array_index_expression::do_check_types(Gogo*)
if (array_type == NULL)
{
go_assert(this->array_->type()->is_error());
this->set_is_error();
return;
}

View file

@ -7429,7 +7429,10 @@ bool
Array_type::do_verify()
{
if (this->element_type()->is_error_type())
return false;
{
this->set_is_error();
return false;
}
if (!this->verify_length())
{
this->length_ = Expression::make_error(this->length_->location());