compiler: avoid compiler crash on invalid program

I encountered this crash while working on upgrading libgo to the 1.9
    release.  I no longer have the cause of the crash, but it doesn't much
    matter, as the policy for crash-on-invalid errors is to fix the crash
    but not bother to commit the invalid test case.
    
    Reviewed-on: https://go-review.googlesource.com/62750

From-SVN: r252748
This commit is contained in:
Ian Lance Taylor 2017-09-14 03:53:21 +00:00
parent 03ff36aa01
commit 0468f67f27
2 changed files with 6 additions and 2 deletions

View File

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

View File

@ -210,7 +210,11 @@ Expression::convert_type_to_interface(Type* lhs_type, Expression* rhs,
}
// This should have been checked already.
go_assert(lhs_interface_type->implements_interface(rhs_type, NULL));
if (!lhs_interface_type->implements_interface(rhs_type, NULL))
{
go_assert(saw_errors());
return Expression::make_error(location);
}
// An interface is a tuple. If LHS_TYPE is an empty interface type,
// then the first field is the type descriptor for RHS_TYPE.