Skip to content

Commit f496055

Browse files
committed
Ruby: CFG make more expressions post-order
1 parent a4ea712 commit f496055

File tree

3 files changed

+20
-20
lines changed

3 files changed

+20
-20
lines changed

ruby/ql/lib/codeql/ruby/controlflow/internal/ControlFlowGraphImpl.qll

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -107,14 +107,8 @@ module Trees {
107107
}
108108
}
109109

110-
private class ArgumentListTree extends StandardTree, ArgumentList {
110+
private class ArgumentListTree extends StandardPostOrderTree, ArgumentList {
111111
final override ControlFlowTree getChildElement(int i) { result = this.getElement(i) }
112-
113-
final override predicate first(AstNode first) { first(this.getFirstChildElement(), first) }
114-
115-
final override predicate last(AstNode last, Completion c) {
116-
last(this.getLastChildElement(), last, c)
117-
}
118112
}
119113

120114
private class AssignExprTree extends StandardPostOrderTree, AssignExpr {
@@ -983,6 +977,8 @@ module Trees {
983977
}
984978
}
985979

980+
private class ForwardedArgumentsTree extends LeafTree, ForwardedArguments { }
981+
986982
private class ForwardParameterTree extends LeafTree, ForwardParameter { }
987983

988984
private class GlobalVariableTree extends LeafTree, GlobalVariableAccess { }
@@ -995,7 +991,7 @@ module Trees {
995991

996992
private class HashSplatParameterTree extends NonDefaultValueParameterTree, HashSplatParameter { }
997993

998-
private class HereDocTree extends StandardPreOrderTree, HereDoc {
994+
private class HereDocTree extends StandardPostOrderTree, HereDoc {
999995
final override ControlFlowTree getChildElement(int i) { result = this.getComponent(i) }
1000996
}
1001997

@@ -1355,14 +1351,8 @@ module Trees {
13551351
}
13561352
}
13571353

1358-
private class StringConcatenationTree extends StandardTree, StringConcatenation {
1354+
private class StringConcatenationTree extends StandardPostOrderTree, StringConcatenation {
13591355
final override ControlFlowTree getChildElement(int i) { result = this.getString(i) }
1360-
1361-
final override predicate first(AstNode first) { first(this.getFirstChildElement(), first) }
1362-
1363-
final override predicate last(AstNode last, Completion c) {
1364-
last(this.getLastChildElement(), last, c)
1365-
}
13661356
}
13671357

13681358
private class StringlikeLiteralTree extends StandardPostOrderTree, StringlikeLiteral {

ruby/ql/test/library-tests/controlflow/graph/Cfg.expected

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1847,6 +1847,9 @@ cfg.rb:
18471847
# 52| "a"
18481848
#-----| -> chained
18491849

1850+
# 52| "..." "..."
1851+
#-----| -> ... = ...
1852+
18501853
# 52| "#{...}"
18511854
#-----| -> "string"
18521855

@@ -1857,7 +1860,7 @@ cfg.rb:
18571860
#-----| -> #{...}
18581861

18591862
# 52| "string"
1860-
#-----| -> ... = ...
1863+
#-----| -> "..." "..."
18611864

18621865
# 54| ... = ...
18631866
#-----| -> Silly
@@ -2416,13 +2419,13 @@ cfg.rb:
24162419
#-----| -> b
24172420

24182421
# 108| self
2419-
#-----| -> <<SQL
2422+
#-----| -> table
24202423

24212424
# 108| ( ... )
24222425
#-----| -> call to puts
24232426

24242427
# 108| <<SQL
2425-
#-----| -> table
2428+
#-----| -> ( ... )
24262429

24272430
# 109| #{...}
24282431
#-----| -> type
@@ -2431,7 +2434,7 @@ cfg.rb:
24312434
#-----| -> #{...}
24322435

24332436
# 110| #{...}
2434-
#-----| -> ( ... )
2437+
#-----| -> <<SQL
24352438

24362439
# 110| type
24372440
#-----| -> #{...}
@@ -2704,6 +2707,9 @@ cfg.rb:
27042707
# 138| __synth__0
27052708
#-----| -> -1
27062709

2710+
# 138| ..., ...
2711+
#-----| -> * ...
2712+
27072713
# 138| 1
27082714
#-----| -> 2
27092715

@@ -2720,7 +2726,7 @@ cfg.rb:
27202726
#-----| -> 3
27212727

27222728
# 138| 3
2723-
#-----| -> * ...
2729+
#-----| -> ..., ...
27242730

27252731
# 140| M
27262732
#-----| -> Constant
@@ -3270,6 +3276,9 @@ cfg.rb:
32703276
#-----| -> b
32713277

32723278
# 197| b
3279+
#-----| -> ...
3280+
3281+
# 197| ...
32733282
#-----| -> call to bar
32743283

32753284
desugar.rb:

ruby/ql/test/library-tests/controlflow/graph/Nodes.expected

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,7 @@ positionalArguments
191191
| cfg.rb:191:3:191:10 | yield ... | cfg.rb:191:9:191:10 | 42 |
192192
| cfg.rb:194:16:194:21 | call to puts | cfg.rb:194:21:194:21 | x |
193193
| cfg.rb:197:3:197:13 | call to bar | cfg.rb:197:7:197:7 | b |
194+
| cfg.rb:197:3:197:13 | call to bar | cfg.rb:197:10:197:12 | ... |
194195
| desugar.rb:2:5:2:6 | ... + ... | desugar.rb:2:8:2:8 | 1 |
195196
| desugar.rb:6:3:6:13 | call to count= | desugar.rb:6:3:6:13 | ... = ... |
196197
| desugar.rb:10:3:10:10 | call to []= | desugar.rb:10:3:10:10 | ... = ... |

0 commit comments

Comments
 (0)