A type alias and its underlying type are identical. Build a
single backend type for them. Previously we build two backend
types, which sometimes confuse the backend's type system.
Also don't include type aliases into the list of named type
declarations, since they are not named types.
Reviewed-on: https://go-review.googlesource.com/123362
From-SVN: r262572
-ea7ac7784791dca517b6681a02c39c11bf136755
+267686fd1dffbc03e610e9f17dadb4e72c75f18d
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.
case NAMED_OBJECT_TYPE:
{
Named_type* named_type = this->u_.type_value;
- if (!Gogo::is_erroneous_name(this->name_))
+ if (!Gogo::is_erroneous_name(this->name_) && !named_type->is_alias())
type_decls.push_back(named_type->get_backend(gogo));
// We need to produce a type descriptor for every named
if (this->btype_ != NULL)
return this->btype_;
+ if (this->named_type() != NULL && this->named_type()->is_alias()) {
+ this->btype_ = this->unalias()->get_backend(gogo);
+ return this->btype_;
+ }
+
if (this->forward_declaration_type() != NULL
|| this->named_type() != NULL)
return this->get_btype_without_hash(gogo);