| Index: tools/clang/blink_gc_plugin/BlinkGCPlugin.cpp
|
| diff --git a/tools/clang/blink_gc_plugin/BlinkGCPlugin.cpp b/tools/clang/blink_gc_plugin/BlinkGCPlugin.cpp
|
| index 473ad204e33b40a77239668f7cb26ebdabc81608..7dae3810150a394785d0f80835ba81534bccac30 100644
|
| --- a/tools/clang/blink_gc_plugin/BlinkGCPlugin.cpp
|
| +++ b/tools/clang/blink_gc_plugin/BlinkGCPlugin.cpp
|
| @@ -470,12 +470,17 @@ class CheckTraceVisitor : public RecursiveASTVisitor<CheckTraceVisitor> {
|
| if (!fn || !Config::IsTraceMethod(fn, nullptr))
|
| return false;
|
|
|
| - // Currently, a manually dispatched class cannot have mixin bases (having
|
| - // one would add a vtable which we explicitly check against). This means
|
| - // that we can only make calls to a trace method of the same name. Revisit
|
| - // this if our mixin/vtable assumption changes.
|
| - if (fn->getName() != trace_->getName())
|
| - return false;
|
| + if (trace_->getName() == kTraceImplName) {
|
| + if (fn->getName() != kTraceName)
|
| + return false;
|
| + } else {
|
| + // Currently, a manually dispatched class cannot have mixin bases (having
|
| + // one would add a vtable which we explicitly check against). This means
|
| + // that we can only make calls to a trace method of the same name. Revisit
|
| + // this if our mixin/vtable assumption changes.
|
| + if (fn->getName() != trace_->getName())
|
| + return false;
|
| + }
|
|
|
| CXXRecordDecl* decl = 0;
|
| if (callee && callee->hasQualifier()) {
|
|
|