Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 5fae440

Browse files
committed
C#: Reverse assignment child nodes in AST
1 parent ee9a40e commit 5fae440

31 files changed

Lines changed: 1627 additions & 1609 deletions

File tree

csharp/ql/src/semmle/code/csharp/PrintAst.qll

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,24 @@ final class LocalFunctionStmtNode extends ControlFlowElementNode {
283283
}
284284
}
285285

286+
/**
287+
* A node representing an `Assignment`.
288+
* Left and right children are shown in this order.
289+
*/
290+
final class AssignmentNode extends ControlFlowElementNode {
291+
Assignment assignment;
292+
293+
AssignmentNode() { assignment = element }
294+
295+
override ElementNode getChild(int childIndex) {
296+
childIndex = 0 and
297+
result.getElement() = assignment.getLValue()
298+
or
299+
childIndex = 1 and
300+
result.getElement() = assignment.getRValue()
301+
}
302+
}
303+
286304
/**
287305
* A node representing a `Callable`, such as method declaration.
288306
*/

csharp/ql/test/experimental/ir/ir/PrintAst.expected

Lines changed: 256 additions & 256 deletions
Large diffs are not rendered by default.

csharp/ql/test/library-tests/arguments/PrintAst.expected

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ arguments.cs:
1515
# 10| 4: [BlockStmt] {...}
1616
# 11| 0: [ExprStmt] ...;
1717
# 11| 0: [AssignExpr] ... = ...
18-
# 11| 0: [ParameterAccess] access to parameter x
19-
# 11| 1: [ParameterAccess] access to parameter y
18+
# 11| 0: [ParameterAccess] access to parameter y
19+
# 11| 1: [ParameterAccess] access to parameter x
2020
# 14| 6: [Method] f1
2121
#-----| 2: (Parameters)
2222
# 14| 0: [Parameter] x
@@ -32,14 +32,14 @@ arguments.cs:
3232
# 19| 4: [BlockStmt] {...}
3333
# 20| 0: [ExprStmt] ...;
3434
# 20| 0: [AssignExpr] ... = ...
35-
# 20| 0: [ParameterAccess] access to parameter x
36-
# 20| 1: [ParameterAccess] access to parameter y
35+
# 20| 0: [ParameterAccess] access to parameter y
36+
# 20| 1: [ParameterAccess] access to parameter x
3737
# 23| 8: [Method] f
3838
# 24| 4: [BlockStmt] {...}
3939
# 25| 0: [LocalVariableDeclStmt] ... ...;
4040
# 25| 0: [LocalVariableDeclAndInitExpr] Int32 x = ...
41-
# 25| 0: [IntLiteral] 1
42-
# 25| 1: [LocalVariableAccess] access to local variable x
41+
# 25| 0: [LocalVariableAccess] access to local variable x
42+
# 25| 1: [IntLiteral] 1
4343
# 27| 1: [ExprStmt] ...;
4444
# 27| 0: [MethodCall] call to method f1
4545
# 27| 0: [IntLiteral] 2
@@ -129,33 +129,33 @@ arguments.cs:
129129
# 53| 4: [BlockStmt] {...}
130130
# 54| 0: [ExprStmt] ...;
131131
# 54| 0: [AssignExpr] ... = ...
132-
# 54| 0: [IntLiteral] 0
133-
# 54| 1: [PropertyCall] access to property Prop
132+
# 54| 0: [PropertyCall] access to property Prop
133+
# 54| 1: [IntLiteral] 0
134134
# 55| 1: [ExprStmt] ...;
135135
# 55| 0: [AssignExpr] ... = ...
136-
# 55| 0: [IndexerCall] access to indexer
136+
# 55| 0: [PropertyCall] access to property Prop
137+
# 55| 1: [IndexerCall] access to indexer
137138
# 55| -1: [ThisAccess] this access
138139
# 55| 0: [IntLiteral] 1
139140
# 55| 1: [IntLiteral] 2
140-
# 55| 1: [PropertyCall] access to property Prop
141141
# 56| 2: [ExprStmt] ...;
142142
# 56| 0: [AssignExpr] ... = ...
143143
# 56| 0: [TupleExpr] (..., ...)
144-
# 56| 0: [IntLiteral] 5
145-
# 56| 1: [IntLiteral] 6
146-
# 56| 1: [TupleExpr] (..., ...)
147144
# 56| 0: [PropertyCall] access to property Prop
148145
# 56| 1: [IndexerCall] access to indexer
149146
# 56| -1: [ThisAccess] this access
150147
# 56| 0: [IntLiteral] 3
151148
# 56| 1: [IntLiteral] 4
149+
# 56| 1: [TupleExpr] (..., ...)
150+
# 56| 0: [IntLiteral] 5
151+
# 56| 1: [IntLiteral] 6
152152
# 57| 3: [ExprStmt] ...;
153153
# 57| 0: [PostIncrExpr] ...++
154154
# 57| 0: [PropertyCall] access to property Prop
155155
# 58| 4: [ExprStmt] ...;
156156
# 58| 0: [AssignAddExpr] ... += ...
157-
# 58| 0: [IntLiteral] 7
158-
# 58| 1: [PropertyCall] access to property Prop
157+
# 58| 0: [PropertyCall] access to property Prop
158+
# 58| 1: [IntLiteral] 7
159159
# 59| 5: [ExprStmt] ...;
160160
# 59| 0: [PostIncrExpr] ...++
161161
# 59| 0: [IndexerCall] access to indexer
@@ -164,26 +164,26 @@ arguments.cs:
164164
# 59| 1: [IntLiteral] 9
165165
# 60| 6: [ExprStmt] ...;
166166
# 60| 0: [AssignAddExpr] ... += ...
167-
# 60| 0: [IntLiteral] 12
168-
# 60| 1: [IndexerCall] access to indexer
167+
# 60| 0: [IndexerCall] access to indexer
169168
# 60| -1: [ThisAccess] this access
170169
# 60| 0: [IntLiteral] 10
171170
# 60| 1: [IntLiteral] 11
171+
# 60| 1: [IntLiteral] 12
172172
# 61| 7: [LocalVariableDeclStmt] ... ...;
173173
# 61| 0: [LocalVariableDeclAndInitExpr] (Int32,Int32) tuple = ...
174-
# 61| 0: [TupleExpr] (..., ...)
174+
# 61| 0: [LocalVariableAccess] access to local variable tuple
175+
# 61| 1: [TupleExpr] (..., ...)
175176
# 61| 0: [IntLiteral] 13
176177
# 61| 1: [IntLiteral] 14
177-
# 61| 1: [LocalVariableAccess] access to local variable tuple
178178
# 62| 8: [ExprStmt] ...;
179179
# 62| 0: [AssignExpr] ... = ...
180-
# 62| 0: [LocalVariableAccess] access to local variable tuple
181-
# 62| 1: [TupleExpr] (..., ...)
180+
# 62| 0: [TupleExpr] (..., ...)
182181
# 62| 0: [PropertyCall] access to property Prop
183182
# 62| 1: [IndexerCall] access to indexer
184183
# 62| -1: [ThisAccess] this access
185184
# 62| 0: [IntLiteral] 15
186185
# 62| 1: [IntLiteral] 16
186+
# 62| 1: [LocalVariableAccess] access to local variable tuple
187187
# 66| 14: [Method] f6
188188
#-----| 0: (Attributes)
189189
# 65| 1: [Attribute] [My(...)]

csharp/ql/test/library-tests/assignments/PrintAst.expected

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,37 +4,37 @@ Assignments.cs:
44
# 4| 4: [BlockStmt] {...}
55
# 5| 0: [LocalVariableDeclStmt] ... ...;
66
# 5| 0: [LocalVariableDeclAndInitExpr] Int32 x = ...
7-
# 5| 0: [IntLiteral] 0
8-
# 5| 1: [LocalVariableAccess] access to local variable x
7+
# 5| 0: [LocalVariableAccess] access to local variable x
8+
# 5| 1: [IntLiteral] 0
99
# 6| 1: [ExprStmt] ...;
1010
# 6| 0: [AssignAddExpr] ... += ...
11-
# 6| 0: [IntLiteral] 1
12-
# 6| 1: [LocalVariableAccess] access to local variable x
11+
# 6| 0: [LocalVariableAccess] access to local variable x
12+
# 6| 1: [IntLiteral] 1
1313
# 8| 2: [LocalVariableDeclStmt] ... ...;
1414
# 8| 0: [LocalVariableDeclAndInitExpr] dynamic d = ...
15-
# 8| 0: [CastExpr] (...) ...
15+
# 8| 0: [LocalVariableAccess] access to local variable d
16+
# 8| 1: [CastExpr] (...) ...
1617
# 8| 0: [IntLiteral] 0
17-
# 8| 1: [LocalVariableAccess] access to local variable d
1818
# 9| 3: [ExprStmt] ...;
1919
# 9| 0: [AssignSubExpr] ... -= ...
20-
# 9| 0: [IntLiteral] 2
21-
# 9| 1: [LocalVariableAccess] access to local variable d
20+
# 9| 0: [LocalVariableAccess] access to local variable d
21+
# 9| 1: [IntLiteral] 2
2222
# 11| 4: [LocalVariableDeclStmt] ... ...;
2323
# 11| 0: [LocalVariableDeclAndInitExpr] Assignments a = ...
24-
# 11| 0: [ObjectCreation] object creation of type Assignments
25-
# 11| 1: [LocalVariableAccess] access to local variable a
24+
# 11| 0: [LocalVariableAccess] access to local variable a
25+
# 11| 1: [ObjectCreation] object creation of type Assignments
2626
# 12| 5: [ExprStmt] ...;
2727
# 12| 0: [AssignAddExpr] ... += ...
28-
# 12| 0: [ThisAccess] this access
29-
# 12| 1: [LocalVariableAccess] access to local variable a
28+
# 12| 0: [LocalVariableAccess] access to local variable a
29+
# 12| 1: [ThisAccess] this access
3030
# 14| 6: [ExprStmt] ...;
3131
# 14| 0: [AddEventExpr] ... += ...
32-
# 14| 0: [LambdaExpr] (...) => ...
32+
# 14| 0: [EventAccess,EventCall] access to event Event
33+
# 14| 1: [LambdaExpr] (...) => ...
3334
#-----| 2: (Parameters)
3435
# 14| 0: [Parameter] sender
3536
# 14| 1: [Parameter] e
3637
# 14| 4: [BlockStmt] {...}
37-
# 14| 1: [EventAccess,EventCall] access to event Event
3838
# 17| 6: [AddOperator] +
3939
#-----| 2: (Parameters)
4040
# 17| 0: [Parameter] x

csharp/ql/test/library-tests/constructors/PrintAst.expected

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,5 @@ constructors.cs:
1313
# 15| 4: [BlockStmt] {...}
1414
# 16| 0: [LocalVariableDeclStmt] ... ...;
1515
# 16| 0: [LocalVariableDeclAndInitExpr] Int32 i = ...
16-
# 16| 0: [IntLiteral] 0
17-
# 16| 1: [LocalVariableAccess] access to local variable i
16+
# 16| 0: [LocalVariableAccess] access to local variable i
17+
# 16| 1: [IntLiteral] 0

csharp/ql/test/library-tests/conversion/operator/PrintAst.expected

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,6 @@ Operator.cs:
1212
# 12| 4: [BlockStmt] {...}
1313
# 13| 0: [ExprStmt] ...;
1414
# 13| 0: [AssignExpr] ... = ...
15-
# 13| 0: [OperatorCall] call to operator implicit conversion
15+
# 13| 0: [FieldAccess] access to field x2
16+
# 13| 1: [OperatorCall] call to operator implicit conversion
1617
# 13| 0: [FieldAccess] access to field x1
17-
# 13| 1: [FieldAccess] access to field x2

0 commit comments

Comments
 (0)