| // Copyright 2020 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| #include <vector> |
| |
| #include "base/containers/span.h" |
| #include "base/memory/raw_ptr.h" |
| #include "base/memory/raw_ref.h" |
| #include "base/memory/raw_span.h" |
| |
| class SomeClass; |
| |
| // Based on Chromium's //base/thread_annotations.h |
| #define GUARDED_BY(lock) __attribute__((guarded_by(lock))) |
| |
| class MyClass { |
| MyClass(SomeClass& s) : ref_field(s), lock(0) {} |
| // Expected rewrite: raw_ptr<SomeClass> ptr_field GUARDED_BY(lock); |
| raw_ptr<SomeClass> ptr_field GUARDED_BY(lock); |
| // Expected rewrite: const raw_ref<SomeClass> ref_field GUARDED_BY(lock); |
| const raw_ref<SomeClass> ref_field GUARDED_BY(lock); |
| // Expected rewrite: base::raw_span<SomeClass> span_field GUARDED_BY(lock); |
| base::raw_span<SomeClass> span_field GUARDED_BY(lock); |
| // Expected rewrite: std::vector<base::raw_span<SomeClass>> |
| // container_of_span_field GUARDED_BY(lock); |
| std::vector<base::raw_span<SomeClass>> container_of_span_field |
| GUARDED_BY(lock); |
| int lock; |
| }; |