Rust: Add barrier for fieldless enum types

This commit is contained in:
Simon Friis Vindum
2025-11-26 14:46:28 +01:00
parent 6050a0e1a8
commit 081ab499c2
2 changed files with 10 additions and 0 deletions

View File

@@ -140,6 +140,9 @@ class EnumType extends Type, TEnum {
EnumType() { this = TEnum(enum) }
/** Gets the enum that this enum type represents. */
Enum getEnum() { result = enum }
override TypeParameter getPositionalTypeParameter(int i) {
result = TTypeParamTypeParameter(enum.getGenericParamList().getTypeParam(i))
}

View File

@@ -34,6 +34,13 @@ class IntegralTypeBarrier extends DataFlow::Node {
}
}
/** A node whose type is a fieldless enum. */
class FieldlessEnumTypeBarrier extends DataFlow::Node {
FieldlessEnumTypeBarrier() {
TypeInference::inferType(this.asExpr()).(EnumType).getEnum().isFieldless()
}
}
/**
* Holds if guard expression `g` having result `branch` indicates that the
* sub-expression `e` is not null. For example when `ptr.is_null()` is