DescriptionBlink GC plugin: improve handling of type dependent bases.
When exhaustively traversing the set of base classes for a class C,
the RecordInfo::IsGCDerived() method relied on the clang traversal method
used to support name lookups for a class. It will step over and ignore
any derived classes with dependent types as these are not to be considered
for that purpose.
In order to identify GC derived base classes for a definition like
template<typename T>
class A : public GarbageCollected<A> {
public:
// ..other needed stuff..
class Local : public GarbageCollected<Local> { ... };
};
and its nested class Local, traverse the base classes and if any
of them has a dependent type, resolve its dependent template and
use its class name when determining if it is a "GC derived" class.
For the above class, Local gets a dependent type when it is lifted
out of the class template by the AST visitor -- its type depending
on T.
R=
BUG=444740
Committed: https://crrev.com/a3d83dbb235465f5a8f2fe70a9f60b68fe5e055b
Cr-Commit-Position: refs/heads/master@{#309696}
Patch Set 1 #
Messages
Total messages: 7 (2 generated)
|