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
merge done from the gofrontend repository.

View File

@ -348,7 +348,15 @@ Statement::make_variable_declaration(Named_object* var)
Type*
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.