Commit 1e2b400b by Ian Lance Taylor

compiler: generate type descriptor for pointer to alias defined in another package

    
    When a type descriptor is needed (for e.g. interface conversion),
    if the type is a pointer to a named type defined in another
    package, we don't generate the definition of the type descriptor
    because it is generated in the package where the type is defined.
    However, if the named type is an alias to an unnamed type, its
    descriptor is not generated in the other package, and we need to
    generate it.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/210787

From-SVN: r279207
parent cff87282
6f2bf15e15bf7516c393966577d72b79cba7f980
85641a0f26061f7c98db42a2adb3250c07ce504e
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.
......@@ -1453,13 +1453,13 @@ Type::type_descriptor_defined_elsewhere(Named_type* nt,
else
{
if (this->points_to() != NULL
&& this->points_to()->named_type() != NULL
&& this->points_to()->named_type()->named_object()->package() != NULL)
&& this->points_to()->unalias()->named_type() != NULL
&& this->points_to()->unalias()->named_type()->named_object()->package() != NULL)
{
// This is an unnamed pointer to a named type defined in a
// different package. The descriptor should be defined in
// that package.
*package = this->points_to()->named_type()->named_object()->package();
*package = this->points_to()->unalias()->named_type()->named_object()->package();
return true;
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment