| // RUN: %clang_cc1 -verify -fsyntax-only -Wthread-safety %s |
| |
| struct __attribute__((lockable)) Lock {}; |
| |
| void sink_protected(int); |
| |
| struct Baz { |
| public: |
| Lock lock_; |
| int protected_num_ __attribute__((guarded_by(lock_))) = 1; |
| }; |
| |
| void paren_test() { |
| Baz baz; |
| int& n = baz.protected_num_; |
| sink_protected(n); // expected-warning{{reading variable 'protected_num_' requires holding mutex 'baz.lock_'}} |
| int& n2 = (baz.protected_num_); |
| sink_protected(n2); // expected-warning{{reading variable 'protected_num_' requires holding mutex 'baz.lock_'}} |
| } |