diff --git a/ql/test/library-tests/controlflow/graph/Cfg.expected b/ql/test/library-tests/controlflow/graph/Cfg.expected index 5426d01dd9a..2aedf5b67cc 100644 --- a/ql/test/library-tests/controlflow/graph/Cfg.expected +++ b/ql/test/library-tests/controlflow/graph/Cfg.expected @@ -8,6 +8,9 @@ break_ensure.rb: # 27| enter m3 #-----| -> elements +# 44| enter m4 +#-----| -> elements + case.rb: # 1| enter if_in_case #-----| -> Case @@ -128,6 +131,9 @@ raise.rb: # 128| enter m11 #-----| -> b +# 142| enter m12 +#-----| -> b + break_ensure.rb: # 1| elements #-----| -> elements @@ -143,13 +149,13 @@ break_ensure.rb: #-----| -> For # 3| If -#-----| -> x +#-----| -> element # 3| Binary #-----| false -> For #-----| true -> Break -# 3| x +# 3| element #-----| -> 0 # 3| 0 @@ -197,13 +203,13 @@ break_ensure.rb: #-----| -> For # 16| If -#-----| -> x +#-----| -> element # 16| Binary #-----| true -> Break #-----| false -> Ensure -# 16| x +# 16| element #-----| -> 0 # 16| 0 @@ -348,6 +354,85 @@ break_ensure.rb: # 41| String #-----| -> puts +# 44| elements +#-----| -> elements + +# 45| For +#-----| non-empty -> element +#-----| empty -> exit m4 (normal) + +# 45| element +#-----| -> If + +# 45| elements +#-----| -> For + +# 47| If +#-----| -> element + +# 47| Binary +#-----| true -> String +#-----| false -> Ensure + +# 47| element +#-----| -> 1 + +# 47| 1 +#-----| -> Binary + +# 48| MethodCall +#-----| raise -> [ensure: raise] Ensure + +# 48| raise +#-----| -> MethodCall + +# 48| String +#-----| -> raise + +# 50| Ensure +#-----| -> If + +# 50| [ensure: raise] Ensure +#-----| -> [ensure: raise] If + +# 51| If +#-----| -> element + +# 51| [ensure: raise] If +#-----| -> [ensure: raise] element + +# 51| Binary +#-----| false -> For +#-----| true -> 10 + +# 51| [ensure: raise] Binary +#-----| true -> [ensure: raise] 10 +#-----| raise -> exit m4 (abnormal) + +# 51| element +#-----| -> 0 + +# 51| [ensure: raise] element +#-----| -> [ensure: raise] 0 + +# 51| 0 +#-----| -> Binary + +# 51| [ensure: raise] 0 +#-----| -> [ensure: raise] Binary + +# 52| Break +#-----| break -> exit m4 (normal) + +# 52| [ensure: raise] Break +#-----| break -> exit m4 (normal) + +# 52| 10 +#-----| -> Break + +# 52| [ensure: raise] 10 +#-----| -> [ensure: raise] Break + case.rb: # 2| Case #-----| -> x1 @@ -3149,6 +3234,43 @@ raise.rb: # 139| String #-----| -> puts +# 142| b +#-----| -> If + +# 143| If +#-----| -> b + +# 143| b +#-----| true -> String +#-----| false -> Ensure + +# 144| MethodCall +#-----| raise -> [ensure: raise] Ensure + +# 144| raise +#-----| -> MethodCall + +# 144| String +#-----| -> raise + +# 146| Ensure +#-----| -> 3 + +# 146| [ensure: raise] Ensure +#-----| -> [ensure: raise] 3 + +# 147| Return +#-----| return -> exit m12 (normal) + +# 147| [ensure: raise] Return +#-----| return -> exit m12 (normal) + +# 147| 3 +#-----| -> Return + +# 147| [ensure: raise] 3 +#-----| -> [ensure: raise] Return + break_ensure.rb: # 1| exit m1 @@ -3156,6 +3278,8 @@ break_ensure.rb: # 27| exit m3 +# 44| exit m4 + case.rb: # 1| exit if_in_case @@ -3236,6 +3360,8 @@ raise.rb: # 128| exit m11 +# 142| exit m12 + break_ensure.rb: # 1| exit m1 (normal) #-----| -> exit m1 @@ -3246,6 +3372,12 @@ break_ensure.rb: # 27| exit m3 (normal) #-----| -> exit m3 +# 44| exit m4 (abnormal) +#-----| -> exit m4 + +# 44| exit m4 (normal) +#-----| -> exit m4 + case.rb: # 1| exit if_in_case (normal) #-----| -> exit if_in_case @@ -3392,3 +3524,6 @@ raise.rb: # 128| exit m11 (normal) #-----| -> exit m11 + +# 142| exit m12 (normal) +#-----| -> exit m12 diff --git a/ql/test/library-tests/controlflow/graph/break_ensure.rb b/ql/test/library-tests/controlflow/graph/break_ensure.rb index cf181e3fd38..4ee587049f3 100644 --- a/ql/test/library-tests/controlflow/graph/break_ensure.rb +++ b/ql/test/library-tests/controlflow/graph/break_ensure.rb @@ -1,6 +1,6 @@ def m1 elements for element in elements do - if x > 0 then + if element > 0 then break end end @@ -13,7 +13,7 @@ end def m2 elements for element in elements do begin - if x > 0 then + if element > 0 then break end ensure @@ -40,3 +40,17 @@ def m3 elements end puts "Done" end + +def m4 elements + for element in elements do + begin + if element > 1 then + raise "" + end + ensure + if element > 0 then + break 10; + end + end + end +end diff --git a/ql/test/library-tests/controlflow/graph/raise.rb b/ql/test/library-tests/controlflow/graph/raise.rb index cf775077594..f75f4fa7e8e 100644 --- a/ql/test/library-tests/controlflow/graph/raise.rb +++ b/ql/test/library-tests/controlflow/graph/raise.rb @@ -136,5 +136,17 @@ def m11 b ensure puts "Ensure" end - puts "End m5" + puts "End m11" end + +def m12 b + if b + raise "" + end +ensure + return 3 +end + +def m13 +ensure +end \ No newline at end of file