Report errors for temporary statements rather than crashing.

From-SVN: r168128
This commit is contained in:
Ian Lance Taylor 2010-12-21 18:31:48 +00:00
parent c8f2cf85f7
commit 3868d6bfa6
1 changed files with 12 additions and 1 deletions

View File

@ -350,7 +350,18 @@ void
Temporary_statement::do_check_types(Gogo*)
{
if (this->type_ != NULL && this->init_ != NULL)
gcc_assert(Type::are_assignable(this->type_, this->init_->type(), NULL));
{
std::string reason;
if (!Type::are_assignable(this->type_, this->init_->type(), &reason))
{
if (reason.empty())
error_at(this->location(), "incompatible types in assignment");
else
error_at(this->location(), "incompatible types in assignment (%s)",
reason.c_str());
this->set_is_error();
}
}
}
// Return a tree.