mirror of
https://github.com/github/codeql.git
synced 2025-12-16 16:53:25 +01:00
- Extract names of properties in a propery match, using the `exprorstmt_name` relation. - Simplify extraction of properties by not distinguishing between top-level patterns and nested patterns. - Introduce `PatternExpr` to capture patterns in `is` expressions, `case` statements, and `switch` expression arms. - Generalize `IsTypeExpr`, `IsPatternExpr`, `IsRecursivePatternExpr`, and `IsConstantExpr` to just `IsExpr` with a member predicate `PatternExpr getPattern()`. - Generalize `TypeCase`, `RecursivePatternCase`, and `ConstCase` to just `CaseStmt` with a member predicate `PatternExpr getPattern()`. - Introduce classes `Switch` and `Case` as base classes of switch statements/expressions and case statements/switch expression arms, respectively. - Simplify CFG logic using the generalized classes. - Generalize guards library to cover `switch` expressions tests. - Generalize data flow library to cover `switch` expression assignments.
8 lines
215 B
Plaintext
8 lines
215 B
Plaintext
import csharp
|
|
|
|
from IsExpr e, boolean isVar, VariablePatternExpr vpe
|
|
where
|
|
vpe = e.getPattern() and
|
|
if vpe.isImplicitlyTyped() then isVar = true else isVar = false
|
|
select e, vpe.getType().toString(), vpe, isVar
|