Index: tools/clang/blink_gc_plugin/tests/polymorphic_class_with_non_virtual_trace.h |
diff --git a/tools/clang/blink_gc_plugin/tests/polymorphic_class_with_non_virtual_trace.h b/tools/clang/blink_gc_plugin/tests/polymorphic_class_with_non_virtual_trace.h |
index 3396c94553f5219cb6073bd9b81ad2da03f30f01..f5d999ebf6430a7eddc20c549c268f6c36b5143d 100644 |
--- a/tools/clang/blink_gc_plugin/tests/polymorphic_class_with_non_virtual_trace.h |
+++ b/tools/clang/blink_gc_plugin/tests/polymorphic_class_with_non_virtual_trace.h |
@@ -41,6 +41,21 @@ private: |
Member<HeapObject> m_obj; |
}; |
+template<typename T> |
+class TemplatedNonPolymorphicBase |
+ : public GarbageCollected<TemplatedNonPolymorphicBase<T> > { |
+public: |
+ void trace(Visitor* visitor) { visitor->trace(m_obj); } |
+private: |
+ Member<HeapObject> m_obj; |
+}; |
+ |
+// Looks OK, but will result in an incorrect object pointer when marking. |
+class TemplatedIsNotLeftMostPolymorphic |
+ : public TemplatedNonPolymorphicBase<TemplatedIsNotLeftMostPolymorphic>, |
+ public PolymorphicBase { |
+}; |
+ |
} |
#endif |