Remove some false positives and enable the check.
[smatch.git] / validation / context-statement.c
blobfd79a6ad95184d4822e4c4fde8215de48694bc75
1 #define a() __context__(LOCK, 1)
2 #define r() __context__(LOCK, -1)
3 #define m() __context__(LOCK, 0, 1)
4 #define m2() __context__(LOCK, 0, 2)
6 static void good_ar(void)
8 a();
9 r();
12 static void bad_arr(void)
14 a();
15 r();
16 r();
19 static void good_macro1(void)
21 a();
22 m();
23 r();
26 static void good_macro2(void)
28 a();
29 a();
30 m();
31 m2();
32 r();
33 r();
36 static void bad_macro1(void)
38 m();
39 a();
40 r();
43 static void bad_macro2(void)
45 a();
46 r();
47 m();
50 static void bad_macro3(void)
52 r();
53 a();
57 * check-name: Check __context__ statement with required context
59 * check-error-start
60 context-statement.c:16:8: warning: context imbalance in 'bad_arr': unexpected unlock
61 context-statement.c:16:8: context 'LOCK': wanted 0, got -1
62 context-statement.c:38:5: warning: context imbalance in 'bad_macro1': __context__ statement expected different context
63 context-statement.c:38:5: context 'LOCK': wanted >= 1, got 0
64 context-statement.c:47:5: warning: context imbalance in 'bad_macro2': __context__ statement expected different context
65 context-statement.c:47:5: context 'LOCK': wanted >= 1, got 0
66 context-statement.c:53:5: warning: context imbalance in 'bad_macro3': __context__ statement expected different context
67 context-statement.c:53:5: context 'LOCK': wanted >= 0, got -1
68 * check-error-end