mirror of
https://github.com/github/codeql.git
synced 2026-02-19 16:33:40 +01:00
Make CFG for TEnsure post-order
This commit is contained in:
@@ -1112,7 +1112,8 @@ module Trees {
|
||||
this instanceof BeginBlock or
|
||||
this instanceof ASTInternal::TThen or
|
||||
this instanceof ASTInternal::TDo or
|
||||
this instanceof ASTInternal::TElse
|
||||
this instanceof ASTInternal::TElse or
|
||||
this instanceof ASTInternal::TEnsure
|
||||
}
|
||||
|
||||
final override predicate first(AstNode first) { first(this.getStmt(0), first) }
|
||||
@@ -1144,7 +1145,8 @@ module Trees {
|
||||
not this instanceof BeginBlock and
|
||||
not this instanceof ASTInternal::TThen and
|
||||
not this instanceof ASTInternal::TDo and
|
||||
not this instanceof ASTInternal::TElse
|
||||
not this instanceof ASTInternal::TElse and
|
||||
not this instanceof ASTInternal::TEnsure
|
||||
}
|
||||
|
||||
final override predicate propagatesAbnormal(AstNode child) { child = this.getAStmt() }
|
||||
|
||||
@@ -22,7 +22,7 @@ break_ensure.rb:
|
||||
#-----| -> elements
|
||||
|
||||
# 2| for ... in ...
|
||||
#-----| -> ensure ...
|
||||
#-----| -> elements
|
||||
|
||||
# 2| element
|
||||
#-----| -> element
|
||||
@@ -54,10 +54,10 @@ break_ensure.rb:
|
||||
#-----| break -> for ... in ...
|
||||
|
||||
# 7| ensure ...
|
||||
#-----| -> elements
|
||||
#-----| -> exit m1 (normal)
|
||||
|
||||
# 8| if ...
|
||||
#-----| -> exit m1 (normal)
|
||||
#-----| -> ensure ...
|
||||
|
||||
# 8| call to nil?
|
||||
#-----| false -> if ...
|
||||
@@ -109,7 +109,7 @@ break_ensure.rb:
|
||||
#-----| -> In
|
||||
|
||||
# 16| if ...
|
||||
#-----| -> ensure ...
|
||||
#-----| -> elements
|
||||
|
||||
# 16| ... > ...
|
||||
#-----| true -> break
|
||||
@@ -122,20 +122,20 @@ break_ensure.rb:
|
||||
#-----| -> ... > ...
|
||||
|
||||
# 17| break
|
||||
#-----| break -> [ensure: break] ensure ...
|
||||
#-----| break -> [ensure: break] elements
|
||||
|
||||
# 19| ensure ...
|
||||
#-----| -> elements
|
||||
|
||||
# 19| [ensure: break] ensure ...
|
||||
#-----| -> [ensure: break] elements
|
||||
|
||||
# 20| if ...
|
||||
#-----| -> do ...
|
||||
|
||||
# 20| [ensure: break] if ...
|
||||
# 19| [ensure: break] ensure ...
|
||||
#-----| break -> for ... in ...
|
||||
|
||||
# 20| if ...
|
||||
#-----| -> ensure ...
|
||||
|
||||
# 20| [ensure: break] if ...
|
||||
#-----| -> [ensure: break] ensure ...
|
||||
|
||||
# 20| call to nil?
|
||||
#-----| false -> if ...
|
||||
#-----| true -> self
|
||||
@@ -189,7 +189,7 @@ break_ensure.rb:
|
||||
#-----| -> elements
|
||||
|
||||
# 29| if ...
|
||||
#-----| -> ensure ...
|
||||
#-----| -> elements
|
||||
|
||||
# 29| call to nil?
|
||||
#-----| false -> if ...
|
||||
@@ -199,20 +199,20 @@ break_ensure.rb:
|
||||
#-----| -> call to nil?
|
||||
|
||||
# 30| return
|
||||
#-----| return -> [ensure: return] ensure ...
|
||||
#-----| return -> [ensure: return] elements
|
||||
|
||||
# 32| ensure ...
|
||||
#-----| -> elements
|
||||
|
||||
# 32| [ensure: return] ensure ...
|
||||
#-----| -> [ensure: return] elements
|
||||
|
||||
# 33| for ... in ...
|
||||
#-----| -> self
|
||||
|
||||
# 33| [ensure: return] for ... in ...
|
||||
# 32| [ensure: return] ensure ...
|
||||
#-----| return -> exit m3 (normal)
|
||||
|
||||
# 33| for ... in ...
|
||||
#-----| -> ensure ...
|
||||
|
||||
# 33| [ensure: return] for ... in ...
|
||||
#-----| -> [ensure: return] ensure ...
|
||||
|
||||
# 33| element
|
||||
#-----| -> self
|
||||
|
||||
@@ -317,7 +317,7 @@ break_ensure.rb:
|
||||
#-----| -> In
|
||||
|
||||
# 47| if ...
|
||||
#-----| -> ensure ...
|
||||
#-----| -> element
|
||||
|
||||
# 47| ... > ...
|
||||
#-----| false -> if ...
|
||||
@@ -330,7 +330,7 @@ break_ensure.rb:
|
||||
#-----| -> ... > ...
|
||||
|
||||
# 48| call to raise
|
||||
#-----| raise -> [ensure: raise] ensure ...
|
||||
#-----| raise -> [ensure: raise] element
|
||||
|
||||
# 48| self
|
||||
#-----| -> ""
|
||||
@@ -339,17 +339,17 @@ break_ensure.rb:
|
||||
#-----| -> call to raise
|
||||
|
||||
# 50| ensure ...
|
||||
#-----| -> element
|
||||
|
||||
# 50| [ensure: raise] ensure ...
|
||||
#-----| -> [ensure: raise] element
|
||||
|
||||
# 51| if ...
|
||||
#-----| -> do ...
|
||||
|
||||
# 51| [ensure: raise] if ...
|
||||
# 50| [ensure: raise] ensure ...
|
||||
#-----| raise -> for ... in ...
|
||||
|
||||
# 51| if ...
|
||||
#-----| -> ensure ...
|
||||
|
||||
# 51| [ensure: raise] if ...
|
||||
#-----| -> [ensure: raise] ensure ...
|
||||
|
||||
# 51| ... > ...
|
||||
#-----| false -> if ...
|
||||
#-----| true -> 10
|
||||
@@ -1059,7 +1059,7 @@ cfg.rb:
|
||||
#-----| -> self
|
||||
|
||||
# 82| else ...
|
||||
#-----| -> ensure ...
|
||||
#-----| -> self
|
||||
|
||||
# 83| call to puts
|
||||
#-----| -> else ...
|
||||
@@ -1071,10 +1071,10 @@ cfg.rb:
|
||||
#-----| -> call to puts
|
||||
|
||||
# 84| ensure ...
|
||||
#-----| -> self
|
||||
#-----| -> escape
|
||||
|
||||
# 85| call to puts
|
||||
#-----| -> escape
|
||||
#-----| -> ensure ...
|
||||
|
||||
# 85| self
|
||||
#-----| -> "end"
|
||||
@@ -3312,7 +3312,7 @@ raise.rb:
|
||||
#-----| -> ... > ...
|
||||
|
||||
# 70| call to raise
|
||||
#-----| raise -> [ensure: raise] ensure ...
|
||||
#-----| raise -> [ensure: raise] self
|
||||
|
||||
# 70| self
|
||||
#-----| -> "x > 2"
|
||||
@@ -3334,13 +3334,13 @@ raise.rb:
|
||||
#-----| -> ... < ...
|
||||
|
||||
# 72| return
|
||||
#-----| return -> [ensure: return] ensure ...
|
||||
#-----| return -> [ensure: return] self
|
||||
|
||||
# 72| "x < 0"
|
||||
#-----| -> return
|
||||
|
||||
# 74| call to puts
|
||||
#-----| -> ensure ...
|
||||
#-----| -> self
|
||||
|
||||
# 74| self
|
||||
#-----| -> "0 <= x <= 2"
|
||||
@@ -3349,23 +3349,23 @@ raise.rb:
|
||||
#-----| -> call to puts
|
||||
|
||||
# 75| ensure ...
|
||||
#-----| -> self
|
||||
|
||||
# 75| [ensure: return] ensure ...
|
||||
#-----| -> [ensure: return] self
|
||||
|
||||
# 75| [ensure: raise] ensure ...
|
||||
#-----| -> [ensure: raise] self
|
||||
|
||||
# 76| call to puts
|
||||
#-----| -> exit m7 (normal)
|
||||
|
||||
# 76| [ensure: return] call to puts
|
||||
# 75| [ensure: return] ensure ...
|
||||
#-----| return -> exit m7 (normal)
|
||||
|
||||
# 76| [ensure: raise] call to puts
|
||||
# 75| [ensure: raise] ensure ...
|
||||
#-----| raise -> exit m7 (abnormal)
|
||||
|
||||
# 76| call to puts
|
||||
#-----| -> ensure ...
|
||||
|
||||
# 76| [ensure: return] call to puts
|
||||
#-----| -> [ensure: return] ensure ...
|
||||
|
||||
# 76| [ensure: raise] call to puts
|
||||
#-----| -> [ensure: raise] ensure ...
|
||||
|
||||
# 76| self
|
||||
#-----| -> "ensure"
|
||||
|
||||
@@ -3424,7 +3424,7 @@ raise.rb:
|
||||
#-----| -> ... > ...
|
||||
|
||||
# 83| call to raise
|
||||
#-----| raise -> [ensure: raise] ensure ...
|
||||
#-----| raise -> [ensure: raise] self
|
||||
|
||||
# 83| self
|
||||
#-----| -> "x > 2"
|
||||
@@ -3446,13 +3446,13 @@ raise.rb:
|
||||
#-----| -> ... < ...
|
||||
|
||||
# 85| return
|
||||
#-----| return -> [ensure: return] ensure ...
|
||||
#-----| return -> [ensure: return] self
|
||||
|
||||
# 85| "x < 0"
|
||||
#-----| -> return
|
||||
|
||||
# 87| call to puts
|
||||
#-----| -> ensure ...
|
||||
#-----| -> self
|
||||
|
||||
# 87| self
|
||||
#-----| -> "0 <= x <= 2"
|
||||
@@ -3464,20 +3464,20 @@ raise.rb:
|
||||
#-----| -> self
|
||||
|
||||
# 88| [ensure: return] ensure ...
|
||||
#-----| -> [ensure: return] self
|
||||
|
||||
# 88| [ensure: raise] ensure ...
|
||||
#-----| -> [ensure: raise] self
|
||||
|
||||
# 89| call to puts
|
||||
#-----| -> self
|
||||
|
||||
# 89| [ensure: return] call to puts
|
||||
#-----| return -> exit m8 (normal)
|
||||
|
||||
# 89| [ensure: raise] call to puts
|
||||
# 88| [ensure: raise] ensure ...
|
||||
#-----| raise -> exit m8 (abnormal)
|
||||
|
||||
# 89| call to puts
|
||||
#-----| -> ensure ...
|
||||
|
||||
# 89| [ensure: return] call to puts
|
||||
#-----| -> [ensure: return] ensure ...
|
||||
|
||||
# 89| [ensure: raise] call to puts
|
||||
#-----| -> [ensure: raise] ensure ...
|
||||
|
||||
# 89| self
|
||||
#-----| -> "ensure"
|
||||
|
||||
@@ -3551,7 +3551,7 @@ raise.rb:
|
||||
#-----| -> ... > ...
|
||||
|
||||
# 98| call to raise
|
||||
#-----| raise -> [ensure: raise] ensure ...
|
||||
#-----| raise -> [ensure: raise] self
|
||||
|
||||
# 98| self
|
||||
#-----| -> "x > 2"
|
||||
@@ -3573,13 +3573,13 @@ raise.rb:
|
||||
#-----| -> ... < ...
|
||||
|
||||
# 100| return
|
||||
#-----| return -> [ensure: return] ensure ...
|
||||
#-----| return -> [ensure: return] self
|
||||
|
||||
# 100| "x < 0"
|
||||
#-----| -> return
|
||||
|
||||
# 102| call to puts
|
||||
#-----| -> ensure ...
|
||||
#-----| -> self
|
||||
|
||||
# 102| self
|
||||
#-----| -> "0 <= x <= 2"
|
||||
@@ -3591,10 +3591,10 @@ raise.rb:
|
||||
#-----| -> self
|
||||
|
||||
# 103| [ensure: return] ensure ...
|
||||
#-----| -> [ensure: return] self
|
||||
#-----| return -> [ensure: return] self
|
||||
|
||||
# 103| [ensure: raise] ensure ...
|
||||
#-----| -> [ensure: raise] self
|
||||
#-----| raise -> [ensure: raise] self
|
||||
|
||||
# 104| call to puts
|
||||
#-----| -> b1
|
||||
@@ -3624,13 +3624,13 @@ raise.rb:
|
||||
#-----| -> [ensure: raise] call to puts
|
||||
|
||||
# 106| if ...
|
||||
#-----| -> ensure ...
|
||||
#-----| -> self
|
||||
|
||||
# 106| [ensure: return] if ...
|
||||
#-----| -> [ensure: return] ensure ...
|
||||
#-----| -> [ensure: return] self
|
||||
|
||||
# 106| [ensure: raise] if ...
|
||||
#-----| -> [ensure: raise] ensure ...
|
||||
#-----| -> [ensure: raise] self
|
||||
|
||||
# 106| b1
|
||||
#-----| false -> if ...
|
||||
@@ -3645,13 +3645,13 @@ raise.rb:
|
||||
#-----| true -> [ensure: raise] self
|
||||
|
||||
# 107| call to raise
|
||||
#-----| raise -> [ensure(1): raise] ensure ...
|
||||
#-----| raise -> [ensure(1): raise] self
|
||||
|
||||
# 107| [ensure: return] call to raise
|
||||
#-----| raise -> [ensure: return, ensure(1): raise] ensure ...
|
||||
#-----| raise -> [ensure: return, ensure(1): raise] self
|
||||
|
||||
# 107| [ensure: raise] call to raise
|
||||
#-----| raise -> [ensure: raise, ensure(1): raise] ensure ...
|
||||
#-----| raise -> [ensure: raise, ensure(1): raise] self
|
||||
|
||||
# 107| self
|
||||
#-----| -> "b1 is true"
|
||||
@@ -3672,40 +3672,40 @@ raise.rb:
|
||||
#-----| -> [ensure: raise] call to raise
|
||||
|
||||
# 109| ensure ...
|
||||
#-----| -> self
|
||||
#-----| -> ensure ...
|
||||
|
||||
# 109| [ensure(1): raise] ensure ...
|
||||
#-----| -> [ensure(1): raise] self
|
||||
#-----| raise -> [ensure: raise] self
|
||||
|
||||
# 109| [ensure: return] ensure ...
|
||||
#-----| -> [ensure: return] self
|
||||
#-----| -> [ensure: return] ensure ...
|
||||
|
||||
# 109| [ensure: return, ensure(1): raise] ensure ...
|
||||
#-----| -> [ensure: return, ensure(1): raise] self
|
||||
#-----| raise -> [ensure: raise] self
|
||||
|
||||
# 109| [ensure: raise] ensure ...
|
||||
#-----| -> [ensure: raise] self
|
||||
#-----| -> [ensure: raise] ensure ...
|
||||
|
||||
# 109| [ensure: raise, ensure(1): raise] ensure ...
|
||||
#-----| -> [ensure: raise, ensure(1): raise] self
|
||||
#-----| raise -> [ensure: raise] self
|
||||
|
||||
# 110| call to puts
|
||||
#-----| -> self
|
||||
#-----| -> ensure ...
|
||||
|
||||
# 110| [ensure(1): raise] call to puts
|
||||
#-----| raise -> [ensure: raise] ensure ...
|
||||
#-----| -> [ensure(1): raise] ensure ...
|
||||
|
||||
# 110| [ensure: return] call to puts
|
||||
#-----| return -> [ensure: return] ensure ...
|
||||
#-----| -> [ensure: return] ensure ...
|
||||
|
||||
# 110| [ensure: return, ensure(1): raise] call to puts
|
||||
#-----| raise -> [ensure: raise] ensure ...
|
||||
#-----| -> [ensure: return, ensure(1): raise] ensure ...
|
||||
|
||||
# 110| [ensure: raise] call to puts
|
||||
#-----| raise -> [ensure: raise] ensure ...
|
||||
#-----| -> [ensure: raise] ensure ...
|
||||
|
||||
# 110| [ensure: raise, ensure(1): raise] call to puts
|
||||
#-----| raise -> [ensure: raise] ensure ...
|
||||
#-----| -> [ensure: raise, ensure(1): raise] ensure ...
|
||||
|
||||
# 110| self
|
||||
#-----| -> "inner ensure"
|
||||
@@ -3744,7 +3744,7 @@ raise.rb:
|
||||
#-----| -> [ensure: raise, ensure(1): raise] call to puts
|
||||
|
||||
# 113| call to puts
|
||||
#-----| -> ensure ...
|
||||
#-----| -> self
|
||||
|
||||
# 113| self
|
||||
#-----| -> "End m9"
|
||||
@@ -3753,13 +3753,13 @@ raise.rb:
|
||||
#-----| -> call to puts
|
||||
|
||||
# 114| ensure ...
|
||||
#-----| -> self
|
||||
#-----| -> exit m9 (normal)
|
||||
|
||||
# 114| [ensure: return] ensure ...
|
||||
#-----| -> [ensure: return] self
|
||||
#-----| return -> exit m9 (normal)
|
||||
|
||||
# 114| [ensure: raise] ensure ...
|
||||
#-----| -> [ensure: raise] self
|
||||
#-----| raise -> exit m9 (abnormal)
|
||||
|
||||
# 115| call to puts
|
||||
#-----| -> b2
|
||||
@@ -3789,13 +3789,13 @@ raise.rb:
|
||||
#-----| -> [ensure: raise] call to puts
|
||||
|
||||
# 116| if ...
|
||||
#-----| -> exit m9 (normal)
|
||||
#-----| -> ensure ...
|
||||
|
||||
# 116| [ensure: return] if ...
|
||||
#-----| return -> exit m9 (normal)
|
||||
#-----| -> [ensure: return] ensure ...
|
||||
|
||||
# 116| [ensure: raise] if ...
|
||||
#-----| raise -> exit m9 (abnormal)
|
||||
#-----| -> [ensure: raise] ensure ...
|
||||
|
||||
# 116| b2
|
||||
#-----| false -> if ...
|
||||
@@ -3851,8 +3851,8 @@ raise.rb:
|
||||
#-----| -> exit m10
|
||||
|
||||
# 121| p
|
||||
#-----| match -> ensure ...
|
||||
#-----| no-match -> self
|
||||
#-----| match -> self
|
||||
|
||||
# 121| call to raise
|
||||
#-----| raise -> exit m10 (abnormal)
|
||||
@@ -3864,10 +3864,10 @@ raise.rb:
|
||||
#-----| -> call to raise
|
||||
|
||||
# 124| ensure ...
|
||||
#-----| -> self
|
||||
#-----| -> exit m10 (normal)
|
||||
|
||||
# 125| call to puts
|
||||
#-----| -> exit m10 (normal)
|
||||
#-----| -> ensure ...
|
||||
|
||||
# 125| self
|
||||
#-----| -> "Will not get executed if p is..."
|
||||
@@ -3893,7 +3893,7 @@ raise.rb:
|
||||
#-----| -> b
|
||||
|
||||
# 130| if ...
|
||||
#-----| -> ensure ...
|
||||
#-----| -> self
|
||||
|
||||
# 130| b
|
||||
#-----| false -> if ...
|
||||
@@ -3912,18 +3912,18 @@ raise.rb:
|
||||
#-----| -> ExceptionA
|
||||
|
||||
# 133| ExceptionA
|
||||
#-----| match -> ensure ...
|
||||
#-----| no-match -> rescue ...
|
||||
#-----| match -> self
|
||||
|
||||
# 134| rescue ...
|
||||
#-----| -> ExceptionB
|
||||
|
||||
# 134| ExceptionB
|
||||
#-----| raise -> [ensure: raise] ensure ...
|
||||
#-----| match -> self
|
||||
#-----| raise -> [ensure: raise] self
|
||||
|
||||
# 134| then ...
|
||||
#-----| -> ensure ...
|
||||
#-----| -> self
|
||||
|
||||
# 135| call to puts
|
||||
#-----| -> then ...
|
||||
@@ -3938,13 +3938,13 @@ raise.rb:
|
||||
#-----| -> self
|
||||
|
||||
# 136| [ensure: raise] ensure ...
|
||||
#-----| -> [ensure: raise] self
|
||||
#-----| raise -> exit m11 (abnormal)
|
||||
|
||||
# 137| call to puts
|
||||
#-----| -> self
|
||||
#-----| -> ensure ...
|
||||
|
||||
# 137| [ensure: raise] call to puts
|
||||
#-----| raise -> exit m11 (abnormal)
|
||||
#-----| -> [ensure: raise] ensure ...
|
||||
|
||||
# 137| self
|
||||
#-----| -> "Ensure"
|
||||
@@ -3982,14 +3982,14 @@ raise.rb:
|
||||
#-----| -> b
|
||||
|
||||
# 143| if ...
|
||||
#-----| -> ensure ...
|
||||
#-----| -> 3
|
||||
|
||||
# 143| b
|
||||
#-----| false -> if ...
|
||||
#-----| true -> self
|
||||
|
||||
# 144| call to raise
|
||||
#-----| raise -> [ensure: raise] ensure ...
|
||||
#-----| raise -> [ensure: raise] 3
|
||||
|
||||
# 144| self
|
||||
#-----| -> ""
|
||||
@@ -3997,12 +3997,6 @@ raise.rb:
|
||||
# 144| ""
|
||||
#-----| -> call to raise
|
||||
|
||||
# 146| ensure ...
|
||||
#-----| -> 3
|
||||
|
||||
# 146| [ensure: raise] ensure ...
|
||||
#-----| -> [ensure: raise] 3
|
||||
|
||||
# 147| return
|
||||
#-----| return -> exit m12 (normal)
|
||||
|
||||
@@ -4015,20 +4009,9 @@ raise.rb:
|
||||
# 147| [ensure: raise] 3
|
||||
#-----| -> [ensure: raise] return
|
||||
|
||||
# 150| enter m13
|
||||
#-----| -> ensure ...
|
||||
|
||||
# 150| m13
|
||||
#-----| -> m14
|
||||
|
||||
# 150| exit m13
|
||||
|
||||
# 150| exit m13 (normal)
|
||||
#-----| -> exit m13
|
||||
|
||||
# 151| ensure ...
|
||||
#-----| -> exit m13 (normal)
|
||||
|
||||
# 154| enter m14
|
||||
#-----| -> element
|
||||
|
||||
|
||||
Reference in New Issue
Block a user