Index: tools/clang/blink_gc_plugin/tests/destructor_access_finalized_field.cpp |
diff --git a/tools/clang/blink_gc_plugin/tests/destructor_access_finalized_field.cpp b/tools/clang/blink_gc_plugin/tests/destructor_access_finalized_field.cpp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b6bbfd22e5d8750580d649c7a1888c4c2730076e |
--- /dev/null |
+++ b/tools/clang/blink_gc_plugin/tests/destructor_access_finalized_field.cpp |
@@ -0,0 +1,35 @@ |
+// 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 "destructor_access_finalized_field.h" |
+ |
+namespace blink { |
+ |
+HeapObject::~HeapObject() |
+{ |
+ // Valid access to fields. |
+ if (m_ref->foo() && !m_obj) { |
+ m_objs.size(); |
+ m_part.obj(); |
+ } |
+ |
+ // Invalid access to fields. |
+ bar(m_obj); |
+ m_obj->foo(); |
+ m_objs[0]; |
+} |
+ |
+void HeapObject::trace(Visitor* visitor) |
+{ |
+ visitor->trace(m_obj); |
+ visitor->trace(m_objs); |
+ visitor->trace(m_part); |
+} |
+ |
+void PartOther::trace(Visitor* visitor) |
+{ |
+ visitor->trace(m_obj); |
+} |
+ |
+} |