Index: tools/clang/blink_gc_plugin/tests/weak_fields_require_tracing.cpp |
diff --git a/tools/clang/blink_gc_plugin/tests/weak_fields_require_tracing.cpp b/tools/clang/blink_gc_plugin/tests/weak_fields_require_tracing.cpp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..382e9f9739283d27ab03e0f609e62b2b85ce2d62 |
--- /dev/null |
+++ b/tools/clang/blink_gc_plugin/tests/weak_fields_require_tracing.cpp |
@@ -0,0 +1,28 @@ |
+// 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 "weak_fields_require_tracing.h" |
+ |
+namespace blink { |
+ |
+void HeapObject::trace(Visitor* visitor) |
+{ |
+ // Missing visitor->trace(m_obj1); |
+ // Missing visitor->trace(m_obj2); |
+ // visitor->trace(m_obj3) in callback. |
+ // Missing visitor->trace(m_set1); |
+ visitor->trace(m_set2); |
+ visitor->registerWeakMembers<HeapObject, |
+ &HeapObject::clearWeakMembers>(this); |
+} |
+ |
+void HeapObject::clearWeakMembers(Visitor* visitor) |
+{ |
+ visitor->trace(m_obj1); // Does not count. |
+ // Missing visitor->trace(m_obj2); |
+ visitor->trace(m_obj3); // OK. |
+ visitor->trace(m_set1); // Does not count. |
+} |
+ |
+} |