misra.py: Fix false positives on macro expansion

This will fix Trac#9634
This commit is contained in:
Georgy Komarov 2020-07-21 19:59:11 +03:00
parent ca1fcfa8bc
commit fc504ed6c3
No known key found for this signature in database
GPG Key ID: 195B8622FE88ED46
2 changed files with 7 additions and 1 deletions

View File

@ -2322,7 +2322,9 @@ class MisraChecker:
while pos1 >= 0 and exp[pos1] == ' ':
pos1 -= 1
if exp[pos1] not in '([#,.':
if exp[pos1] == '#':
continue
if exp[pos1] not in '([,.':
self.reportError(directive, 20, 7)
break
while pos2 < len(exp) and exp[pos2] == ' ':

View File

@ -1027,6 +1027,10 @@ union misra_19_2 { }; // 19.2
#define M_20_7_3(A) ((A)+A) // 20.7
#define M_20_7_4(A) x##A // 20.10 this test was written to see there are not FPs
#define M_20_7_5(A,B) f(A, B) // no warning
#define M_20_7_6(x) a ## x = ( x ) // 20.10
#define M_20_7_7(x) a = # x // 20.10
#define M_20_7_8(x, fn) a = fn ( # x ) // 20.7 20.10
#define M_20_7_9(x, fn) a = (fn) ( # x ) // 20.10
// Compliant: M is a structure member name, not an expression
struct { int a; } struct_20_7_s;