C#: Add extractor support for the allows ref struct general type parameter constraint.

This commit is contained in:
Michael Nebel
2025-01-02 15:02:14 +01:00
parent d9158c8cd5
commit 41dc4a5503
4 changed files with 12 additions and 0 deletions

View File

@@ -290,6 +290,9 @@ class TypeParameterConstraints extends Element, @type_parameter_constraints {
/** Holds if these constraints include a notnull type constraint. */
predicate hasNotNullTypeConstraint() { general_type_parameter_constraints(this, 6) }
/** Holds if these constraints include a `allows ref struct` constraint. */
predicate hasAllowRefLikeTypeConstraint() { general_type_parameter_constraints(this, 7) }
/** Gets a textual representation of these constraints. */
override string toString() { result = "where " + this.getTypeParameter().getName() + ": ..." }

View File

@@ -20,3 +20,5 @@ hasUnmanagedTypeConstraint
hasNullableRefTypeConstraint
hasNotNullConstraint
| TypeParameterConstraints.cs:14:20:14:21 | T5 | file://:0:0:0:0 | where T5: ... |
hasAllowRefLikeTypeConstraint
| TypeParameterConstraints.cs:18:20:18:21 | T7 | file://:0:0:0:0 | where T7: ... |

View File

@@ -33,3 +33,7 @@ query predicate hasNullableRefTypeConstraint(TypeParameter tp, TypeParameterCons
query predicate hasNotNullConstraint(TypeParameter tp, TypeParameterConstraints tpc) {
typeParameterContraints(tp, tpc) and tpc.hasNotNullTypeConstraint()
}
query predicate hasAllowRefLikeTypeConstraint(TypeParameter tp, TypeParameterConstraints tpc) {
typeParameterContraints(tp, tpc) and tpc.hasAllowRefLikeTypeConstraint()
}