Index: tools/clang/blink_gc_plugin/tests/trace_after_dispatch_impl_error.cpp |
diff --git a/tools/clang/blink_gc_plugin/tests/trace_after_dispatch_impl_error.cpp b/tools/clang/blink_gc_plugin/tests/trace_after_dispatch_impl_error.cpp |
index 1ea1936437c714432da490e07f4ec4eab500fe80..23798f70275c3f4e6911146b80ed33be4ccfc5d9 100644 |
--- a/tools/clang/blink_gc_plugin/tests/trace_after_dispatch_impl_error.cpp |
+++ b/tools/clang/blink_gc_plugin/tests/trace_after_dispatch_impl_error.cpp |
@@ -6,24 +6,37 @@ |
namespace blink { |
-void TraceAfterDispatchInlinedBase::trace(Visitor* visitor) { |
- // Implement a simple form of manual dispatching, because BlinkGCPlugin gets |
- // angry if dispatching statements are missing. |
+template <typename VisitorDispatcher> |
+inline void TraceAfterDispatchInlinedBase::traceImpl( |
+ VisitorDispatcher visitor) { |
+ // Implement a simple form of manual dispatching, because BlinkGCPlugin |
+ // checks if the tracing is dispatched to all derived classes. |
// |
// This function has to be implemented out-of-line, since we need to know the |
// definition of derived classes here. |
if (tag_ == DERIVED) { |
- static_cast<TraceAfterDispatchInlinedDerived*>(this)->traceAfterDispatch( |
- visitor); |
+ // Missing dispatch call: |
+ // static_cast<TraceAfterDispatchInlinedDerived*>(this)->traceAfterDispatch( |
+ // visitor); |
} else { |
traceAfterDispatch(visitor); |
} |
} |
void TraceAfterDispatchExternBase::trace(Visitor* visitor) { |
+ traceImpl(visitor); |
+} |
+ |
+void TraceAfterDispatchExternBase::trace(InlinedGlobalMarkingVisitor visitor) { |
+ traceImpl(visitor); |
+} |
+ |
+template <typename VisitorDispatcher> |
+inline void TraceAfterDispatchExternBase::traceImpl(VisitorDispatcher visitor) { |
if (tag_ == DERIVED) { |
- static_cast<TraceAfterDispatchExternDerived*>(this)->traceAfterDispatch( |
- visitor); |
+ // Missing dispatch call: |
+ // static_cast<TraceAfterDispatchExternDerived*>(this)->traceAfterDispatch( |
+ // visitor); |
} else { |
traceAfterDispatch(visitor); |
} |
@@ -33,6 +46,11 @@ void TraceAfterDispatchExternBase::traceAfterDispatch(Visitor* visitor) { |
traceAfterDispatchImpl(visitor); |
} |
+void TraceAfterDispatchExternBase::traceAfterDispatch( |
+ InlinedGlobalMarkingVisitor visitor) { |
+ traceAfterDispatchImpl(visitor); |
+} |
+ |
template <typename VisitorDispatcher> |
inline void TraceAfterDispatchExternBase::traceAfterDispatchImpl( |
VisitorDispatcher visitor) { |
@@ -43,6 +61,11 @@ void TraceAfterDispatchExternDerived::traceAfterDispatch(Visitor* visitor) { |
traceAfterDispatchImpl(visitor); |
} |
+void TraceAfterDispatchExternDerived::traceAfterDispatch( |
+ InlinedGlobalMarkingVisitor visitor) { |
+ traceAfterDispatchImpl(visitor); |
+} |
+ |
template <typename VisitorDispatcher> |
inline void TraceAfterDispatchExternDerived::traceAfterDispatchImpl( |
VisitorDispatcher visitor) { |