Skip to content

Commit de5ab8e

Browse files
committed
C#: Introduce a TuplePatternExpr class.
1 parent bb800d9 commit de5ab8e

4 files changed

Lines changed: 16 additions & 9 deletions

File tree

‎csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -560,7 +560,7 @@ module LocalFlow {
560560
or
561561
exists(AssignExpr ae | ae.getLeftOperand().(TupleExpr) = e2 and ae.getRightOperand() = e1)
562562
or
563-
exists(ControlFlowElement cfe | cfe = e2.(TupleExpr).(PatternExpr).getPatternMatch() |
563+
exists(ControlFlowElement cfe | cfe = e2.(TuplePatternExpr).getPatternMatch() |
564564
cfe.(IsExpr).getExpr() = e1
565565
or
566566
exists(Switch sw | sw.getACase() = cfe and sw.getExpr() = e1)

‎csharp/ql/lib/semmle/code/csharp/exprs/Expr.qll‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -547,6 +547,13 @@ class PositionalPatternExpr extends PatternExpr, @positional_pattern_expr {
547547
override string getAPrimaryQlClass() { result = "PositionalPatternExpr" }
548548
}
549549

550+
/**
551+
* A tuple pattern. For example, `var (x, y)`.
552+
*/
553+
class TuplePatternExpr extends TupleExpr, PatternExpr {
554+
override string getAPrimaryQlClass() { result = "TuplePatternExpr" }
555+
}
556+
550557
/** A list pattern. For example `[1, 2, int y]` in `x is [1, 2, int y]`. */
551558
class ListPatternExpr extends PatternExpr, @list_pattern_expr {
552559
override string toString() { result = "[ ... ]" }

‎csharp/ql/test/library-tests/csharp8/PrintAst.expected‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -929,7 +929,7 @@ patterns.cs:
929929
# 57| 1: [ConstantPatternExpr,IntLiteral] 2
930930
# 58| 10: [BreakStmt] break;
931931
# 59| 11: [CaseStmt] case ...:
932-
# 59| 0: [TupleExpr] (..., ...)
932+
# 59| 0: [TuplePatternExpr] (..., ...)
933933
# 59| 0: [VariablePatternExpr] Int32 x
934934
# 59| 1: [VariablePatternExpr] Int32 y
935935
# 60| 12: [BreakStmt] break;
@@ -1156,7 +1156,7 @@ patterns.cs:
11561156
# 130| 1: [ConstantPatternExpr,IntLiteral] 2
11571157
# 130| 2: [IntLiteral] 2
11581158
# 131| 3: [SwitchCaseExpr] ... => ...
1159-
# 131| 0: [TupleExpr] (..., ...)
1159+
# 131| 0: [TuplePatternExpr] (..., ...)
11601160
# 131| 0: [VariablePatternExpr] Int32 x
11611161
# 131| 1: [DiscardPatternExpr] _
11621162
# 131| 2: [IntLiteral] 3

‎csharp/ql/test/library-tests/dataflow/tuples/PrintAst.expected‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -262,9 +262,9 @@ Tuples.cs:
262262
# 65| -1: [LocalVariableAccess] access to local variable t
263263
# 66| 4: [BreakStmt] break;
264264
# 67| 5: [CaseStmt] case ...:
265-
# 67| 0: [TupleExpr] (..., ...)
265+
# 67| 0: [TuplePatternExpr] (..., ...)
266266
# 67| 0: [VariablePatternExpr] String a
267-
# 67| 1: [TupleExpr] (..., ...)
267+
# 67| 1: [TuplePatternExpr] (..., ...)
268268
# 67| 0: [VariablePatternExpr] Int32 b
269269
# 67| 1: [VariablePatternExpr] String c
270270
# 67| 2: [DiscardPatternExpr] _
@@ -302,7 +302,7 @@ Tuples.cs:
302302
# 78| 0: [RecursivePatternExpr] { ... }
303303
# 78| 2: [PositionalPatternExpr] ( ... )
304304
# 78| 0: [VariablePatternExpr] String a
305-
# 78| 1: [TupleExpr] (..., ...)
305+
# 78| 1: [TuplePatternExpr] (..., ...)
306306
# 78| 0: [VariablePatternExpr] Int32 b
307307
# 78| 1: [VariablePatternExpr] String c
308308
# 78| 2: [DiscardPatternExpr] _
@@ -335,9 +335,9 @@ Tuples.cs:
335335
# 87| 7: [IfStmt] if (...) ...
336336
# 87| 0: [IsExpr] ... is ...
337337
# 87| 0: [LocalVariableAccess] access to local variable x
338-
# 87| 1: [TupleExpr] (..., ...)
338+
# 87| 1: [TuplePatternExpr] (..., ...)
339339
# 87| 0: [VariablePatternExpr] String p
340-
# 87| 1: [TupleExpr] (..., ...)
340+
# 87| 1: [TuplePatternExpr] (..., ...)
341341
# 87| 0: [VariablePatternExpr] Int32 q
342342
# 87| 1: [VariablePatternExpr] String r
343343
# 87| 2: [DiscardPatternExpr] _
@@ -417,7 +417,7 @@ Tuples.cs:
417417
# 107| 6: [SwitchStmt] switch (...) {...}
418418
# 107| 0: [LocalVariableAccess] access to local variable r
419419
# 109| 0: [CaseStmt] case ...:
420-
# 109| 0: [TupleExpr] (..., ...)
420+
# 109| 0: [TuplePatternExpr] (..., ...)
421421
# 109| 0: [VariablePatternExpr] String x
422422
# 109| 1: [VariablePatternExpr] Int32 y
423423
# 110| 1: [ExprStmt] ...;

0 commit comments

Comments
 (0)