compiler: Don't crash on erroneous array return types.

Another issue with erroneous array types.  When an erroneous array
    type is in a function's signature, particularly the return type, we
    must guarantee that type is changed into an error type.  Otherwise,
    any operations that work on arrays and slices will crash when applied
    to the erroneous array return type.
    
    Fixes golang/go#12939.
    
    Reviewed-on: https://go-review.googlesource.com/16235

From-SVN: r232858
This commit is contained in:
Ian Lance Taylor 2016-01-27 00:00:58 +00:00
parent 7c97a53ac2
commit 82c1a217fe
2 changed files with 3 additions and 1 deletions

View File

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

View File

@ -419,6 +419,8 @@ Parse::array_type(bool may_use_ellipsis)
}
Type* element_type = this->type();
if (element_type->is_error_type())
return Type::make_error_type();
return Type::make_array_type(element_type, length);
}