| // Copyright 2022 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef TOOLS_CLANG_BLINK_GC_PLUGIN_TESTS_FORBIDDEN_FIELDS_H_ |
| #define TOOLS_CLANG_BLINK_GC_PLUGIN_TESTS_FORBIDDEN_FIELDS_H_ |
| |
| #include "heap/stubs.h" |
| |
| namespace blink { |
| |
| template <typename T> |
| class TaskRunnerTimer {}; |
| |
| class SecondLevelPartObject { |
| private: |
| TaskRunnerTimer<SecondLevelPartObject> timer_; |
| }; |
| |
| class FirstLevelPartObject { |
| private: |
| SecondLevelPartObject obj_; |
| std::map<int, SecondLevelPartObject> map_of_embedded; |
| }; |
| |
| class HeapObject : public GarbageCollected<HeapObject> { |
| private: |
| FirstLevelPartObject obj_; |
| }; |
| |
| class AnotherHeapObject : public GarbageCollected<AnotherHeapObject> { |
| private: |
| TaskRunnerTimer<AnotherHeapObject> timer_; |
| Vector<TaskRunnerTimer<AnotherHeapObject>> vec_of_timers_; |
| Vector<SecondLevelPartObject> vec_of_embedded_of_timers; |
| TaskRunnerTimer<AnotherHeapObject> array_of_bad_typ_e[2]; |
| SecondLevelPartObject array_of_embedded_object_[2]; |
| std::vector<TaskRunnerTimer<AnotherHeapObject>> std_vec_of_timers_; |
| std::optional<TaskRunnerTimer<AnotherHeapObject>> optional_timer_; |
| std::optional<TaskRunnerTimer<AnotherHeapObject>> optional_timer2_; |
| std::optional<SecondLevelPartObject> optional_embedded_object_; |
| std::optional<SecondLevelPartObject> optional_embedded_object2_; |
| absl::variant<SecondLevelPartObject> variant_embedded_object_; |
| std::variant<SecondLevelPartObject> variant_embedded_object2_; |
| std::unique_ptr<TaskRunnerTimer<AnotherHeapObject>> unique_ptr_timer_; |
| TaskRunnerTimer<AnotherHeapObject>* raw_ptr_timer_; |
| scoped_refptr<TaskRunnerTimer<AnotherHeapObject>> scoped_refptr_timer_; |
| base::WeakPtr<TaskRunnerTimer<AnotherHeapObject>> weak_ptr_timer_; |
| }; |
| |
| } // namespace blink |
| |
| #endif /* TOOLS_CLANG_BLINK_GC_PLUGIN_TESTS_FORBIDDEN_FIELDS_H_ */ |