compiler: Don't make void-typed temporaries.

Fixes golang/go#11568.
    
    Reviewed-on: https://go-review.googlesource.com/12653

From-SVN: r226788
This commit is contained in:
Ian Lance Taylor 2015-08-11 21:37:26 +00:00
parent d2be285bf5
commit 2abb463fab
2 changed files with 10 additions and 2 deletions

View File

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

View File

@ -348,7 +348,15 @@ Statement::make_variable_declaration(Named_object* var)
Type* Type*
Temporary_statement::type() const Temporary_statement::type() const
{ {
return this->type_ != NULL ? this->type_ : this->init_->type(); Type* type = this->type_ != NULL ? this->type_ : this->init_->type();
// Temporary variables cannot have a void type.
if (type->is_void_type())
{
go_assert(saw_errors());
return Type::make_error_type();
}
return type;
} }
// Traversal. // Traversal.