mirror of
https://github.com/github/codeql.git
synced 2025-12-17 17:23:36 +01:00
72 lines
2.2 KiB
Plaintext
72 lines
2.2 KiB
Plaintext
import csharp
|
|
|
|
query predicate switchExprs(SwitchExpr switch, Expr e) { e = switch.getExpr() }
|
|
|
|
query predicate switchExprCases(SwitchCaseExpr case, Expr pattern, Expr res) {
|
|
pattern = case.getPattern() and res = case.getBody()
|
|
}
|
|
|
|
query predicate switchFilters(SwitchCaseExpr case, Expr when) { when = case.getCondition() }
|
|
|
|
query predicate propertyPatterns(PropertyPatternExpr pp) { any() }
|
|
|
|
query predicate propertyPatternChild(PropertyPatternExpr pp, int n, Expr child) {
|
|
child = pp.getPattern(n)
|
|
}
|
|
|
|
query predicate positionalPatterns(PositionalPatternExpr pp, Expr parent, int n, Expr child) {
|
|
parent = pp.getParent() and
|
|
child = pp.getPattern(n)
|
|
}
|
|
|
|
query predicate caseStatements(CaseStmt case) { any() }
|
|
|
|
private class RecursivePatternCase extends CaseStmt {
|
|
private RecursivePatternExpr p;
|
|
|
|
RecursivePatternCase() { p = this.getPattern() }
|
|
|
|
RecursivePatternExpr getRecursivePattern() { result = p }
|
|
}
|
|
|
|
query predicate recursivePatternCases(RecursivePatternCase case, RecursivePatternExpr p) {
|
|
p = case.getRecursivePattern()
|
|
}
|
|
|
|
query predicate recursiveCasePatternDecl(
|
|
RecursivePatternCase case, TypeAccess ta, LocalVariableDeclExpr decl
|
|
) {
|
|
ta = case.getRecursivePattern().getTypeAccess() and
|
|
decl = case.getRecursivePattern().getVariableDeclExpr()
|
|
}
|
|
|
|
query predicate recursivePatternDecl(RecursivePatternExpr pattern, LocalVariableDeclExpr decl) {
|
|
decl = pattern.getVariableDeclExpr()
|
|
}
|
|
|
|
query predicate recursivePatterns(RecursivePatternExpr expr) { any() }
|
|
|
|
query predicate discards(DiscardExpr discard) { any() }
|
|
|
|
query predicate isExprs(IsExpr is) { any() }
|
|
|
|
private class IsRecursivePatternExpr extends IsExpr {
|
|
private RecursivePatternExpr p;
|
|
|
|
IsRecursivePatternExpr() { p = this.getPattern() }
|
|
|
|
RecursivePatternExpr getRecursivePattern() { result = p }
|
|
}
|
|
|
|
query predicate isRecursivePatternExpr(IsRecursivePatternExpr expr) { any() }
|
|
|
|
query predicate isRecursivePatternExprWithDecl(
|
|
IsRecursivePatternExpr expr, LocalVariableDeclExpr decl
|
|
) {
|
|
decl = expr.getRecursivePattern().getVariableDeclExpr()
|
|
}
|
|
|
|
query predicate labeledPatternExpr(LabeledPatternExpr e, string s) { s = e.getLabel() }
|
|
|
|
query predicate tupleTypes(TupleExpr te, Type t) { te.getType() = t }
|