Fixed #10853 (False positive: misra-c2012-16.3: macro parameter "default")
This commit is contained in:
parent
2eed660b32
commit
a6c1653ed2
|
@ -2966,15 +2966,24 @@ class MisraChecker:
|
||||||
STATE_OK = 2 # a case/default is allowed (we have seen 'break;'/'comment'/'{'/attribute)
|
STATE_OK = 2 # a case/default is allowed (we have seen 'break;'/'comment'/'{'/attribute)
|
||||||
STATE_SWITCH = 3 # walking through switch statement scope
|
STATE_SWITCH = 3 # walking through switch statement scope
|
||||||
|
|
||||||
|
define = None
|
||||||
state = STATE_NONE
|
state = STATE_NONE
|
||||||
end_swtich_token = None # end '}' for the switch scope
|
end_switch_token = None # end '}' for the switch scope
|
||||||
for token in rawTokens:
|
for token in rawTokens:
|
||||||
|
if simpleMatch(token, '# define'):
|
||||||
|
define = token
|
||||||
|
if define:
|
||||||
|
if token.linenr != define.linenr:
|
||||||
|
define = None
|
||||||
|
else:
|
||||||
|
continue
|
||||||
|
|
||||||
# Find switch scope borders
|
# Find switch scope borders
|
||||||
if token.str == 'switch':
|
if token.str == 'switch':
|
||||||
state = STATE_SWITCH
|
state = STATE_SWITCH
|
||||||
if state == STATE_SWITCH:
|
if state == STATE_SWITCH:
|
||||||
if token.str == '{':
|
if token.str == '{':
|
||||||
end_swtich_token = findRawLink(token)
|
end_switch_token = findRawLink(token)
|
||||||
else:
|
else:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
@ -2983,7 +2992,7 @@ class MisraChecker:
|
||||||
elif token.str == ';':
|
elif token.str == ';':
|
||||||
if state == STATE_BREAK:
|
if state == STATE_BREAK:
|
||||||
state = STATE_OK
|
state = STATE_OK
|
||||||
elif token.next and token.next == end_swtich_token:
|
elif token.next and token.next == end_switch_token:
|
||||||
self.reportError(token.next, 16, 3)
|
self.reportError(token.next, 16, 3)
|
||||||
else:
|
else:
|
||||||
state = STATE_NONE
|
state = STATE_NONE
|
||||||
|
|
|
@ -1555,6 +1555,8 @@ static void misra_16_3(void) {
|
||||||
case 2:
|
case 2:
|
||||||
x++;
|
x++;
|
||||||
} // 16.3
|
} // 16.3
|
||||||
|
|
||||||
|
#define M_16_3(a,b,default) { (a), (b), (default) },
|
||||||
}
|
}
|
||||||
|
|
||||||
static void misra_16_4(void) {
|
static void misra_16_4(void) {
|
||||||
|
|
Loading…
Reference in New Issue