Index: tools/clang/blink_gc_plugin/tests/trace_templated_super.cpp |
diff --git a/tools/clang/blink_gc_plugin/tests/trace_templated_super.cpp b/tools/clang/blink_gc_plugin/tests/trace_templated_super.cpp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..2b5903412b4a10e6d0f3b3e2a63eefc46e1a5b8e |
--- /dev/null |
+++ b/tools/clang/blink_gc_plugin/tests/trace_templated_super.cpp |
@@ -0,0 +1,36 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "trace_templated_super.h" |
+ |
+namespace blink { |
+ |
+template<typename T> |
+void Super<T>::clearWeakMembers(Visitor* visitor) |
+{ |
+ (void)m_weak; |
+} |
+ |
+template<typename T> |
+void Super<T>::trace(Visitor* visitor) |
+{ |
+ visitor->registerWeakMembers<Super<T>, &Super<T>::clearWeakMembers>(this); |
+ visitor->trace(m_obj); |
+ Mixin::trace(visitor); |
+} |
+ |
+template<typename T> |
+void Sub<T>::trace(Visitor* visitor) |
+{ |
+ // Missing trace of m_obj. |
+ Super<T>::trace(visitor); |
+} |
+ |
+void HeapObject::trace(Visitor* visitor) |
+{ |
+ visitor->trace(m_obj); |
+ Sub<HeapObject>::trace(visitor); |
+} |
+ |
+} |