Skip to content

Commit 7241c1a

Browse files
C++/C#: More sanity checks for IRType
1 parent 958754b commit 7241c1a

File tree

13 files changed

+31
-2
lines changed

13 files changed

+31
-2
lines changed

cpp/ql/src/semmle/code/cpp/Type.qll

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -610,7 +610,9 @@ class FloatingPointType extends ArithmeticType {
610610
(
611611
kind >= 24 and kind <= 32
612612
or
613-
kind = 38
613+
kind >= 38 and kind <= 42
614+
or
615+
kind >= 45 and kind <= 50
614616
)
615617
)
616618
}

cpp/ql/src/semmle/code/cpp/ir/implementation/IRType.qll

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,4 +258,6 @@ module IRTypeSanity {
258258
strictcount(type.getIRType()) > 1 and
259259
message = "`LanguageType` " + type.getAQlClass() + " has multiple `IRType`s: " + concat(type.getIRType().toString(), ", ")
260260
}
261+
262+
import Language::LanguageTypeSanity
261263
}

cpp/ql/src/semmle/code/cpp/ir/internal/CppType.qll

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -532,3 +532,13 @@ string getOpaqueTagIdentityString(Type tag) {
532532
hasOpaqueType(tag, _) and
533533
result = getTypeIdentityString(tag)
534534
}
535+
536+
module LanguageTypeSanity {
537+
query predicate missingCppType(Type type, string message) {
538+
not exists(getTypeForPRValue(type)) and
539+
exists(type.getSize()) and
540+
// `ProxyClass`es have a size, but only appear in uninstantiated templates
541+
not type instanceof ProxyClass and
542+
message = "Type does not have an associated `CppType`."
543+
}
544+
}

cpp/ql/test/library-tests/ir/ir/aliased_ssa_sanity.expected

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,4 @@ missingCanonicalLanguageType
1717
multipleCanonicalLanguageTypes
1818
missingIRType
1919
multipleIRTypes
20+
missingCppType

cpp/ql/test/library-tests/ir/ir/raw_sanity.expected

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,4 @@ missingCanonicalLanguageType
1717
multipleCanonicalLanguageTypes
1818
missingIRType
1919
multipleIRTypes
20+
missingCppType

cpp/ql/test/library-tests/ir/ir/unaliased_ssa_sanity.expected

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,4 @@ missingCanonicalLanguageType
1717
multipleCanonicalLanguageTypes
1818
missingIRType
1919
multipleIRTypes
20+
missingCppType

cpp/ql/test/library-tests/ir/ssa/aliased_ssa_sanity.expected

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,4 @@ missingCanonicalLanguageType
1717
multipleCanonicalLanguageTypes
1818
missingIRType
1919
multipleIRTypes
20+
missingCppType

cpp/ql/test/library-tests/ir/ssa/unaliased_ssa_sanity.expected

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,4 @@ missingCanonicalLanguageType
1717
multipleCanonicalLanguageTypes
1818
missingIRType
1919
multipleIRTypes
20+
missingCppType

cpp/ql/test/library-tests/syntax-zoo/aliased_ssa_sanity.expected

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -548,3 +548,4 @@ missingCanonicalLanguageType
548548
multipleCanonicalLanguageTypes
549549
missingIRType
550550
multipleIRTypes
551+
missingCppType

cpp/ql/test/library-tests/syntax-zoo/raw_sanity.expected

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -696,3 +696,4 @@ missingCanonicalLanguageType
696696
multipleCanonicalLanguageTypes
697697
missingIRType
698698
multipleIRTypes
699+
missingCppType

0 commit comments

Comments
 (0)