aboutsummaryrefslogtreecommitdiff
path: root/clang/test/Analysis/thread-safety-handle-parenthesis.cpp
blob: ed0280beccf565a3ee860dffb6dc4312d5160d93 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// 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_'}}
}