Skip to content

Commit d11f73a

Browse files
authored
Merge pull request #427 from rvermeulen/rvermeulen/m5-0-20-use-misra-underlyingtype
Use Misra's underlying type
2 parents 7d00a59 + 983cd8c commit d11f73a

File tree

2 files changed

+7
-4
lines changed

2 files changed

+7
-4
lines changed
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
- `M5-0-20` - `BitwiseOperatorOperandsHaveDifferentUnderlyingType.ql`:
2+
- Use the Misra definition of underlying type.

cpp/autosar/src/rules/M5-0-20/BitwiseOperatorOperandsHaveDifferentUnderlyingType.ql

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import cpp
1818
import codingstandards.cpp.autosar
1919
import codingstandards.cpp.Bitwise
20+
import codingstandards.cpp.Conversion
2021

2122
predicate isBinaryBitwiseOperation(Operation o, VariableAccess l, VariableAccess r) {
2223
exists(BinaryBitwiseOperation bbo | bbo = o |
@@ -30,13 +31,13 @@ predicate isBinaryBitwiseOperation(Operation o, VariableAccess l, VariableAccess
3031
}
3132

3233
from
33-
Operation o, Variable left, Variable right, Type leftUnderlyingType, Type rightUnderlyingType
34+
Operation o, VariableAccess left, VariableAccess right, Type leftUnderlyingType, Type rightUnderlyingType
3435
where
3536
not isExcluded(o, ExpressionsPackage::bitwiseOperatorOperandsHaveDifferentUnderlyingTypeQuery()) and
3637
not o.isFromUninstantiatedTemplate(_) and
37-
isBinaryBitwiseOperation(o, left.getAnAccess(), right.getAnAccess()) and
38-
leftUnderlyingType = left.getUnderlyingType() and
39-
rightUnderlyingType = right.getUnderlyingType() and
38+
isBinaryBitwiseOperation(o, left, right) and
39+
leftUnderlyingType = MisraConversion::getUnderlyingType(left) and
40+
rightUnderlyingType = MisraConversion::getUnderlyingType(right) and
4041
leftUnderlyingType != rightUnderlyingType
4142
select o,
4243
"Operands of the '" + o.getOperator() + "' operation have different underlying types '" + leftUnderlyingType.getName() + "' and '" + rightUnderlyingType.getName() + "'."

0 commit comments

Comments
 (0)