1 | // RUN: %clang_cc1 -fsyntax-only -verify -Wthread-safety -Wthread-safety-beta -Wno-objc-root-class %s |
2 | |
3 | #include "thread-safety-analysis.h" |
4 | |
5 | @interface MyInterface { |
6 | @private |
7 | Lock lock_; |
8 | int value_; |
9 | } |
10 | |
11 | - (void)incrementValue; |
12 | - (void)decrementValue; |
13 | |
14 | @end |
15 | |
16 | @implementation MyInterface |
17 | |
18 | - (void)incrementValue { |
19 | AutoLock lock(lock_); |
20 | value_ += 1; |
21 | } |
22 | |
23 | - (void)decrementValue { |
24 | lock_.Acquire(); // expected-note{{mutex acquired here}} |
25 | value_ -= 1; |
26 | } // expected-warning{{mutex 'self->lock_' is still held at the end of function}} |
27 | |
28 | @end |
29 | |