diff options
Diffstat (limited to 'validation')
| -rw-r--r-- | validation/context-dynamic.c | 14 | ||||
| -rw-r--r-- | validation/context-named.c | 72 | ||||
| -rw-r--r-- | validation/context-statement.c | 17 | ||||
| -rw-r--r-- | validation/context.c | 90 |
4 files changed, 149 insertions, 44 deletions
diff --git a/validation/context-dynamic.c b/validation/context-dynamic.c index e3bbb98e..5e172f0b 100644 --- a/validation/context-dynamic.c +++ b/validation/context-dynamic.c @@ -151,11 +151,21 @@ static int good_switch(void) r(); } +static void bad_lock1(void) +{ + r(); + a(); +} + /* * check-name: Check -Wcontext with lock trylocks * * check-error-start -context-dynamic.c:83:6: warning: context problem in 'bad_trylock1' - function 'r' expected different context -context-dynamic.c:133:6: warning: context problem in 'bad_trylock2' - function 'r' expected different context +context-dynamic.c:83:6: warning: context problem in 'bad_trylock1': 'r' expected different context +context-dynamic.c:83:6: context 'A': wanted >= 1, got 0 +context-dynamic.c:133:6: warning: context problem in 'bad_trylock2': 'r' expected different context +context-dynamic.c:133:6: context 'A': wanted >= 1, got 0 +context-dynamic.c:156:6: warning: context problem in 'bad_lock1': 'r' expected different context +context-dynamic.c:156:6: context 'A': wanted >= 1, got 0 * check-error-end */ diff --git a/validation/context-named.c b/validation/context-named.c index 806d736a..58310e9f 100644 --- a/validation/context-named.c +++ b/validation/context-named.c @@ -501,29 +501,53 @@ static void good_mixed_with_if(void) * check-name: Check -Wcontext with lock names * * check-error-start -context-named.c:86:3: warning: context imbalance in 'warn_lock1' - wrong count at exit (TEST) -context-named.c:93:3: warning: context imbalance in 'warn_lock2' - wrong count at exit (TEST) -context-named.c:100:3: warning: context imbalance in 'warn_lock3' - wrong count at exit (TEST) -context-named.c:105:3: warning: context problem in 'warn_unlock1' - function 'r' expected different context -context-named.c:112:3: warning: context problem in 'warn_unlock2' - function 'r' expected different context -context-named.c:152:9: warning: context imbalance in 'warn_if1' - wrong count at exit (TEST) -context-named.c:162:9: warning: context imbalance in 'warn_if2' - wrong count at exit (TEST) -context-named.c:218:4: warning: context imbalance in 'warn_while1' - wrong count at exit (TEST) -context-named.c:225:4: warning: context problem in 'warn_while2' - function 'r' expected different context -context-named.c:235:4: warning: context imbalance in 'warn_while3' - wrong count at exit (TEST) -context-named.c:295:5: warning: context imbalance in 'warn_goto1' - wrong count at exit (TEST) -context-named.c:305:6: warning: context imbalance in 'warn_goto2' - wrong count at exit (TEST) -context-named.c:315:6: warning: context problem in 'warn_goto3' - function 'r' expected different context -context-named.c:321:7: warning: context imbalance in 'warn_multiple1' - wrong count at exit (TEST) -context-named.c:327:6: warning: context imbalance in 'warn_multiple2' - wrong count at exit (TEST2) -context-named.c:333:6: warning: context problem in 'warn_mixed1' - function 'r' expected different context -context-named.c:343:6: warning: context problem in 'warn_mixed2' - function 'r' expected different context -context-named.c:353:6: warning: context problem in 'warn_mixed3' - function 'r' expected different context -context-named.c:364:6: warning: context imbalance in 'warn_mixed4' - wrong count at exit (TEST2) -context-named.c:434:14: warning: context problem in 'warn_fn' - function 'need_lock' expected different context -context-named.c:441:15: warning: context problem in 'warn_fn2' - function 'need_lock2' expected different context -context-named.c:456:20: warning: context problem in 'warn_exact_fn1' - function 'need_lock_exact' expected different context -context-named.c:464:20: warning: context problem in 'warn_exact_fn2' - function 'need_lock_exact' expected different context -context-named.c:475:15: warning: context problem in 'warn_fn3' - function 'need_lock3' expected different context +context-named.c:86:3: warning: context imbalance in 'warn_lock1': wrong count at exit +context-named.c:86:3: context 'TEST': wanted 0, got 1 +context-named.c:93:3: warning: context imbalance in 'warn_lock2': wrong count at exit +context-named.c:93:3: context 'TEST': wanted 0, got 1 +context-named.c:100:3: warning: context imbalance in 'warn_lock3': wrong count at exit +context-named.c:100:3: context 'TEST': wanted 0, got 1 +context-named.c:105:3: warning: context problem in 'warn_unlock1': 'r' expected different context +context-named.c:105:3: context 'TEST': wanted >= 1, got 0 +context-named.c:112:3: warning: context problem in 'warn_unlock2': 'r' expected different context +context-named.c:112:3: context 'TEST': wanted >= 1, got 0 +context-named.c:152:9: warning: context imbalance in 'warn_if1': wrong count at exit +context-named.c:152:9: context 'TEST': wanted 0, got 1 +context-named.c:162:9: warning: context imbalance in 'warn_if2': wrong count at exit +context-named.c:162:9: context 'TEST': wanted 0, got 1 +context-named.c:218:4: warning: context imbalance in 'warn_while1': wrong count at exit +context-named.c:218:4: context 'TEST': wanted 0, got 1 +context-named.c:225:4: warning: context problem in 'warn_while2': 'r' expected different context +context-named.c:225:4: context 'TEST': wanted >= 1, got 0 +context-named.c:235:4: warning: context imbalance in 'warn_while3': wrong count at exit +context-named.c:235:4: context 'TEST': wanted 0, got 1 +context-named.c:295:5: warning: context imbalance in 'warn_goto1': wrong count at exit +context-named.c:295:5: context 'TEST': wanted 0, got 1 +context-named.c:305:6: warning: context imbalance in 'warn_goto2': wrong count at exit +context-named.c:305:6: context 'TEST': wanted 0, got 1 +context-named.c:315:6: warning: context problem in 'warn_goto3': 'r' expected different context +context-named.c:315:6: context 'TEST': wanted >= 1, got 0 +context-named.c:321:7: warning: context imbalance in 'warn_multiple1': wrong count at exit +context-named.c:321:7: context 'TEST': wanted 0, got 1 +context-named.c:327:6: warning: context imbalance in 'warn_multiple2': wrong count at exit +context-named.c:327:6: context 'TEST2': wanted 0, got 1 +context-named.c:333:6: warning: context problem in 'warn_mixed1': 'r' expected different context +context-named.c:333:6: context 'TEST': wanted >= 1, got 0 +context-named.c:343:6: warning: context problem in 'warn_mixed2': 'r' expected different context +context-named.c:343:6: context 'TEST': wanted >= 1, got 0 +context-named.c:353:6: warning: context problem in 'warn_mixed3': 'r' expected different context +context-named.c:353:6: context 'TEST': wanted >= 1, got 0 +context-named.c:364:6: warning: context imbalance in 'warn_mixed4': wrong count at exit +context-named.c:364:6: context 'TEST2': wanted 0, got 1 +context-named.c:434:14: warning: context problem in 'warn_fn': 'need_lock' expected different context +context-named.c:434:14: context 'TEST': wanted >= 1, got 0 +context-named.c:441:15: warning: context problem in 'warn_fn2': 'need_lock2' expected different context +context-named.c:441:15: context 'TEST': wanted >= 1, got 0 +context-named.c:456:20: warning: context problem in 'warn_exact_fn1': 'need_lock_exact' expected different context +context-named.c:456:20: context 'TEST': wanted 1, got 2 +context-named.c:464:20: warning: context problem in 'warn_exact_fn2': 'need_lock_exact' expected different context +context-named.c:464:20: context 'TEST': wanted 1, got 0 +context-named.c:475:15: warning: context problem in 'warn_fn3': 'need_lock3' expected different context +context-named.c:475:15: context 'TEST': wanted >= 1, got 0 * check-error-end */ diff --git a/validation/context-statement.c b/validation/context-statement.c index ec26fefe..fd79a6ad 100644 --- a/validation/context-statement.c +++ b/validation/context-statement.c @@ -47,12 +47,23 @@ static void bad_macro2(void) m(); } +static void bad_macro3(void) +{ + r(); + a(); +} + /* * check-name: Check __context__ statement with required context * * check-error-start -context-statement.c:16:8: warning: context imbalance in 'bad_arr' - unexpected unlock (LOCK) -context-statement.c:38:5: warning: context imbalance in 'bad_macro1' - __context__ statement expected different lock context (LOCK) -context-statement.c:47:5: warning: context imbalance in 'bad_macro2' - __context__ statement expected different lock context (LOCK) +context-statement.c:16:8: warning: context imbalance in 'bad_arr': unexpected unlock +context-statement.c:16:8: context 'LOCK': wanted 0, got -1 +context-statement.c:38:5: warning: context imbalance in 'bad_macro1': __context__ statement expected different context +context-statement.c:38:5: context 'LOCK': wanted >= 1, got 0 +context-statement.c:47:5: warning: context imbalance in 'bad_macro2': __context__ statement expected different context +context-statement.c:47:5: context 'LOCK': wanted >= 1, got 0 +context-statement.c:53:5: warning: context imbalance in 'bad_macro3': __context__ statement expected different context +context-statement.c:53:5: context 'LOCK': wanted >= 0, got -1 * check-error-end */ diff --git a/validation/context.c b/validation/context.c index df337e5c..4250e950 100644 --- a/validation/context.c +++ b/validation/context.c @@ -325,24 +325,84 @@ static void warn_odd_looping(void) r(); } +static void warn_huge_switch(void) +{ + a(); + + switch(condition) { + case 1: + r(); + break; + case 2: + r(); + break; + case 3: + r(); + break; + case 4: + r(); + break; + case 5: + r(); + break; + case 11: + r(); + break; + case 12: + r(); + break; + case 13: + r(); + break; + case 14: + r(); + case 15: + r(); + break; + case 16: + r(); + break; + case 17: + r(); + break; + } +} + /* * check-name: Check -Wcontext * * check-error-start -context.c:71:3: warning: context imbalance in 'warn_lock1' - wrong count at exit -context.c:78:3: warning: context imbalance in 'warn_lock2' - wrong count at exit -context.c:85:3: warning: context imbalance in 'warn_lock3' - wrong count at exit -context.c:90:3: warning: context problem in 'warn_unlock1' - function 'r' expected different context -context.c:97:3: warning: context problem in 'warn_unlock2' - function 'r' expected different context -context.c:137:9: warning: context imbalance in 'warn_if1' - wrong count at exit -context.c:147:9: warning: context imbalance in 'warn_if2' - wrong count at exit -context.c:203:4: warning: context imbalance in 'warn_while1' - wrong count at exit -context.c:210:4: warning: context problem in 'warn_while2' - function 'r' expected different context -context.c:220:4: warning: context imbalance in 'warn_while3' - wrong count at exit -context.c:280:5: warning: context imbalance in 'warn_goto1' - wrong count at exit -context.c:290:6: warning: context imbalance in 'warn_goto2' - wrong count at exit -context.c:300:6: warning: context problem in 'warn_goto3' - function 'r' expected different context -context.c:315:6: warning: context problem in 'warn_cond_lock1' - function 'r' expected different context -context.c:325:10: warning: context problem in 'warn_odd_looping' - function 'r' expected different context +context.c:71:3: warning: context imbalance in 'warn_lock1': wrong count at exit +context.c:71:3: default context: wanted 0, got 1 +context.c:78:3: warning: context imbalance in 'warn_lock2': wrong count at exit +context.c:78:3: default context: wanted 0, got 1 +context.c:85:3: warning: context imbalance in 'warn_lock3': wrong count at exit +context.c:85:3: default context: wanted 0, got 1 +context.c:90:3: warning: context problem in 'warn_unlock1': 'r' expected different context +context.c:90:3: default context: wanted >= 1, got 0 +context.c:97:3: warning: context problem in 'warn_unlock2': 'r' expected different context +context.c:97:3: default context: wanted >= 1, got 0 +context.c:137:9: warning: context imbalance in 'warn_if1': wrong count at exit +context.c:137:9: default context: wanted 0, got 1 +context.c:147:9: warning: context imbalance in 'warn_if2': wrong count at exit +context.c:147:9: default context: wanted 0, got 1 +context.c:203:4: warning: context imbalance in 'warn_while1': wrong count at exit +context.c:203:4: default context: wanted 0, got 1 +context.c:210:4: warning: context problem in 'warn_while2': 'r' expected different context +context.c:210:4: default context: wanted >= 1, got 0 +context.c:220:4: warning: context imbalance in 'warn_while3': wrong count at exit +context.c:220:4: default context: wanted 0, got 1 +context.c:280:5: warning: context imbalance in 'warn_goto1': wrong count at exit +context.c:280:5: default context: wanted 0, got 1 +context.c:290:6: warning: context imbalance in 'warn_goto2': wrong count at exit +context.c:290:6: default context: wanted 0, got 1 +context.c:300:6: warning: context problem in 'warn_goto3': 'r' expected different context +context.c:300:6: default context: wanted >= 1, got 0 +context.c:315:6: warning: context problem in 'warn_cond_lock1': 'r' expected different context +context.c:315:6: default context: wanted >= 1, got 0 +context.c:325:10: warning: context problem in 'warn_odd_looping': 'r' expected different context +context.c:325:10: default context: wanted >= 1, got 0 +context.c:360:10: warning: context problem in 'warn_huge_switch': 'r' expected different context +context.c:360:10: default context: wanted >= 1, got 0 * check-error-end */ |
