Skip to content

Commit 62da9c8

Browse files
committed
EssentialType: Simplify (Signed or Unsigned)
1 parent 29420e9 commit 62da9c8

File tree

1 file changed

+11
-14
lines changed

1 file changed

+11
-14
lines changed

c/misra/src/codingstandards/c/misra/EssentialTypes.qll

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -31,17 +31,19 @@ class EssentialTypeCategory extends TEssentialTypeCategory {
3131
}
3232
}
3333

34+
class EssentiallySignedOrUnsignedType extends EssentialTypeCategory {
35+
EssentiallySignedOrUnsignedType() {
36+
this = EssentiallySignedType() or this = EssentiallyUnsignedType()
37+
}
38+
}
39+
3440
/**
3541
* An expression in the program that evaluates to a compile time constant signed or unsigned integer.
3642
*/
3743
private class ConstantIntegerExpr extends Expr {
3844
pragma[noinline]
3945
ConstantIntegerExpr() {
40-
getEssentialTypeCategory(this.getType()) =
41-
[
42-
EssentiallyUnsignedType().(EssentialTypeCategory),
43-
EssentiallySignedType().(EssentialTypeCategory)
44-
] and
46+
getEssentialTypeCategory(this.getType()) instanceof EssentiallySignedOrUnsignedType and
4547
exists(this.getValue().toFloat()) and
4648
not this instanceof Conversion
4749
}
@@ -235,9 +237,7 @@ class EssentialUnaryPlusExpr extends EssentialExpr, UnaryPlusExpr {
235237
operandEssentialType = getEssentialType(getOperand()) and
236238
operandEssentialTypeCategory = getEssentialTypeCategory(operandEssentialType)
237239
|
238-
if
239-
operandEssentialTypeCategory =
240-
[EssentiallyUnsignedType().(TEssentialTypeCategory), EssentiallySignedType()]
240+
if operandEssentialTypeCategory instanceof EssentiallySignedOrUnsignedType
241241
then result = operandEssentialType
242242
else result = getStandardType()
243243
)
@@ -321,8 +321,7 @@ class EssentialBinaryOperationSubjectToUsualConversions extends EssentialExpr, B
321321
|
322322
if
323323
leftEssentialTypeCategory = rightEssentialTypeCategory and
324-
leftEssentialTypeCategory =
325-
[EssentiallyUnsignedType(), EssentiallySignedType().(TEssentialTypeCategory)]
324+
leftEssentialTypeCategory instanceof EssentiallySignedOrUnsignedType
326325
then
327326
if exists(getValue())
328327
then (
@@ -352,8 +351,7 @@ class EssentialAddExpr extends EssentialBinaryOperationSubjectToUsualConversions
352351
|
353352
if
354353
operandTypeCategory = EssentiallyCharacterType() and
355-
otherOperandTypeCategory =
356-
[EssentiallySignedType(), EssentiallyUnsignedType().(TEssentialTypeCategory)]
354+
otherOperandTypeCategory instanceof EssentiallySignedOrUnsignedType
357355
then result instanceof PlainCharType
358356
else result = super.getEssentialType()
359357
)
@@ -374,8 +372,7 @@ class EssentialSubExpr extends EssentialBinaryOperationSubjectToUsualConversions
374372
|
375373
if
376374
leftEssentialTypeCategory = EssentiallyCharacterType() and
377-
rightEssentialTypeCategory =
378-
[EssentiallySignedType(), EssentiallyUnsignedType().(TEssentialTypeCategory)]
375+
rightEssentialTypeCategory instanceof EssentiallySignedOrUnsignedType
379376
then result instanceof PlainCharType
380377
else result = super.getEssentialType()
381378
)

0 commit comments

Comments
 (0)