From cb21e8edda6620be3f167e3960e69996c4069b8b Mon Sep 17 00:00:00 2001 From: Arthur Baars Date: Thu, 18 Feb 2021 18:13:00 +0100 Subject: [PATCH] CFG: hide nodes that are not proper AstNodes --- ql/src/codeql_ruby/ast/internal/AST.qll | 22 - .../internal/ControlFlowGraphImpl.qll | 15 +- .../controlflow/graph/Cfg.expected | 787 +++--------------- ql/test/library-tests/variables/ssa.expected | 48 +- 4 files changed, 169 insertions(+), 703 deletions(-) diff --git a/ql/src/codeql_ruby/ast/internal/AST.qll b/ql/src/codeql_ruby/ast/internal/AST.qll index 8fb1159c83f..6cced8abe30 100644 --- a/ql/src/codeql_ruby/ast/internal/AST.qll +++ b/ql/src/codeql_ruby/ast/internal/AST.qll @@ -14,26 +14,4 @@ module AstNode { predicate child(string label, AstNode::Range child) { none() } } - - // TODO: Remove - private class RemoveWhenFullCoverage extends Range { - // Lists the entities that are currently used in tests but do not yet - // have an external ASTNode. Perhaps not all entities below need to be - // an AST node, for example we include the `in` keyword in `for` loops - // in the CFG, but not the AST - RemoveWhenFullCoverage() { - this = any(Generated::Method m).getName() - or - this = any(Generated::SingletonMethod m).getName() - or - this = any(Generated::Call c).getMethod() and - not this instanceof Generated::ScopeResolution - or - this instanceof Generated::RestAssignment - or - this instanceof Generated::Superclass - } - - override string toString() { result = "AstNode" } - } } diff --git a/ql/src/codeql_ruby/controlflow/internal/ControlFlowGraphImpl.qll b/ql/src/codeql_ruby/controlflow/internal/ControlFlowGraphImpl.qll index eb95602c468..e58f6fab749 100644 --- a/ql/src/codeql_ruby/controlflow/internal/ControlFlowGraphImpl.qll +++ b/ql/src/codeql_ruby/controlflow/internal/ControlFlowGraphImpl.qll @@ -203,7 +203,20 @@ private predicate succImpl(AstNode pred, AstNode succ, Completion c) { any(ControlFlowTree cft).succ(pred, succ, c) } -private predicate isHidden(ControlFlowTree t) { t.isHidden() } +private predicate isHidden(ControlFlowTree t) { + t.isHidden() + or + t = any(Method m).getName() + or + t = any(SingletonMethod m).getName() + or + t = any(Call c).getMethod() and + not t instanceof ScopeResolution + or + t instanceof RestAssignment + or + t instanceof Superclass +} private predicate succImplIfHidden(AstNode pred, AstNode succ) { isHidden(pred) and diff --git a/ql/test/library-tests/controlflow/graph/Cfg.expected b/ql/test/library-tests/controlflow/graph/Cfg.expected index 2857ce80056..a5bff7e49f4 100644 --- a/ql/test/library-tests/controlflow/graph/Cfg.expected +++ b/ql/test/library-tests/controlflow/graph/Cfg.expected @@ -26,10 +26,10 @@ cfg.rb: #-----| -> bar # 15| enter BEGIN { ... } -#-----| -> puts +#-----| -> "hello" # 19| enter END { ... } -#-----| -> puts +#-----| -> "world" # 25| enter { ... } #-----| -> x @@ -41,7 +41,7 @@ cfg.rb: #-----| -> a # 69| enter print -#-----| -> puts +#-----| -> "silly" # 101| enter parameters #-----| -> value @@ -50,7 +50,7 @@ cfg.rb: #-----| -> x # 142| enter print -#-----| -> puts +#-----| -> "singleton" # 149| enter method #-----| -> x @@ -79,7 +79,7 @@ heredoc.rb: #-----| -> double_heredoc # 1| enter double_heredoc -#-----| -> puts +#-----| -> < b1 # 36| enter conditional_method_def -#-----| -> puts +#-----| -> "bla" # 40| enter constant_condition #-----| -> true @@ -175,9 +175,6 @@ break_ensure.rb: # 1| m1 #-----| -> m2 -# 1| m1 -#-----| -> m1 - # 1| elements #-----| -> elements @@ -218,29 +215,20 @@ break_ensure.rb: # 8| call to nil? #-----| false -> if ... -#-----| true -> puts +#-----| true -> "elements nil" # 8| elements -#-----| -> nil? - -# 8| nil? #-----| -> call to nil? # 9| call to puts #-----| -> if ... -# 9| puts -#-----| -> "elements nil" - # 9| "elements nil" #-----| -> call to puts # 13| m2 #-----| -> m3 -# 13| m2 -#-----| -> m2 - # 13| elements #-----| -> elements @@ -287,22 +275,16 @@ break_ensure.rb: # 20| call to nil? #-----| false -> if ... -#-----| true -> puts +#-----| true -> "elements nil" # 20| [ensure: break] call to nil? #-----| false -> [ensure: break] if ... -#-----| true -> [ensure: break] puts +#-----| true -> [ensure: break] "elements nil" # 20| elements -#-----| -> nil? - -# 20| [ensure: break] elements -#-----| -> [ensure: break] nil? - -# 20| nil? #-----| -> call to nil? -# 20| [ensure: break] nil? +# 20| [ensure: break] elements #-----| -> [ensure: break] call to nil? # 21| call to puts @@ -311,12 +293,6 @@ break_ensure.rb: # 21| [ensure: break] call to puts #-----| -> [ensure: break] if ... -# 21| puts -#-----| -> "elements nil" - -# 21| [ensure: break] puts -#-----| -> [ensure: break] "elements nil" - # 21| "elements nil" #-----| -> call to puts @@ -326,9 +302,6 @@ break_ensure.rb: # 27| m3 #-----| -> m4 -# 27| m3 -#-----| -> m3 - # 27| elements #-----| -> elements @@ -340,9 +313,6 @@ break_ensure.rb: #-----| true -> return # 29| elements -#-----| -> nil? - -# 29| nil? #-----| -> call to nil? # 30| return @@ -355,7 +325,7 @@ break_ensure.rb: #-----| -> [ensure: return] elements # 33| for ... in ... -#-----| -> puts +#-----| -> "Done" # 33| [ensure: return] for ... in ... #-----| return -> exit m3 (normal) @@ -415,18 +385,12 @@ break_ensure.rb: # 41| call to puts #-----| -> exit m3 (normal) -# 41| puts -#-----| -> "Done" - # 41| "Done" #-----| -> call to puts # 44| m4 #-----| -> exit break_ensure.rb (normal) -# 44| m4 -#-----| -> m4 - # 44| elements #-----| -> elements @@ -448,7 +412,7 @@ break_ensure.rb: # 47| ... > ... #-----| false -> if ... -#-----| true -> raise +#-----| true -> "" # 47| element #-----| -> 1 @@ -459,9 +423,6 @@ break_ensure.rb: # 48| call to raise #-----| raise -> [ensure: raise] ensure ... -# 48| raise -#-----| -> "" - # 48| "" #-----| -> call to raise @@ -513,9 +474,6 @@ case.rb: # 1| if_in_case #-----| -> exit case.rb (normal) -# 1| if_in_case -#-----| -> if_in_case - # 2| case ... #-----| -> call to x1 @@ -537,14 +495,11 @@ case.rb: # 3| call to x2 #-----| false -> if ... -#-----| true -> puts +#-----| true -> "x2" # 3| call to puts #-----| -> if ... -# 3| puts -#-----| -> "x2" - # 3| "x2" #-----| -> call to puts @@ -552,15 +507,12 @@ case.rb: #-----| -> 2 # 4| 2 -#-----| match -> puts +#-----| match -> "2" #-----| no-match -> exit if_in_case (normal) # 4| call to puts #-----| -> exit if_in_case (normal) -# 4| puts -#-----| -> "2" - # 4| "2" #-----| -> call to puts @@ -568,9 +520,6 @@ cfg.rb: # 1| bar #-----| -> alias ... -# 1| bar -#-----| -> bar - # 3| alias ... #-----| -> foo @@ -605,7 +554,7 @@ cfg.rb: #-----| -> %i(...) # 9| %w(...) -#-----| -> puts +#-----| -> 4 # 9| "one#{...}" #-----| -> "another" @@ -622,9 +571,6 @@ cfg.rb: # 12| call to puts #-----| -> BEGIN { ... } -# 12| puts -#-----| -> 4 - # 12| 4 #-----| -> call to puts @@ -634,9 +580,6 @@ cfg.rb: # 16| call to puts #-----| -> exit BEGIN { ... } (normal) -# 16| puts -#-----| -> "hello" - # 16| "hello" #-----| -> call to puts @@ -646,9 +589,6 @@ cfg.rb: # 20| call to puts #-----| -> exit END { ... } (normal) -# 20| puts -#-----| -> "world" - # 20| "world" #-----| -> call to puts @@ -662,35 +602,26 @@ cfg.rb: #-----| -> ... + ... # 25| call to times -#-----| -> puts +#-----| -> :puts # 25| 2 -#-----| -> times - -# 25| times #-----| -> { ... } # 25| { ... } #-----| -> call to times # 25| x -#-----| -> puts +#-----| -> x # 25| call to puts #-----| -> exit { ... } (normal) -# 25| puts -#-----| -> x - # 25| x #-----| -> call to puts # 27| call to puts #-----| -> Proc -# 27| puts -#-----| -> :puts - # 27| &... #-----| -> call to puts @@ -701,9 +632,6 @@ cfg.rb: #-----| -> true # 29| Proc -#-----| -> new - -# 29| new #-----| -> { ... } # 29| { ... } @@ -716,9 +644,6 @@ cfg.rb: #-----| -> exit { ... } (normal) # 29| x -#-----| -> call - -# 29| call #-----| -> call to call # 31| while ... @@ -743,9 +668,6 @@ cfg.rb: #-----| -> case ... # 39| self -#-----| -> puts - -# 39| puts #-----| -> 42 # 39| 42 @@ -761,15 +683,12 @@ cfg.rb: #-----| -> 1 # 42| 1 -#-----| match -> puts +#-----| match -> "one" #-----| no-match -> when ... # 42| call to puts #-----| -> case ... -# 42| puts -#-----| -> "one" - # 42| "one" #-----| -> call to puts @@ -778,31 +697,25 @@ cfg.rb: # 43| 2 #-----| no-match -> 3 -#-----| match -> puts +#-----| match -> "some" # 43| 3 #-----| no-match -> 4 -#-----| match -> puts +#-----| match -> "some" # 43| 4 -#-----| match -> puts -#-----| no-match -> puts +#-----| match -> "some" +#-----| no-match -> "many" # 43| call to puts #-----| -> case ... -# 43| puts -#-----| -> "some" - # 43| "some" #-----| -> call to puts # 44| call to puts #-----| -> case ... -# 44| puts -#-----| -> "many" - # 44| "many" #-----| -> call to puts @@ -813,7 +726,7 @@ cfg.rb: #-----| -> b # 48| ... == ... -#-----| true -> puts +#-----| true -> "one" #-----| false -> when ... # 48| b @@ -825,9 +738,6 @@ cfg.rb: # 48| call to puts #-----| -> "a" -# 48| puts -#-----| -> "one" - # 48| "one" #-----| -> call to puts @@ -836,7 +746,7 @@ cfg.rb: # 49| ... == ... #-----| false -> b -#-----| true -> puts +#-----| true -> "some" # 49| b #-----| -> 0 @@ -845,7 +755,7 @@ cfg.rb: #-----| -> ... == ... # 49| ... > ... -#-----| true -> puts +#-----| true -> "some" #-----| false -> "a" # 49| b @@ -857,9 +767,6 @@ cfg.rb: # 49| call to puts #-----| -> "a" -# 49| puts -#-----| -> "some" - # 49| "some" #-----| -> call to puts @@ -899,11 +806,8 @@ cfg.rb: # 58| Silly #-----| -> Object -# 58| Superclass -#-----| -> 10-2i - # 58| Object -#-----| -> Superclass +#-----| -> 10-2i # 59| ... = ... #-----| -> call to b @@ -984,11 +888,8 @@ cfg.rb: # 63| pattern #-----| -> 1 -# 63| pattern -#-----| -> pattern - # 63| (..., ...) -#-----| -> puts +#-----| -> a # 63| a #-----| -> b @@ -997,10 +898,7 @@ cfg.rb: #-----| -> (..., ...) # 64| call to puts -#-----| -> puts - -# 64| puts -#-----| -> a +#-----| -> b # 64| a #-----| -> call to puts @@ -1008,14 +906,11 @@ cfg.rb: # 65| call to puts #-----| -> exit pattern (normal) -# 65| puts -#-----| -> b - # 65| b #-----| -> call to puts # 67| ... = ... -#-----| -> puts +#-----| -> items # 67| items #-----| -> ... = ... @@ -1035,9 +930,6 @@ cfg.rb: # 68| call to puts #-----| -> print -# 68| puts -#-----| -> items - # 68| ...[...] #-----| -> call to puts @@ -1050,15 +942,9 @@ cfg.rb: # 69| print #-----| -> 42 -# 69| print -#-----| -> print - # 70| call to puts #-----| -> exit print (normal) -# 70| puts -#-----| -> "silly" - # 70| "silly" #-----| -> call to puts @@ -1107,26 +993,20 @@ cfg.rb: #-----| -> elsif ... # 78| ; -#-----| -> puts +#-----| -> "ok" # 83| call to puts #-----| -> ensure ... -# 83| puts -#-----| -> "ok" - # 83| "ok" #-----| -> call to puts # 84| ensure ... -#-----| -> puts +#-----| -> "end" # 85| call to puts #-----| -> x -# 85| puts -#-----| -> "end" - # 85| "end" #-----| -> call to puts @@ -1168,7 +1048,7 @@ cfg.rb: #-----| -> [...] # 91| if ... -#-----| -> puts +#-----| -> x # 91| ... > ... #-----| false -> if ... @@ -1186,9 +1066,6 @@ cfg.rb: # 92| call to puts #-----| -> In -# 92| puts -#-----| -> x - # 92| x #-----| -> call to puts @@ -1270,9 +1147,6 @@ cfg.rb: # 101| parameters #-----| -> "healthy" -# 101| parameters -#-----| -> parameters - # 101| value #-----| no-match -> 42 #-----| match -> key @@ -1284,14 +1158,11 @@ cfg.rb: #-----| -> kwargs # 101| kwargs -#-----| -> puts +#-----| -> value # 102| call to puts #-----| -> kwargs -# 102| puts -#-----| -> value - # 102| value #-----| -> call to puts @@ -1317,7 +1188,7 @@ cfg.rb: #-----| -> type # 107| ... = ... -#-----| -> puts +#-----| -> < ... = ... @@ -1328,9 +1199,6 @@ cfg.rb: # 108| call to puts #-----| -> b -# 108| puts -#-----| -> < call to puts @@ -1355,15 +1223,12 @@ cfg.rb: # 113| call to puts #-----| -> ... if ... -# 113| puts -#-----| -> "hi" - # 113| "hi" #-----| -> call to puts # 113| ... > ... #-----| false -> ... if ... -#-----| true -> puts +#-----| true -> "hi" # 113| b #-----| -> 10 @@ -1543,7 +1408,7 @@ cfg.rb: #-----| -> 1 # 133| ... / ... -#-----| raise -> puts +#-----| raise -> "div by zero" #-----| -> 1 # 133| 1 @@ -1555,9 +1420,6 @@ cfg.rb: # 133| call to puts #-----| -> 1 -# 133| puts -#-----| -> "div by zero" - # 133| "div by zero" #-----| -> call to puts @@ -1567,11 +1429,8 @@ cfg.rb: # 135| (..., ...) #-----| -> ... = ... -# 135| RestAssignment -#-----| -> last - # 135| init -#-----| -> RestAssignment +#-----| -> last # 135| last #-----| -> (..., ...) @@ -1601,9 +1460,6 @@ cfg.rb: #-----| -> Constant # 138| M -#-----| -> itself - -# 138| itself #-----| -> call to itself # 138| Constant @@ -1613,31 +1469,19 @@ cfg.rb: #-----| -> Silly # 140| call to itself -#-----| -> Setter +#-----| -> setter= # 140| Silly -#-----| -> itself - -# 140| itself #-----| -> call to itself # 141| setter= #-----| -> print -# 141| Setter -#-----| -> setter= - # 142| print #-----| -> Silly -# 142| print -#-----| -> print - # 143| call to puts -#-----| -> puts - -# 143| puts -#-----| -> "singleton" +#-----| -> call to super # 143| "singleton" #-----| -> call to puts @@ -1645,16 +1489,10 @@ cfg.rb: # 144| call to puts #-----| -> exit print (normal) -# 144| puts -#-----| -> call to super - # 144| call to print #-----| -> call to puts # 144| call to super -#-----| -> print - -# 144| print #-----| -> call to print # 148| ... = ... @@ -1667,9 +1505,6 @@ cfg.rb: #-----| -> silly # 148| Silly -#-----| -> new - -# 148| new #-----| -> call to new # 149| method @@ -1678,26 +1513,17 @@ cfg.rb: # 149| silly #-----| -> method -# 149| method -#-----| -> method - # 149| x -#-----| -> puts +#-----| -> x # 150| call to puts #-----| -> exit method (normal) -# 150| puts -#-----| -> x - # 150| x #-----| -> call to puts # 153| two_parameters -#-----| -> two_parameters - -# 153| two_parameters -#-----| -> two_parameters +#-----| -> 1 # 153| a #-----| -> b @@ -1708,9 +1534,6 @@ cfg.rb: # 155| call to two_parameters #-----| -> call to __FILE__ -# 155| two_parameters -#-----| -> 1 - # 155| *... #-----| -> call to two_parameters @@ -1811,8 +1634,8 @@ cfg.rb: #-----| -> x # 169| ... == ... -#-----| false -> puts -#-----| true -> puts +#-----| false -> "hi" +#-----| true -> "bye" # 169| x #-----| -> 10 @@ -1823,18 +1646,12 @@ cfg.rb: # 169| call to puts #-----| -> unless ... -# 169| puts -#-----| -> "hi" - # 169| "hi" #-----| -> call to puts # 169| call to puts #-----| -> unless ... -# 169| puts -#-----| -> "bye" - # 169| "bye" #-----| -> call to puts @@ -1844,15 +1661,12 @@ cfg.rb: # 171| call to puts #-----| -> ... unless ... -# 171| puts -#-----| -> "hi" - # 171| "hi" #-----| -> call to puts # 171| ... == ... #-----| true -> ... unless ... -#-----| false -> puts +#-----| false -> "hi" # 171| x #-----| -> 0 @@ -1874,7 +1688,7 @@ cfg.rb: #-----| -> ... > ... # 173| ... += ... -#-----| -> puts +#-----| -> "hello" # 173| x #-----| -> 10 @@ -1885,9 +1699,6 @@ cfg.rb: # 173| call to puts #-----| -> x -# 173| puts -#-----| -> "hello" - # 173| "hello" #-----| -> call to puts @@ -1909,9 +1720,6 @@ cfg.rb: # 176| call to puts #-----| -> i -# 176| puts -#-----| -> "hello" - # 176| "hello" #-----| -> call to puts @@ -1926,7 +1734,7 @@ cfg.rb: # 176| ... == ... #-----| true -> ... until ... -#-----| false -> puts +#-----| false -> "hello" # 176| i #-----| -> 10 @@ -1966,7 +1774,7 @@ cfg.rb: #-----| -> ... += ... # 181| if ... -#-----| -> puts +#-----| -> x # 181| ... == ... #-----| false -> if ... @@ -1984,9 +1792,6 @@ cfg.rb: # 182| call to puts #-----| -> x -# 182| puts -#-----| -> x - # 182| x #-----| -> call to puts @@ -1999,9 +1804,6 @@ cfg.rb: # 185| call to puts #-----| -> i -# 185| puts -#-----| -> "hello" - # 185| "hello" #-----| -> call to puts @@ -2016,7 +1818,7 @@ cfg.rb: # 185| ... != ... #-----| false -> ... while ... -#-----| true -> puts +#-----| true -> "hello" # 185| i #-----| -> 0 @@ -2025,10 +1827,7 @@ cfg.rb: #-----| -> ... != ... # 187| run_block -#-----| -> run_block - -# 187| run_block -#-----| -> run_block +#-----| -> { ... } # 188| yield ... #-----| -> 42 @@ -2038,21 +1837,15 @@ cfg.rb: # 191| call to run_block #-----| -> exit cfg.rb (normal) -# 191| run_block -#-----| -> { ... } - # 191| { ... } #-----| -> call to run_block # 191| x -#-----| -> puts +#-----| -> x # 191| call to puts #-----| -> exit { ... } (normal) -# 191| puts -#-----| -> x - # 191| x #-----| -> call to puts @@ -2060,18 +1853,15 @@ exit.rb: # 1| m1 #-----| -> m2 -# 1| m1 -#-----| -> m1 - # 1| x #-----| -> x # 2| if ... -#-----| -> puts +#-----| -> "x <= 2" # 2| ... > ... #-----| false -> if ... -#-----| true -> exit +#-----| true -> 1 # 2| x #-----| -> 2 @@ -2082,36 +1872,27 @@ exit.rb: # 3| call to exit #-----| exit -> exit m1 (abnormal) -# 3| exit -#-----| -> 1 - # 3| 1 #-----| -> call to exit # 5| call to puts #-----| -> exit m1 (normal) -# 5| puts -#-----| -> "x <= 2" - # 5| "x <= 2" #-----| -> call to puts # 8| m2 #-----| -> exit exit.rb (normal) -# 8| m2 -#-----| -> m2 - # 8| x #-----| -> x # 9| if ... -#-----| -> puts +#-----| -> "x <= 2" # 9| ... > ... #-----| false -> if ... -#-----| true -> abort +#-----| true -> "abort!" # 9| x #-----| -> 2 @@ -2122,18 +1903,12 @@ exit.rb: # 10| call to abort #-----| exit -> exit m2 (abnormal) -# 10| abort -#-----| -> "abort!" - # 10| "abort!" #-----| -> call to abort # 12| call to puts #-----| -> exit m2 (normal) -# 12| puts -#-----| -> "x <= 2" - # 12| "x <= 2" #-----| -> call to puts @@ -2141,15 +1916,9 @@ heredoc.rb: # 1| double_heredoc #-----| -> exit heredoc.rb (normal) -# 1| double_heredoc -#-----| -> double_heredoc - # 2| call to puts #-----| -> exit double_heredoc (normal) -# 2| puts -#-----| -> < < m2 -# 1| m1 -#-----| -> m1 - # 1| x #-----| -> x @@ -2170,7 +1936,7 @@ ifs.rb: #-----| -> exit m1 (normal) # 2| ... > ... -#-----| true -> puts +#-----| true -> "x is greater than 2" #-----| false -> x # 2| x @@ -2182,9 +1948,6 @@ ifs.rb: # 3| call to puts #-----| -> if ... -# 3| puts -#-----| -> "x is greater than 2" - # 3| "x is greater than 2" #-----| -> call to puts @@ -2192,10 +1955,10 @@ ifs.rb: #-----| -> if ... # 4| [false] ... and ... -#-----| false -> puts +#-----| false -> "I can't guess the number" # 4| [true] ... and ... -#-----| true -> puts +#-----| true -> "x is 1" # 4| [false] ... and ... #-----| false -> [false] ... and ... @@ -2248,27 +2011,18 @@ ifs.rb: # 5| call to puts #-----| -> elsif ... -# 5| puts -#-----| -> "x is 1" - # 5| "x is 1" #-----| -> call to puts # 7| call to puts #-----| -> elsif ... -# 7| puts -#-----| -> "I can't guess the number" - # 7| "I can't guess the number" #-----| -> call to puts # 11| m2 #-----| -> m3 -# 11| m2 -#-----| -> m2 - # 11| b #-----| -> b @@ -2294,14 +2048,11 @@ ifs.rb: # 18| m3 #-----| -> m4 -# 18| m3 -#-----| -> m3 - # 18| x #-----| -> x # 19| if ... -#-----| -> puts +#-----| -> x # 19| ... < ... #-----| false -> if ... @@ -2356,18 +2107,12 @@ ifs.rb: # 25| call to puts #-----| -> exit m3 (normal) -# 25| puts -#-----| -> x - # 25| x #-----| -> call to puts # 28| m4 #-----| -> m5 -# 28| m4 -#-----| -> m4 - # 28| b1 #-----| -> b2 @@ -2416,9 +2161,6 @@ ifs.rb: # 32| m5 #-----| -> 1 -# 32| m5 -#-----| -> m5 - # 32| b1 #-----| -> b2 @@ -2487,15 +2229,9 @@ ifs.rb: # 36| conditional_method_def #-----| -> ... unless ... -# 36| conditional_method_def -#-----| -> conditional_method_def - # 37| call to puts #-----| -> exit conditional_method_def (normal) -# 37| puts -#-----| -> "bla" - # 37| "bla" #-----| -> call to puts @@ -2512,9 +2248,6 @@ ifs.rb: # 40| constant_condition #-----| -> exit ifs.rb (normal) -# 40| constant_condition -#-----| -> constant_condition - # 41| if ... #-----| -> exit constant_condition (normal) @@ -2528,9 +2261,6 @@ loops.rb: # 1| m1 #-----| -> m2 -# 1| m1 -#-----| -> m1 - # 1| x #-----| -> x @@ -2539,7 +2269,7 @@ loops.rb: # 2| ... >= ... #-----| false -> while ... -#-----| true -> puts +#-----| true -> x # 2| x #-----| -> 0 @@ -2550,9 +2280,6 @@ loops.rb: # 3| call to puts #-----| -> x -# 3| puts -#-----| -> x - # 3| x #-----| -> call to puts @@ -2568,18 +2295,15 @@ loops.rb: # 8| m2 #-----| -> m3 -# 8| m2 -#-----| -> m2 - # 8| x #-----| -> x # 9| while ... -#-----| -> puts +#-----| -> "Done" # 9| ... >= ... #-----| false -> while ... -#-----| true -> puts +#-----| true -> x # 9| x #-----| -> 0 @@ -2590,9 +2314,6 @@ loops.rb: # 10| call to puts #-----| -> x -# 10| puts -#-----| -> x - # 10| x #-----| -> call to puts @@ -2606,7 +2327,7 @@ loops.rb: #-----| -> ... -= ... # 12| if ... -#-----| -> puts +#-----| -> "Iter" # 12| ... > ... #-----| true -> break @@ -2651,37 +2372,28 @@ loops.rb: #-----| -> ... > ... # 17| redo -#-----| redo -> puts +#-----| redo -> x # 19| call to puts #-----| -> x -# 19| puts -#-----| -> "Iter" - # 19| "Iter" #-----| -> call to puts # 21| call to puts #-----| -> exit m2 (normal) -# 21| puts -#-----| -> "Done" - # 21| "Done" #-----| -> call to puts # 24| m3 #-----| -> exit loops.rb (normal) -# 24| m3 -#-----| -> m3 - # 25| call to each #-----| -> exit m3 (normal) # 25| [...] -#-----| -> each +#-----| -> do ... end # 25| 1 #-----| -> 2 @@ -2692,21 +2404,15 @@ loops.rb: # 25| 3 #-----| -> [...] -# 25| each -#-----| -> do ... end - # 25| do ... end #-----| -> call to each # 25| x -#-----| -> puts +#-----| -> x # 26| call to puts #-----| -> exit do ... end (normal) -# 26| puts -#-----| -> x - # 26| x #-----| -> call to puts @@ -2717,11 +2423,8 @@ raise.rb: # 1| ExceptionA #-----| -> Exception -# 1| Superclass -#-----| -> ExceptionB - # 1| Exception -#-----| -> Superclass +#-----| -> ExceptionB # 4| ExceptionB #-----| -> ExceptionB @@ -2729,27 +2432,21 @@ raise.rb: # 4| ExceptionB #-----| -> Exception -# 4| Superclass -#-----| -> m1 - # 4| Exception -#-----| -> Superclass +#-----| -> m1 # 7| m1 #-----| -> m2 -# 7| m1 -#-----| -> m1 - # 7| x #-----| -> x # 8| if ... -#-----| -> puts +#-----| -> "x <= 2" # 8| ... > ... #-----| false -> if ... -#-----| true -> raise +#-----| true -> "x > 2" # 8| x #-----| -> 2 @@ -2760,43 +2457,31 @@ raise.rb: # 9| call to raise #-----| raise -> exit m1 (abnormal) -# 9| raise -#-----| -> "x > 2" - # 9| "x > 2" #-----| -> call to raise # 11| call to puts #-----| -> exit m1 (normal) -# 11| puts -#-----| -> "x <= 2" - # 11| "x <= 2" #-----| -> call to puts # 14| m2 #-----| -> m3 -# 14| m2 -#-----| -> m2 - # 14| b #-----| -> b # 16| if ... -#-----| -> puts +#-----| -> "End m2" # 16| b #-----| false -> if ... -#-----| true -> raise +#-----| true -> ExceptionA # 17| call to raise #-----| raise -> rescue ... -# 17| raise -#-----| -> ExceptionA - # 17| ExceptionA #-----| -> call to raise @@ -2804,14 +2489,11 @@ raise.rb: #-----| -> ExceptionA # 19| ExceptionA -#-----| match -> puts +#-----| match -> "Rescued" #-----| raise -> exit m2 (abnormal) # 20| call to puts -#-----| -> puts - -# 20| puts -#-----| -> "Rescued" +#-----| -> "End m2" # 20| "Rescued" #-----| -> call to puts @@ -2819,45 +2501,33 @@ raise.rb: # 22| call to puts #-----| -> exit m2 (normal) -# 22| puts -#-----| -> "End m2" - # 22| "End m2" #-----| -> call to puts # 25| m3 #-----| -> m4 -# 25| m3 -#-----| -> m3 - # 25| b #-----| -> b # 27| if ... -#-----| -> puts +#-----| -> "End m3" # 27| b #-----| false -> if ... -#-----| true -> raise +#-----| true -> ExceptionA # 28| call to raise #-----| raise -> rescue ... -# 28| raise -#-----| -> ExceptionA - # 28| ExceptionA #-----| -> call to raise # 30| rescue ... -#-----| -> puts +#-----| -> "Rescued" # 31| call to puts -#-----| -> puts - -# 31| puts -#-----| -> "Rescued" +#-----| -> "End m3" # 31| "Rescued" #-----| -> call to puts @@ -2865,34 +2535,25 @@ raise.rb: # 33| call to puts #-----| -> exit m3 (normal) -# 33| puts -#-----| -> "End m3" - # 33| "End m3" #-----| -> call to puts # 36| m4 #-----| -> m5 -# 36| m4 -#-----| -> m4 - # 36| b #-----| -> b # 38| if ... -#-----| -> puts +#-----| -> "End m4" # 38| b #-----| false -> if ... -#-----| true -> raise +#-----| true -> ExceptionA # 39| call to raise #-----| raise -> rescue ... -# 39| raise -#-----| -> ExceptionA - # 39| ExceptionA #-----| -> call to raise @@ -2900,13 +2561,10 @@ raise.rb: #-----| -> e # 41| e -#-----| -> puts +#-----| -> "Rescued {e}" # 42| call to puts -#-----| -> puts - -# 42| puts -#-----| -> "Rescued {e}" +#-----| -> "End m4" # 42| "Rescued {e}" #-----| -> call to puts @@ -2914,34 +2572,25 @@ raise.rb: # 44| call to puts #-----| -> exit m4 (normal) -# 44| puts -#-----| -> "End m4" - # 44| "End m4" #-----| -> call to puts # 47| m5 #-----| -> m6 -# 47| m5 -#-----| -> m5 - # 47| b #-----| -> b # 49| if ... -#-----| -> puts +#-----| -> "End m5" # 49| b #-----| false -> if ... -#-----| true -> raise +#-----| true -> ExceptionA # 50| call to raise #-----| raise -> rescue ... -# 50| raise -#-----| -> ExceptionA - # 50| ExceptionA #-----| -> call to raise @@ -2949,39 +2598,30 @@ raise.rb: #-----| -> e # 52| e -#-----| -> puts +#-----| -> "End m5" # 54| call to puts #-----| -> exit m5 (normal) -# 54| puts -#-----| -> "End m5" - # 54| "End m5" #-----| -> call to puts # 57| m6 #-----| -> m7 -# 57| m6 -#-----| -> m6 - # 57| b #-----| -> b # 59| if ... -#-----| -> puts +#-----| -> "End m6" # 59| b #-----| false -> if ... -#-----| true -> raise +#-----| true -> ExceptionA # 60| call to raise #-----| raise -> rescue ... -# 60| raise -#-----| -> ExceptionA - # 60| ExceptionA #-----| -> call to raise @@ -2997,13 +2637,10 @@ raise.rb: #-----| raise -> exit m6 (abnormal) # 62| e -#-----| -> puts +#-----| -> "Rescued {e}" # 63| call to puts -#-----| -> puts - -# 63| puts -#-----| -> "Rescued {e}" +#-----| -> "End m6" # 63| "Rescued {e}" #-----| -> call to puts @@ -3011,26 +2648,20 @@ raise.rb: # 65| call to puts #-----| -> exit m6 (normal) -# 65| puts -#-----| -> "End m6" - # 65| "End m6" #-----| -> call to puts # 68| m7 #-----| -> m8 -# 68| m7 -#-----| -> m7 - # 68| x #-----| -> x # 69| if ... -#-----| -> puts +#-----| -> "0 <= x <= 2" # 69| ... > ... -#-----| true -> raise +#-----| true -> "x > 2" #-----| false -> x # 69| x @@ -3042,9 +2673,6 @@ raise.rb: # 70| call to raise #-----| raise -> [ensure: raise] ensure ... -# 70| raise -#-----| -> "x > 2" - # 70| "x > 2" #-----| -> call to raise @@ -3070,20 +2698,17 @@ raise.rb: # 74| call to puts #-----| -> ensure ... -# 74| puts -#-----| -> "0 <= x <= 2" - # 74| "0 <= x <= 2" #-----| -> call to puts # 75| ensure ... -#-----| -> puts +#-----| -> "ensure" # 75| [ensure: return] ensure ... -#-----| -> [ensure: return] puts +#-----| -> [ensure: return] "ensure" # 75| [ensure: raise] ensure ... -#-----| -> [ensure: raise] puts +#-----| -> [ensure: raise] "ensure" # 76| call to puts #-----| -> exit m7 (normal) @@ -3094,15 +2719,6 @@ raise.rb: # 76| [ensure: raise] call to puts #-----| raise -> exit m7 (abnormal) -# 76| puts -#-----| -> "ensure" - -# 76| [ensure: return] puts -#-----| -> [ensure: return] "ensure" - -# 76| [ensure: raise] puts -#-----| -> [ensure: raise] "ensure" - # 76| "ensure" #-----| -> call to puts @@ -3115,26 +2731,20 @@ raise.rb: # 79| m8 #-----| -> m9 -# 79| m8 -#-----| -> m8 - # 79| x -#-----| -> puts +#-----| -> "Begin m8" # 80| call to puts #-----| -> x -# 80| puts -#-----| -> "Begin m8" - # 80| "Begin m8" #-----| -> call to puts # 82| if ... -#-----| -> puts +#-----| -> "0 <= x <= 2" # 82| ... > ... -#-----| true -> raise +#-----| true -> "x > 2" #-----| false -> x # 82| x @@ -3146,9 +2756,6 @@ raise.rb: # 83| call to raise #-----| raise -> [ensure: raise] ensure ... -# 83| raise -#-----| -> "x > 2" - # 83| "x > 2" #-----| -> call to raise @@ -3174,23 +2781,20 @@ raise.rb: # 87| call to puts #-----| -> ensure ... -# 87| puts -#-----| -> "0 <= x <= 2" - # 87| "0 <= x <= 2" #-----| -> call to puts # 88| ensure ... -#-----| -> puts +#-----| -> "ensure" # 88| [ensure: return] ensure ... -#-----| -> [ensure: return] puts +#-----| -> [ensure: return] "ensure" # 88| [ensure: raise] ensure ... -#-----| -> [ensure: raise] puts +#-----| -> [ensure: raise] "ensure" # 89| call to puts -#-----| -> puts +#-----| -> "End m8" # 89| [ensure: return] call to puts #-----| return -> exit m8 (normal) @@ -3198,15 +2802,6 @@ raise.rb: # 89| [ensure: raise] call to puts #-----| raise -> exit m8 (abnormal) -# 89| puts -#-----| -> "ensure" - -# 89| [ensure: return] puts -#-----| -> [ensure: return] "ensure" - -# 89| [ensure: raise] puts -#-----| -> [ensure: raise] "ensure" - # 89| "ensure" #-----| -> call to puts @@ -3219,18 +2814,12 @@ raise.rb: # 91| call to puts #-----| -> exit m8 (normal) -# 91| puts -#-----| -> "End m8" - # 91| "End m8" #-----| -> call to puts # 94| m9 #-----| -> m10 -# 94| m9 -#-----| -> m9 - # 94| x #-----| -> b1 @@ -3238,22 +2827,19 @@ raise.rb: #-----| -> b2 # 94| b2 -#-----| -> puts +#-----| -> "Begin m9" # 95| call to puts #-----| -> x -# 95| puts -#-----| -> "Begin m9" - # 95| "Begin m9" #-----| -> call to puts # 97| if ... -#-----| -> puts +#-----| -> "0 <= x <= 2" # 97| ... > ... -#-----| true -> raise +#-----| true -> "x > 2" #-----| false -> x # 97| x @@ -3265,9 +2851,6 @@ raise.rb: # 98| call to raise #-----| raise -> [ensure: raise] ensure ... -# 98| raise -#-----| -> "x > 2" - # 98| "x > 2" #-----| -> call to raise @@ -3293,20 +2876,17 @@ raise.rb: # 102| call to puts #-----| -> ensure ... -# 102| puts -#-----| -> "0 <= x <= 2" - # 102| "0 <= x <= 2" #-----| -> call to puts # 103| ensure ... -#-----| -> puts +#-----| -> "outer ensure" # 103| [ensure: return] ensure ... -#-----| -> [ensure: return] puts +#-----| -> [ensure: return] "outer ensure" # 103| [ensure: raise] ensure ... -#-----| -> [ensure: raise] puts +#-----| -> [ensure: raise] "outer ensure" # 104| call to puts #-----| -> b1 @@ -3317,15 +2897,6 @@ raise.rb: # 104| [ensure: raise] call to puts #-----| -> [ensure: raise] b1 -# 104| puts -#-----| -> "outer ensure" - -# 104| [ensure: return] puts -#-----| -> [ensure: return] "outer ensure" - -# 104| [ensure: raise] puts -#-----| -> [ensure: raise] "outer ensure" - # 104| "outer ensure" #-----| -> call to puts @@ -3346,15 +2917,15 @@ raise.rb: # 106| b1 #-----| false -> if ... -#-----| true -> raise +#-----| true -> "b1 is true" # 106| [ensure: return] b1 #-----| false -> [ensure: return] if ... -#-----| true -> [ensure: return] raise +#-----| true -> [ensure: return] "b1 is true" # 106| [ensure: raise] b1 #-----| false -> [ensure: raise] if ... -#-----| true -> [ensure: raise] raise +#-----| true -> [ensure: raise] "b1 is true" # 107| call to raise #-----| raise -> [ensure(1): raise] ensure ... @@ -3365,15 +2936,6 @@ raise.rb: # 107| [ensure: raise] call to raise #-----| raise -> [ensure: raise, ensure(1): raise] ensure ... -# 107| raise -#-----| -> "b1 is true" - -# 107| [ensure: return] raise -#-----| -> [ensure: return] "b1 is true" - -# 107| [ensure: raise] raise -#-----| -> [ensure: raise] "b1 is true" - # 107| "b1 is true" #-----| -> call to raise @@ -3384,25 +2946,25 @@ raise.rb: #-----| -> [ensure: raise] call to raise # 109| ensure ... -#-----| -> puts +#-----| -> "inner ensure" # 109| [ensure(1): raise] ensure ... -#-----| -> [ensure(1): raise] puts +#-----| -> [ensure(1): raise] "inner ensure" # 109| [ensure: return] ensure ... -#-----| -> [ensure: return] puts +#-----| -> [ensure: return] "inner ensure" # 109| [ensure: return, ensure(1): raise] ensure ... -#-----| -> [ensure: return, ensure(1): raise] puts +#-----| -> [ensure: return, ensure(1): raise] "inner ensure" # 109| [ensure: raise] ensure ... -#-----| -> [ensure: raise] puts +#-----| -> [ensure: raise] "inner ensure" # 109| [ensure: raise, ensure(1): raise] ensure ... -#-----| -> [ensure: raise, ensure(1): raise] puts +#-----| -> [ensure: raise, ensure(1): raise] "inner ensure" # 110| call to puts -#-----| -> puts +#-----| -> "End m9" # 110| [ensure(1): raise] call to puts #-----| raise -> [ensure: raise] ensure ... @@ -3419,24 +2981,6 @@ raise.rb: # 110| [ensure: raise, ensure(1): raise] call to puts #-----| raise -> [ensure: raise] ensure ... -# 110| puts -#-----| -> "inner ensure" - -# 110| [ensure(1): raise] puts -#-----| -> [ensure(1): raise] "inner ensure" - -# 110| [ensure: return] puts -#-----| -> [ensure: return] "inner ensure" - -# 110| [ensure: return, ensure(1): raise] puts -#-----| -> [ensure: return, ensure(1): raise] "inner ensure" - -# 110| [ensure: raise] puts -#-----| -> [ensure: raise] "inner ensure" - -# 110| [ensure: raise, ensure(1): raise] puts -#-----| -> [ensure: raise, ensure(1): raise] "inner ensure" - # 110| "inner ensure" #-----| -> call to puts @@ -3458,20 +3002,17 @@ raise.rb: # 113| call to puts #-----| -> ensure ... -# 113| puts -#-----| -> "End m9" - # 113| "End m9" #-----| -> call to puts # 114| ensure ... -#-----| -> puts +#-----| -> "method ensure" # 114| [ensure: return] ensure ... -#-----| -> [ensure: return] puts +#-----| -> [ensure: return] "method ensure" # 114| [ensure: raise] ensure ... -#-----| -> [ensure: raise] puts +#-----| -> [ensure: raise] "method ensure" # 115| call to puts #-----| -> b2 @@ -3482,15 +3023,6 @@ raise.rb: # 115| [ensure: raise] call to puts #-----| -> [ensure: raise] b2 -# 115| puts -#-----| -> "method ensure" - -# 115| [ensure: return] puts -#-----| -> [ensure: return] "method ensure" - -# 115| [ensure: raise] puts -#-----| -> [ensure: raise] "method ensure" - # 115| "method ensure" #-----| -> call to puts @@ -3511,15 +3043,15 @@ raise.rb: # 116| b2 #-----| false -> if ... -#-----| true -> raise +#-----| true -> "b2 is true" # 116| [ensure: return] b2 #-----| false -> [ensure: return] if ... -#-----| true -> [ensure: return] raise +#-----| true -> [ensure: return] "b2 is true" # 116| [ensure: raise] b2 #-----| false -> [ensure: raise] if ... -#-----| true -> [ensure: raise] raise +#-----| true -> [ensure: raise] "b2 is true" # 117| call to raise #-----| raise -> exit m9 (abnormal) @@ -3530,15 +3062,6 @@ raise.rb: # 117| [ensure: raise] call to raise #-----| raise -> exit m9 (abnormal) -# 117| raise -#-----| -> "b2 is true" - -# 117| [ensure: return] raise -#-----| -> [ensure: return] "b2 is true" - -# 117| [ensure: raise] raise -#-----| -> [ensure: raise] "b2 is true" - # 117| "b2 is true" #-----| -> call to raise @@ -3551,40 +3074,28 @@ raise.rb: # 121| m10 #-----| -> m11 -# 121| m10 -#-----| -> m10 - # 121| p -#-----| no-match -> raise +#-----| no-match -> "Exception" #-----| match -> ensure ... # 121| call to raise #-----| raise -> exit m10 (abnormal) -# 121| raise -#-----| -> "Exception" - # 121| "Exception" #-----| -> call to raise # 124| ensure ... -#-----| -> puts +#-----| -> "Will not get executed if p is..." # 125| call to puts #-----| -> exit m10 (normal) -# 125| puts -#-----| -> "Will not get executed if p is..." - # 125| "Will not get executed if p is..." #-----| -> call to puts # 128| m11 #-----| -> m12 -# 128| m11 -#-----| -> m11 - # 128| b #-----| -> b @@ -3593,14 +3104,11 @@ raise.rb: # 130| b #-----| false -> if ... -#-----| true -> raise +#-----| true -> ExceptionA # 131| call to raise #-----| raise -> rescue ... -# 131| raise -#-----| -> ExceptionA - # 131| ExceptionA #-----| -> call to raise @@ -3615,36 +3123,27 @@ raise.rb: #-----| -> ExceptionB # 134| ExceptionB -#-----| match -> puts +#-----| match -> "ExceptionB" #-----| raise -> [ensure: raise] ensure ... # 135| call to puts #-----| -> ensure ... -# 135| puts -#-----| -> "ExceptionB" - # 135| "ExceptionB" #-----| -> call to puts # 136| ensure ... -#-----| -> puts +#-----| -> "Ensure" # 136| [ensure: raise] ensure ... -#-----| -> [ensure: raise] puts +#-----| -> [ensure: raise] "Ensure" # 137| call to puts -#-----| -> puts +#-----| -> "End m11" # 137| [ensure: raise] call to puts #-----| raise -> exit m11 (abnormal) -# 137| puts -#-----| -> "Ensure" - -# 137| [ensure: raise] puts -#-----| -> [ensure: raise] "Ensure" - # 137| "Ensure" #-----| -> call to puts @@ -3654,18 +3153,12 @@ raise.rb: # 139| call to puts #-----| -> exit m11 (normal) -# 139| puts -#-----| -> "End m11" - # 139| "End m11" #-----| -> call to puts # 142| m12 #-----| -> m13 -# 142| m12 -#-----| -> m12 - # 142| b #-----| -> b @@ -3674,14 +3167,11 @@ raise.rb: # 143| b #-----| false -> if ... -#-----| true -> raise +#-----| true -> "" # 144| call to raise #-----| raise -> [ensure: raise] ensure ... -# 144| raise -#-----| -> "" - # 144| "" #-----| -> call to raise @@ -3706,18 +3196,12 @@ raise.rb: # 150| m13 #-----| -> m14 -# 150| m13 -#-----| -> m13 - # 151| ensure ... #-----| -> exit m13 (normal) # 154| m14 #-----| -> exit raise.rb (normal) -# 154| m14 -#-----| -> m14 - # 154| element #-----| -> element @@ -3725,9 +3209,6 @@ raise.rb: #-----| -> exit m14 (normal) # 155| element -#-----| -> each - -# 155| each #-----| -> { ... } # 155| { ... } @@ -3742,20 +3223,14 @@ raise.rb: # 155| call to raise #-----| raise -> exit { ... } (abnormal) -# 155| raise -#-----| -> "" - # 155| "" #-----| -> call to raise # 155| call to nil? #-----| false -> ... if ... -#-----| true -> raise +#-----| true -> "" # 155| element -#-----| -> nil? - -# 155| nil? #-----| -> call to nil? break_ensure.rb: diff --git a/ql/test/library-tests/variables/ssa.expected b/ql/test/library-tests/variables/ssa.expected index c1cc2f30faa..513d0029e8c 100644 --- a/ql/test/library-tests/variables/ssa.expected +++ b/ql/test/library-tests/variables/ssa.expected @@ -26,11 +26,11 @@ definition | parameters.rb:35:1:38:3 | | parameters.rb:35:16:35:16 | b | | parameters.rb:35:11:35:11 | a | parameters.rb:35:11:35:11 | a | | parameters.rb:35:16:35:20 | ... = ... | parameters.rb:35:16:35:16 | b | -| parameters.rb:37:3:37:6 | phi | parameters.rb:35:16:35:16 | b | +| parameters.rb:37:11:37:11 | phi | parameters.rb:35:16:35:16 | b | | parameters.rb:40:1:43:3 | | parameters.rb:40:15:40:15 | e | | parameters.rb:40:12:40:12 | d | parameters.rb:40:12:40:12 | d | | parameters.rb:40:15:40:19 | ... = ... | parameters.rb:40:15:40:15 | e | -| parameters.rb:42:3:42:6 | phi | parameters.rb:40:15:40:15 | e | +| parameters.rb:42:11:42:11 | phi | parameters.rb:40:15:40:15 | e | | parameters.rb:45:20:45:20 | _ | parameters.rb:45:20:45:20 | _ | | parameters.rb:49:13:49:13 | a | parameters.rb:49:13:49:13 | a | | parameters.rb:49:15:49:15 | b | parameters.rb:49:15:49:15 | b | @@ -38,7 +38,7 @@ definition | parameters.rb:54:9:57:3 | | parameters.rb:53:1:53:1 | x | | parameters.rb:54:14:54:14 | y | parameters.rb:54:14:54:14 | y | | parameters.rb:54:19:54:23 | ... = ... | parameters.rb:53:1:53:1 | x | -| parameters.rb:55:4:55:7 | phi | parameters.rb:53:1:53:1 | x | +| parameters.rb:55:9:55:9 | phi | parameters.rb:53:1:53:1 | x | | scopes.rb:4:4:4:8 | ... = ... | scopes.rb:4:4:4:4 | a | | scopes.rb:7:1:7:5 | ... = ... | scopes.rb:7:1:7:1 | a | | scopes.rb:9:9:18:3 | | scopes.rb:7:1:7:1 | a | @@ -68,7 +68,7 @@ definition | ssa.rb:45:3:45:12 | phi | ssa.rb:45:3:45:3 | x | | ssa.rb:49:1:51:3 | | ssa.rb:49:14:49:14 | y | | ssa.rb:49:14:49:19 | ... = ... | ssa.rb:49:14:49:14 | y | -| ssa.rb:50:3:50:6 | phi | ssa.rb:49:14:49:14 | y | +| ssa.rb:50:8:50:8 | phi | ssa.rb:49:14:49:14 | y | | ssa.rb:53:8:53:10 | foo | ssa.rb:53:8:53:10 | foo | | ssa.rb:54:3:54:11 | ... = ... | ssa.rb:54:3:54:3 | x | | ssa.rb:59:3:59:8 | ... = ... | ssa.rb:59:3:59:3 | x | @@ -113,14 +113,14 @@ read | parameters.rb:30:24:30:29 | middle | parameters.rb:30:24:30:29 | middle | parameters.rb:31:20:31:25 | middle | | parameters.rb:30:36:30:39 | last | parameters.rb:30:36:30:39 | last | parameters.rb:31:30:31:33 | last | | parameters.rb:35:11:35:11 | a | parameters.rb:35:11:35:11 | a | parameters.rb:37:11:37:11 | a | -| parameters.rb:37:3:37:6 | phi | parameters.rb:35:16:35:16 | b | parameters.rb:37:16:37:16 | b | +| parameters.rb:37:11:37:11 | phi | parameters.rb:35:16:35:16 | b | parameters.rb:37:16:37:16 | b | | parameters.rb:40:12:40:12 | d | parameters.rb:40:12:40:12 | d | parameters.rb:42:11:42:11 | d | -| parameters.rb:42:3:42:6 | phi | parameters.rb:40:15:40:15 | e | parameters.rb:42:16:42:16 | e | +| parameters.rb:42:11:42:11 | phi | parameters.rb:40:15:40:15 | e | parameters.rb:42:16:42:16 | e | | parameters.rb:45:20:45:20 | _ | parameters.rb:45:20:45:20 | _ | parameters.rb:46:8:46:8 | _ | | parameters.rb:49:13:49:13 | a | parameters.rb:49:13:49:13 | a | parameters.rb:50:11:50:11 | a | | parameters.rb:49:15:49:15 | b | parameters.rb:49:15:49:15 | b | parameters.rb:50:16:50:16 | b | | parameters.rb:54:14:54:14 | y | parameters.rb:54:14:54:14 | y | parameters.rb:56:9:56:9 | y | -| parameters.rb:55:4:55:7 | phi | parameters.rb:53:1:53:1 | x | parameters.rb:55:9:55:9 | x | +| parameters.rb:55:9:55:9 | phi | parameters.rb:53:1:53:1 | x | parameters.rb:55:9:55:9 | x | | scopes.rb:4:4:4:8 | ... = ... | scopes.rb:4:4:4:4 | a | scopes.rb:5:9:5:9 | a | | scopes.rb:7:1:7:5 | ... = ... | scopes.rb:7:1:7:1 | a | scopes.rb:8:6:8:6 | a | | scopes.rb:9:9:18:3 | | scopes.rb:7:1:7:1 | a | scopes.rb:10:9:10:9 | a | @@ -153,7 +153,7 @@ read | ssa.rb:40:3:40:9 | ... = ... | ssa.rb:40:3:40:4 | m3 | ssa.rb:41:8:41:9 | m3 | | ssa.rb:44:8:44:8 | b | ssa.rb:44:8:44:8 | b | ssa.rb:45:12:45:12 | b | | ssa.rb:45:3:45:12 | phi | ssa.rb:45:3:45:3 | x | ssa.rb:46:8:46:8 | x | -| ssa.rb:50:3:50:6 | phi | ssa.rb:49:14:49:14 | y | ssa.rb:50:8:50:8 | y | +| ssa.rb:50:8:50:8 | phi | ssa.rb:49:14:49:14 | y | ssa.rb:50:8:50:8 | y | | ssa.rb:53:8:53:10 | foo | ssa.rb:53:8:53:10 | foo | ssa.rb:54:7:54:9 | foo | | ssa.rb:54:3:54:11 | ... = ... | ssa.rb:54:3:54:3 | x | ssa.rb:55:8:55:8 | x | | ssa.rb:59:3:59:8 | ... = ... | ssa.rb:59:3:59:3 | x | ssa.rb:60:3:60:3 | x | @@ -193,14 +193,14 @@ firstRead | parameters.rb:30:24:30:29 | middle | parameters.rb:30:24:30:29 | middle | parameters.rb:31:20:31:25 | middle | | parameters.rb:30:36:30:39 | last | parameters.rb:30:36:30:39 | last | parameters.rb:31:30:31:33 | last | | parameters.rb:35:11:35:11 | a | parameters.rb:35:11:35:11 | a | parameters.rb:37:11:37:11 | a | -| parameters.rb:37:3:37:6 | phi | parameters.rb:35:16:35:16 | b | parameters.rb:37:16:37:16 | b | +| parameters.rb:37:11:37:11 | phi | parameters.rb:35:16:35:16 | b | parameters.rb:37:16:37:16 | b | | parameters.rb:40:12:40:12 | d | parameters.rb:40:12:40:12 | d | parameters.rb:42:11:42:11 | d | -| parameters.rb:42:3:42:6 | phi | parameters.rb:40:15:40:15 | e | parameters.rb:42:16:42:16 | e | +| parameters.rb:42:11:42:11 | phi | parameters.rb:40:15:40:15 | e | parameters.rb:42:16:42:16 | e | | parameters.rb:45:20:45:20 | _ | parameters.rb:45:20:45:20 | _ | parameters.rb:46:8:46:8 | _ | | parameters.rb:49:13:49:13 | a | parameters.rb:49:13:49:13 | a | parameters.rb:50:11:50:11 | a | | parameters.rb:49:15:49:15 | b | parameters.rb:49:15:49:15 | b | parameters.rb:50:16:50:16 | b | | parameters.rb:54:14:54:14 | y | parameters.rb:54:14:54:14 | y | parameters.rb:56:9:56:9 | y | -| parameters.rb:55:4:55:7 | phi | parameters.rb:53:1:53:1 | x | parameters.rb:55:9:55:9 | x | +| parameters.rb:55:9:55:9 | phi | parameters.rb:53:1:53:1 | x | parameters.rb:55:9:55:9 | x | | scopes.rb:4:4:4:8 | ... = ... | scopes.rb:4:4:4:4 | a | scopes.rb:5:9:5:9 | a | | scopes.rb:7:1:7:5 | ... = ... | scopes.rb:7:1:7:1 | a | scopes.rb:8:6:8:6 | a | | scopes.rb:9:9:18:3 | | scopes.rb:7:1:7:1 | a | scopes.rb:10:9:10:9 | a | @@ -223,7 +223,7 @@ firstRead | ssa.rb:40:3:40:9 | ... = ... | ssa.rb:40:3:40:4 | m3 | ssa.rb:41:8:41:9 | m3 | | ssa.rb:44:8:44:8 | b | ssa.rb:44:8:44:8 | b | ssa.rb:45:12:45:12 | b | | ssa.rb:45:3:45:12 | phi | ssa.rb:45:3:45:3 | x | ssa.rb:46:8:46:8 | x | -| ssa.rb:50:3:50:6 | phi | ssa.rb:49:14:49:14 | y | ssa.rb:50:8:50:8 | y | +| ssa.rb:50:8:50:8 | phi | ssa.rb:49:14:49:14 | y | ssa.rb:50:8:50:8 | y | | ssa.rb:53:8:53:10 | foo | ssa.rb:53:8:53:10 | foo | ssa.rb:54:7:54:9 | foo | | ssa.rb:54:3:54:11 | ... = ... | ssa.rb:54:3:54:3 | x | ssa.rb:55:8:55:8 | x | | ssa.rb:59:3:59:8 | ... = ... | ssa.rb:59:3:59:3 | x | ssa.rb:60:3:60:3 | x | @@ -262,14 +262,14 @@ lastRead | parameters.rb:30:24:30:29 | middle | parameters.rb:30:24:30:29 | middle | parameters.rb:31:20:31:25 | middle | | parameters.rb:30:36:30:39 | last | parameters.rb:30:36:30:39 | last | parameters.rb:31:30:31:33 | last | | parameters.rb:35:11:35:11 | a | parameters.rb:35:11:35:11 | a | parameters.rb:37:11:37:11 | a | -| parameters.rb:37:3:37:6 | phi | parameters.rb:35:16:35:16 | b | parameters.rb:37:16:37:16 | b | +| parameters.rb:37:11:37:11 | phi | parameters.rb:35:16:35:16 | b | parameters.rb:37:16:37:16 | b | | parameters.rb:40:12:40:12 | d | parameters.rb:40:12:40:12 | d | parameters.rb:42:11:42:11 | d | -| parameters.rb:42:3:42:6 | phi | parameters.rb:40:15:40:15 | e | parameters.rb:42:16:42:16 | e | +| parameters.rb:42:11:42:11 | phi | parameters.rb:40:15:40:15 | e | parameters.rb:42:16:42:16 | e | | parameters.rb:45:20:45:20 | _ | parameters.rb:45:20:45:20 | _ | parameters.rb:46:8:46:8 | _ | | parameters.rb:49:13:49:13 | a | parameters.rb:49:13:49:13 | a | parameters.rb:50:11:50:11 | a | | parameters.rb:49:15:49:15 | b | parameters.rb:49:15:49:15 | b | parameters.rb:50:16:50:16 | b | | parameters.rb:54:14:54:14 | y | parameters.rb:54:14:54:14 | y | parameters.rb:56:9:56:9 | y | -| parameters.rb:55:4:55:7 | phi | parameters.rb:53:1:53:1 | x | parameters.rb:55:9:55:9 | x | +| parameters.rb:55:9:55:9 | phi | parameters.rb:53:1:53:1 | x | parameters.rb:55:9:55:9 | x | | scopes.rb:4:4:4:8 | ... = ... | scopes.rb:4:4:4:4 | a | scopes.rb:5:9:5:9 | a | | scopes.rb:7:1:7:5 | ... = ... | scopes.rb:7:1:7:1 | a | scopes.rb:8:6:8:6 | a | | scopes.rb:9:9:18:3 | | scopes.rb:7:1:7:1 | a | scopes.rb:11:4:11:4 | a | @@ -293,7 +293,7 @@ lastRead | ssa.rb:40:3:40:9 | ... = ... | ssa.rb:40:3:40:4 | m3 | ssa.rb:41:8:41:9 | m3 | | ssa.rb:44:8:44:8 | b | ssa.rb:44:8:44:8 | b | ssa.rb:45:12:45:12 | b | | ssa.rb:45:3:45:12 | phi | ssa.rb:45:3:45:3 | x | ssa.rb:46:8:46:8 | x | -| ssa.rb:50:3:50:6 | phi | ssa.rb:49:14:49:14 | y | ssa.rb:50:8:50:8 | y | +| ssa.rb:50:8:50:8 | phi | ssa.rb:49:14:49:14 | y | ssa.rb:50:8:50:8 | y | | ssa.rb:53:8:53:10 | foo | ssa.rb:53:8:53:10 | foo | ssa.rb:54:7:54:9 | foo | | ssa.rb:54:3:54:11 | ... = ... | ssa.rb:54:3:54:3 | x | ssa.rb:55:8:55:8 | x | | ssa.rb:59:3:59:8 | ... = ... | ssa.rb:59:3:59:3 | x | ssa.rb:60:3:60:3 | x | @@ -320,12 +320,12 @@ adjacentReads | ssa.rb:19:9:19:9 | phi | ssa.rb:18:8:18:8 | x | ssa.rb:20:10:20:10 | x | ssa.rb:21:5:21:5 | x | | ssa.rb:66:11:70:5 | | ssa.rb:65:3:65:10 | captured | ssa.rb:68:10:68:17 | captured | ssa.rb:69:5:69:12 | captured | phi -| parameters.rb:37:3:37:6 | phi | parameters.rb:35:16:35:16 | b | parameters.rb:35:1:38:3 | | -| parameters.rb:37:3:37:6 | phi | parameters.rb:35:16:35:16 | b | parameters.rb:35:16:35:20 | ... = ... | -| parameters.rb:42:3:42:6 | phi | parameters.rb:40:15:40:15 | e | parameters.rb:40:1:43:3 | | -| parameters.rb:42:3:42:6 | phi | parameters.rb:40:15:40:15 | e | parameters.rb:40:15:40:19 | ... = ... | -| parameters.rb:55:4:55:7 | phi | parameters.rb:53:1:53:1 | x | parameters.rb:54:9:57:3 | | -| parameters.rb:55:4:55:7 | phi | parameters.rb:53:1:53:1 | x | parameters.rb:54:19:54:23 | ... = ... | +| parameters.rb:37:11:37:11 | phi | parameters.rb:35:16:35:16 | b | parameters.rb:35:1:38:3 | | +| parameters.rb:37:11:37:11 | phi | parameters.rb:35:16:35:16 | b | parameters.rb:35:16:35:20 | ... = ... | +| parameters.rb:42:11:42:11 | phi | parameters.rb:40:15:40:15 | e | parameters.rb:40:1:43:3 | | +| parameters.rb:42:11:42:11 | phi | parameters.rb:40:15:40:15 | e | parameters.rb:40:15:40:19 | ... = ... | +| parameters.rb:55:9:55:9 | phi | parameters.rb:53:1:53:1 | x | parameters.rb:54:9:57:3 | | +| parameters.rb:55:9:55:9 | phi | parameters.rb:53:1:53:1 | x | parameters.rb:54:19:54:23 | ... = ... | | ssa.rb:5:3:13:5 | phi | ssa.rb:2:3:2:3 | i | ssa.rb:6:5:6:9 | ... = ... | | ssa.rb:5:3:13:5 | phi | ssa.rb:2:3:2:3 | i | ssa.rb:10:5:10:9 | ... = ... | | ssa.rb:19:9:19:9 | phi | ssa.rb:18:8:18:8 | x | ssa.rb:18:8:18:8 | x | @@ -334,5 +334,5 @@ phi | ssa.rb:26:12:26:22 | phi | ssa.rb:26:7:26:10 | elem | ssa.rb:26:7:26:10 | elem | | ssa.rb:45:3:45:12 | phi | ssa.rb:45:3:45:3 | x | ssa.rb:44:1:47:3 | | | ssa.rb:45:3:45:12 | phi | ssa.rb:45:3:45:3 | x | ssa.rb:45:3:45:7 | ... = ... | -| ssa.rb:50:3:50:6 | phi | ssa.rb:49:14:49:14 | y | ssa.rb:49:1:51:3 | | -| ssa.rb:50:3:50:6 | phi | ssa.rb:49:14:49:14 | y | ssa.rb:49:14:49:19 | ... = ... | +| ssa.rb:50:8:50:8 | phi | ssa.rb:49:14:49:14 | y | ssa.rb:49:1:51:3 | | +| ssa.rb:50:8:50:8 | phi | ssa.rb:49:14:49:14 | y | ssa.rb:49:14:49:19 | ... = ... |