Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 7a465dd

Browse filesBrowse files
committed
EssentialType: Add maxRank predicate
1 parent cd8ea67 commit 7a465dd
Copy full SHA for 7a465dd

File tree

1 file changed

+10
-10
lines changed
Filter options

1 file changed

+10
-10
lines changed

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

Copy file name to clipboardExpand all lines: c/misra/src/codingstandards/c/misra/EssentialTypes.qll
+10-10Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,13 @@ class EssentialUnaryMinusExpr extends EssentialExpr, UnaryMinusExpr {
257257
}
258258
}
259259

260+
bindingset[essentialTypeA, essentialTypeB]
261+
private Type maxRankType(Type essentialTypeA, Type essentialTypeB) {
262+
if essentialTypeA.getSize() > essentialTypeB.getSize()
263+
then result = essentialTypeA
264+
else result = essentialTypeB
265+
}
266+
260267
class EssentialConditionalExpr extends EssentialExpr, ConditionalExpr {
261268
override Type getEssentialType() {
262269
exists(Type thenEssentialType, Type elseEssentialType |
@@ -269,10 +276,7 @@ class EssentialConditionalExpr extends EssentialExpr, ConditionalExpr {
269276
if
270277
getEssentialTypeCategory(thenEssentialType) = getEssentialTypeCategory(elseEssentialType) and
271278
getEssentialTypeCategory(thenEssentialType) instanceof EssentiallySignedOrUnsignedType
272-
then
273-
if thenEssentialType.getSize() > elseEssentialType.getSize()
274-
then result = thenEssentialType
275-
else result = elseEssentialType
279+
then result = maxRankType(thenEssentialType, elseEssentialType)
276280
else result = this.getStandardType()
277281
)
278282
}
@@ -316,15 +320,11 @@ class EssentialBinaryOperationSubjectToUsualConversions extends EssentialExpr, B
316320
leftEssentialTypeCategory instanceof EssentiallySignedOrUnsignedType
317321
then
318322
if exists(getValue())
319-
then (
323+
then
320324
leftEssentialTypeCategory = EssentiallySignedType() and result = stlr(this)
321325
or
322326
leftEssentialTypeCategory = EssentiallyUnsignedType() and result = utlr(this)
323-
) else (
324-
if leftEssentialType.getSize() > rightEssentialType.getSize()
325-
then result = leftEssentialType
326-
else result = rightEssentialType
327-
)
327+
else result = maxRankType(leftEssentialType, rightEssentialType)
328328
else result = this.getStandardType()
329329
)
330330
}

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.