1 | // RUN: %check_clang_tidy %s bugprone-reserved-identifier %t -- \ |
2 | // RUN: -config='{CheckOptions: { \ |
3 | // RUN: bugprone-reserved-identifier.Invert: true, \ |
4 | // RUN: bugprone-reserved-identifier.AllowedIdentifiers: "std;reference_wrapper;ref;^c?ref;type;get" \ |
5 | // RUN: }}' -- \ |
6 | // RUN: -I%S/Inputs/reserved-identifier \ |
7 | // RUN: -isystem %S/Inputs/reserved-identifier/system |
8 | |
9 | namespace std { |
10 | |
11 | void __f() {} |
12 | |
13 | void f(); |
14 | // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: declaration uses identifier 'f', which is not a reserved identifier [bugprone-reserved-identifier] |
15 | // CHECK-FIXES: {{^}}void __f();{{$}} |
16 | struct helper {}; |
17 | // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: declaration uses identifier 'helper', which is not a reserved identifier [bugprone-reserved-identifier] |
18 | // CHECK-FIXES: {{^}}struct __helper {};{{$}} |
19 | struct Helper {}; |
20 | // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: declaration uses identifier 'Helper', which is not a reserved identifier [bugprone-reserved-identifier] |
21 | // CHECK-FIXES: {{^}}struct _Helper {};{{$}} |
22 | struct _helper2 {}; |
23 | // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: declaration uses identifier '_helper2', which is not a reserved identifier [bugprone-reserved-identifier] |
24 | // CHECK-FIXES: {{^}}struct __helper2 {};{{$}} |
25 | |
26 | template <class _Tp> |
27 | class reference_wrapper { |
28 | public: |
29 | typedef _Tp type; |
30 | |
31 | private: |
32 | type *__f_; |
33 | |
34 | public: |
35 | reference_wrapper(type &__f) |
36 | : __f_(&__f) {} |
37 | // access |
38 | operator type &() const { return *__f_; } |
39 | type &get() const { return *__f_; } |
40 | }; |
41 | |
42 | template <class _Tp> |
43 | inline reference_wrapper<_Tp> |
44 | ref(_Tp &__t) noexcept { |
45 | return reference_wrapper<_Tp>(__t); |
46 | } |
47 | |
48 | template <class _Tp> |
49 | inline reference_wrapper<_Tp> |
50 | ref(reference_wrapper<_Tp> __t) noexcept { |
51 | return ref(__t.get()); |
52 | } |
53 | |
54 | template <class Up> |
55 | // CHECK-MESSAGES: :[[@LINE-1]]:17: warning: declaration uses identifier 'Up', which is not a reserved identifier [bugprone-reserved-identifier] |
56 | // CHECK-FIXES: {{^}}template <class _Up>{{$}} |
57 | inline reference_wrapper<const Up> |
58 | cref(const Up &u) noexcept { |
59 | // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: declaration uses identifier 'u', which is not a reserved identifier [bugprone-reserved-identifier] |
60 | // CHECK-FIXES: {{^}}cref(const _Up &__u) noexcept {{{$}} |
61 | return reference_wrapper<const Up>(u); |
62 | } |
63 | |
64 | template <class _Tp> |
65 | inline reference_wrapper<_Tp> |
66 | cref(reference_wrapper<const _Tp> __t) noexcept { |
67 | return cref(__t.get()); |
68 | } |
69 | |
70 | } // namespace std |
71 | |