diff --git a/powershell/ql/lib/semmle/code/powershell/controlflow/internal/ControlFlowGraphImpl.qll b/powershell/ql/lib/semmle/code/powershell/controlflow/internal/ControlFlowGraphImpl.qll index 7227baf1a66..3ce14d9c78c 100644 --- a/powershell/ql/lib/semmle/code/powershell/controlflow/internal/ControlFlowGraphImpl.qll +++ b/powershell/ql/lib/semmle/code/powershell/controlflow/internal/ControlFlowGraphImpl.qll @@ -343,7 +343,16 @@ module Trees { final override predicate succ(AstNode pred, AstNode succ, Completion c) { // Start with initialization this = pred and - first(super.getInitializer(), succ) and + ( + first(super.getInitializer(), succ) + or + not exists(super.getInitializer()) and + first(super.getCondition(), succ) + or + not exists(super.getInitializer()) and + not exists(super.getCondition()) and + first(this.getBody(), succ) + ) and completionIsSimple(c) or // Initialization -> condition @@ -359,7 +368,16 @@ module Trees { // Body -> iterator last(this.getBody(), pred, c) and completionIsNormal(c) and - first(super.getIterator(), succ) + ( + first(super.getIterator(), succ) + or + not exists(super.getIterator()) and + first(super.getCondition(), succ) + or + not exists(super.getIterator()) and + not exists(super.getCondition()) and + first(this.getBody(), succ) + ) or // Iterator -> condition last(super.getIterator(), pred, c) and diff --git a/powershell/ql/test/library-tests/controlflow/graph/Cfg.expected b/powershell/ql/test/library-tests/controlflow/graph/Cfg.expected index 61dfcc6469d..f43af3f29f1 100644 --- a/powershell/ql/test/library-tests/controlflow/graph/Cfg.expected +++ b/powershell/ql/test/library-tests/controlflow/graph/Cfg.expected @@ -1,2383 +1,785 @@ -conditionals.ps1: -# 1| enter conditionals.ps1 -#-----| -> conditionals.ps1 - -# 1| conditionals.ps1 -#-----| -> {...} - -# 1| enter {...} -#-----| -> {...} - -# 1| {...} -#-----| -> param(...) - -# 11| enter {...} -#-----| -> {...} - -# 11| {...} -#-----| -> param(...) - -# 24| enter {...} -#-----| -> {...} - -# 24| {...} -#-----| -> param(...) - -# 34| enter {...} -#-----| -> {...} - -# 34| {...} -#-----| -> param(...) - -# 47| enter {...} -#-----| -> {...} - -# 47| {...} -#-----| -> param(...) - -# 57| enter {...} -#-----| -> {...} - -# 57| {...} -#-----| -> param(...) - -# 70| enter {...} -#-----| -> {...} - -# 70| {...} -#-----| -> param(...) - -# 84| enter {...} -#-----| -> {...} - -# 84| {...} -#-----| -> param(...) - -# 101| enter {...} -#-----| -> {...} - -# 101| {...} -#-----| -> {...} - -# 110| enter {...} -#-----| -> {...} - -# 110| {...} -#-----| -> {...} - -# 123| enter {...} -#-----| -> {...} - -# 123| {...} -#-----| -> {...} - -functions.ps1: -# 1| enter functions.ps1 -#-----| -> functions.ps1 - -# 1| functions.ps1 -#-----| -> {...} - -# 1| enter {...} -#-----| -> {...} - -# 1| {...} -#-----| -> param(...) - -# 11| enter {...} -#-----| -> {...} - -# 11| {...} -#-----| -> param(...) - -# 13| enter {...} -#-----| -> {...} - -# 13| {...} -#-----| -> 0 - -# 22| enter {...} -#-----| -> {...} - -# 22| {...} -#-----| -> param(...) - -# 36| enter {...} -#-----| -> {...} - -# 36| {...} -#-----| -> param(...) - -global.ps1: -# 1| enter global.ps1 -#-----| -> global.ps1 - -# 1| global.ps1 -#-----| -> {...} - -loops.ps1: -# 1| enter loops.ps1 -#-----| -> loops.ps1 - -# 1| loops.ps1 -#-----| -> {...} - -# 1| enter {...} -#-----| -> {...} - -# 1| {...} -#-----| -> {...} - -# 9| enter {...} -#-----| -> {...} - -# 9| {...} -#-----| -> {...} - -# 17| enter {...} -#-----| -> {...} - -# 17| {...} -#-----| -> {...} - -# 25| enter {...} -#-----| -> {...} - -# 25| {...} -#-----| -> {...} - -# 33| enter {...} -#-----| -> {...} - -# 33| {...} -#-----| -> {...} - -# 41| enter {...} -#-----| -> {...} - -# 41| {...} -#-----| -> {...} - -# 49| enter {...} -#-----| -> {...} - -# 49| {...} -#-----| -> {...} - -# 58| enter {...} -#-----| -> {...} - -# 58| {...} -#-----| -> {...} - -try.ps1: -# 1| enter try.ps1 -#-----| -> try.ps1 - -# 1| try.ps1 -#-----| -> {...} - -# 1| enter {...} -#-----| -> {...} - -# 1| {...} -#-----| -> {...} - -# 10| enter {...} -#-----| -> {...} - -# 10| {...} -#-----| -> {...} - -# 21| enter {...} -#-----| -> {...} - -# 21| {...} -#-----| -> {...} - -# 32| enter {...} -#-----| -> {...} - -# 32| {...} -#-----| -> {...} - -# 43| enter {...} -#-----| -> {...} - -# 43| {...} -#-----| -> {...} - -# 52| enter {...} -#-----| -> {...} - -# 52| {...} -#-----| -> {...} - -# 61| enter {...} -#-----| -> {...} - -# 61| {...} -#-----| -> {...} - -# 72| enter {...} -#-----| -> {...} - -# 72| {...} -#-----| -> {...} - -# 81| enter {...} -#-----| -> {...} - -# 81| {...} -#-----| -> {...} - -# 92| enter {...} -#-----| -> {...} - -# 92| {...} -#-----| -> {...} - -# 105| enter {...} -#-----| -> {...} - -# 105| {...} -#-----| -> {...} - -# 116| enter {...} -#-----| -> {...} - -# 116| {...} -#-----| -> {...} - -# 125| enter {...} -#-----| -> {...} - -# 125| {...} -#-----| -> {...} - -# 136| enter {...} -#-----| -> {...} - -# 136| {...} -#-----| -> {...} - -# 149| enter {...} -#-----| -> {...} - -# 149| {...} -#-----| -> {...} - -# 164| enter {...} -#-----| -> {...} - -# 164| {...} -#-----| -> {...} - -# 179| enter {...} -#-----| -> {...} - -# 179| {...} -#-----| -> {...} - -conditionals.ps1: -# 1| {...} -#-----| -> test-if - -# 1| test-if -#-----| -> test-if-else - -# 11| test-if-else -#-----| -> test-if-conj - -# 24| test-if-conj -#-----| -> test-if-else-conj - -# 34| test-if-else-conj -#-----| -> test-if-disj - -# 47| test-if-disj -#-----| -> test-if-else-disj - -# 57| test-if-else-disj -#-----| -> test-else-if - -# 70| test-else-if -#-----| -> test-else-if-else - -# 84| test-else-if-else -#-----| -> test-switch - -# 101| test-switch -#-----| -> test-switch-default - -# 110| test-switch-default -#-----| -> test-switch-assign - -# 123| test-switch-assign -#-----| -> exit conditionals.ps1 (normal) - -# 1| exit conditionals.ps1 (normal) -#-----| -> exit conditionals.ps1 - -# 4| myBool -#-----| -> {...} - -# 5| {...} -#-----| -> return ... - -# 6| 10 -#-----| -> return ... - -# 8| return ... -#-----| -> 11 - -# 8| 11 -#-----| -> exit {...} (normal) - -# 1| exit {...} (normal) -#-----| -> exit {...} - -# 2| param(...) -#-----| -> {...} - -# 2| {...} -#-----| -> if (...) {...} - -# 4| if (...) {...} -#-----| -> myBool - -# 4| myBool -#-----| -> myBool - -# 6| return ... -#-----| -> 10 - -# 6| 10 -#-----| -> 10 - -# 8| 11 -#-----| -> 11 - -# 14| myBool -#-----| -> {...} -#-----| -> {...} - -# 15| {...} -#-----| -> return ... - -# 19| {...} -#-----| -> return ... - -# 16| 10 -#-----| -> exit {...} (normal) - -# 11| exit {...} (normal) -#-----| -> exit {...} - -# 20| 11 -#-----| -> exit {...} (normal) - -# 12| param(...) -#-----| -> {...} - -# 12| {...} -#-----| -> if (...) {...} else {...} - -# 14| if (...) {...} else {...} -#-----| -> myBool - -# 14| myBool -#-----| -> myBool - -# 16| return ... -#-----| -> 10 - -# 16| 10 -#-----| -> 10 - -# 20| return ... -#-----| -> 11 - -# 20| 11 -#-----| -> 11 - -# 27| ... -and ... -#-----| -> {...} - -# 28| {...} -#-----| -> return ... - -# 29| 10 -#-----| -> return ... - -# 31| return ... -#-----| -> 11 - -# 31| 11 -#-----| -> exit {...} (normal) - -# 24| exit {...} (normal) -#-----| -> exit {...} - -# 25| param(...) -#-----| -> {...} - -# 25| {...} -#-----| -> if (...) {...} - -# 27| if (...) {...} -#-----| -> ... -and ... - -# 27| ... -and ... -#-----| -> myBool1 - -# 27| myBool1 -#-----| -> myBool2 - -# 27| myBool2 -#-----| -> ... -and ... - -# 29| return ... -#-----| -> 10 - -# 29| 10 -#-----| -> 10 - -# 31| 11 -#-----| -> 11 - -# 37| ... -and ... -#-----| -> {...} -#-----| -> {...} - -# 38| {...} -#-----| -> return ... - -# 42| {...} -#-----| -> return ... - -# 39| 10 -#-----| -> exit {...} (normal) - -# 34| exit {...} (normal) -#-----| -> exit {...} - -# 43| 11 -#-----| -> exit {...} (normal) - -# 35| param(...) -#-----| -> {...} - -# 35| {...} -#-----| -> if (...) {...} else {...} - -# 37| if (...) {...} else {...} -#-----| -> ... -and ... - -# 37| ... -and ... -#-----| -> myBool1 - -# 37| myBool1 -#-----| -> myBool2 - -# 37| myBool2 -#-----| -> ... -and ... - -# 39| return ... -#-----| -> 10 - -# 39| 10 -#-----| -> 10 - -# 43| return ... -#-----| -> 11 - -# 43| 11 -#-----| -> 11 - -# 50| ... -or ... -#-----| -> {...} - -# 51| {...} -#-----| -> return ... - -# 52| 10 -#-----| -> return ... - -# 54| return ... -#-----| -> 11 - -# 54| 11 -#-----| -> exit {...} (normal) - -# 47| exit {...} (normal) -#-----| -> exit {...} - -# 48| param(...) -#-----| -> {...} - -# 48| {...} -#-----| -> if (...) {...} - -# 50| if (...) {...} -#-----| -> ... -or ... - -# 50| ... -or ... -#-----| -> myBool1 - -# 50| myBool1 -#-----| -> myBool2 - -# 50| myBool2 -#-----| -> ... -or ... - -# 52| return ... -#-----| -> 10 - -# 52| 10 -#-----| -> 10 - -# 54| 11 -#-----| -> 11 - -# 60| ... -or ... -#-----| -> {...} -#-----| -> {...} - -# 61| {...} -#-----| -> return ... - -# 65| {...} -#-----| -> return ... - -# 62| 10 -#-----| -> exit {...} (normal) - -# 57| exit {...} (normal) -#-----| -> exit {...} - -# 66| 11 -#-----| -> exit {...} (normal) - -# 58| param(...) -#-----| -> {...} - -# 58| {...} -#-----| -> if (...) {...} else {...} - -# 60| if (...) {...} else {...} -#-----| -> ... -or ... - -# 60| ... -or ... -#-----| -> myBool1 - -# 60| myBool1 -#-----| -> myBool2 - -# 60| myBool2 -#-----| -> ... -or ... - -# 62| return ... -#-----| -> 10 - -# 62| 10 -#-----| -> 10 - -# 66| return ... -#-----| -> 11 - -# 66| 11 -#-----| -> 11 - -# 73| myBool1 -#-----| -> {...} - -# 74| {...} -#-----| -> return ... - -# 75| 10 -#-----| -> return ... - -# 81| return ... -#-----| -> 12 - -# 81| 12 -#-----| -> exit {...} (normal) - -# 70| exit {...} (normal) -#-----| -> exit {...} - -# 71| param(...) -#-----| -> {...} - -# 71| {...} -#-----| -> if (...) {...} - -# 73| if (...) {...} -#-----| -> myBool1 - -# 73| myBool1 -#-----| -> myBool1 - -# 75| return ... -#-----| -> 10 - -# 75| 10 -#-----| -> 10 - -# 81| 12 -#-----| -> 12 - -# 87| myBool1 -#-----| -> {...} -#-----| -> {...} - -# 88| {...} -#-----| -> return ... - -# 96| {...} -#-----| -> return ... - -# 89| 10 -#-----| -> exit {...} (normal) - -# 84| exit {...} (normal) -#-----| -> exit {...} - -# 97| 12 -#-----| -> exit {...} (normal) - -# 85| param(...) -#-----| -> {...} - -# 85| {...} -#-----| -> if (...) {...} else {...} - -# 87| if (...) {...} else {...} -#-----| -> myBool1 - -# 87| myBool1 -#-----| -> myBool1 - -# 89| return ... -#-----| -> 10 - -# 89| 10 -#-----| -> 10 - -# 97| return ... -#-----| -> 12 - -# 97| 12 -#-----| -> 12 - -# 102| switch(...) {...} -#-----| -> n - -# 102| n -#-----| -> n - -# 102| n -#-----| -> 0: - -# 104| 0: -#-----| -> {...} -#-----| -> 1: - -# 104| 0 -#-----| -> exit {...} (normal) - -# 101| exit {...} (normal) -#-----| -> exit {...} - -# 105| 1 -#-----| -> exit {...} (normal) - -# 106| 2 -#-----| -> exit {...} (normal) - -# 102| {...} -#-----| -> switch(...) {...} - -# 104| {...} -#-----| -> return ... - -# 105| 1: -#-----| -> {...} -#-----| -> 2: - -# 104| return ... -#-----| -> 0 - -# 104| 0 -#-----| -> 0 - -# 105| {...} -#-----| -> return ... - -# 106| 2: -#-----| -> {...} -#-----| -> exit {...} (normal) - -# 105| return ... -#-----| -> 1 - -# 105| 1 -#-----| -> 1 - -# 106| {...} -#-----| -> return ... - -# 106| return ... -#-----| -> 2 - -# 106| 2 -#-----| -> 2 - -# 111| switch(...) {...} -#-----| -> n - -# 111| n -#-----| -> n - -# 111| n -#-----| -> 0: - -# 113| 0: -#-----| -> {...} -#-----| -> 1: - -# 113| 0 -#-----| -> exit {...} (normal) - -# 110| exit {...} (normal) -#-----| -> exit {...} - -# 114| 1 -#-----| -> exit {...} (normal) - -# 115| 2 -#-----| -> exit {...} (normal) - -# 118| 3 -#-----| -> exit {...} (normal) - -# 111| {...} -#-----| -> switch(...) {...} - -# 113| {...} -#-----| -> return ... - -# 114| 1: -#-----| -> {...} -#-----| -> 2: - -# 113| return ... -#-----| -> 0 - -# 113| 0 -#-----| -> 0 - -# 114| {...} -#-----| -> return ... - -# 115| 2: -#-----| -> {...} -#-----| -> default: - -# 114| return ... -#-----| -> 1 - -# 114| 1 -#-----| -> 1 - -# 115| {...} -#-----| -> return ... - -# 116| default: -#-----| -> {...} -#-----| -> exit {...} (normal) - -# 115| return ... -#-----| -> 2 - -# 115| 2 -#-----| -> 2 - -# 116| {...} -#-----| -> Write-Output - -# 117| Write-Output -#-----| -> Error! - -# 117| Write-Output -#-----| -> return ... - -# 118| return ... -#-----| -> 3 - -# 117| Error! -#-----| -> Write-Output - -# 118| 3 -#-----| -> 3 - -# 124| ...=... -#-----| -> a - -# 124| a -#-----| -> switch(...) {...} - -# 124| n -#-----| -> 0: - -# 125| 0: -#-----| -> {...} -#-----| -> 1: - -# 125| 0 -#-----| -> exit {...} (normal) - -# 123| exit {...} (normal) -#-----| -> exit {...} - -# 126| 1 -#-----| -> exit {...} (normal) - -# 127| 2 -#-----| -> exit {...} (normal) - -# 124| {...} -#-----| -> ...=... - -# 124| switch(...) {...} -#-----| -> n - -# 124| n -#-----| -> n - -# 125| {...} -#-----| -> 0 - -# 126| 1: -#-----| -> {...} -#-----| -> 2: - -# 125| 0 -#-----| -> 0 - -# 126| {...} -#-----| -> 1 - -# 127| 2: -#-----| -> {...} -#-----| -> exit {...} (normal) - -# 126| 1 -#-----| -> 1 - -# 127| {...} -#-----| -> 2 - -# 127| 2 -#-----| -> 2 - -functions.ps1: -# 1| {...} -#-----| -> Add-Numbers-Arguments - -# 1| Add-Numbers-Arguments -#-----| -> foo - -# 11| foo -#-----| -> Default-Arguments - -# 13| Default-Arguments -#-----| -> Add-Numbers-From-Array - -# 22| Add-Numbers-From-Array -#-----| -> Add-Numbers-From-Pipeline - -# 36| Add-Numbers-From-Pipeline -#-----| -> exit functions.ps1 (normal) - -# 1| exit functions.ps1 (normal) -#-----| -> exit functions.ps1 - -# 8| ...+... -#-----| -> exit {...} (normal) - -# 1| exit {...} (normal) -#-----| -> exit {...} - -# 3| param(...) -#-----| -> {...} - -# 3| {...} -#-----| -> ...+... - -# 8| ...+... -#-----| -> number1 - -# 8| number1 -#-----| -> number2 - -# 8| number2 -#-----| -> ...+... - -# 11| {...} -#-----| -> exit {...} (normal) - -# 11| exit {...} (normal) -#-----| -> exit {...} - -# 11| param(...) -#-----| -> {...} - -# 19| ...+... -#-----| -> exit {...} (normal) - -# 13| exit {...} (normal) -#-----| -> exit {...} - -# 16| 0 -#-----| -> name1 - -# 14| param(...) -#-----| -> {...} - -# 14| {...} -#-----| -> ...+... - -# 17| name1 -#-----| -> 1 - -# 17| 1 -#-----| -> ...+... - -# 17| ...+... -#-----| -> param(...) - -# 19| ...+... -#-----| -> name - -# 19| name -#-----| -> name2 - -# 19| name2 -#-----| -> ...+... - -# 28| 0 -#-----| -> numbers - -# 29| numbers -#-----| -> numbers - -# 29| numbers -#-----| -> forach(... in ...) - -# 29| forach(... in ...) -#-----| -> number -#-----| -> sum - -# 31| number -#-----| -> forach(... in ...) - -# 33| sum -#-----| -> exit {...} (normal) - -# 22| exit {...} (normal) -#-----| -> exit {...} - -# 24| param(...) -#-----| -> {...} - -# 24| {...} -#-----| -> ...=... - -# 28| ...=... -#-----| -> sum - -# 28| sum -#-----| -> 0 - -# 28| 0 -#-----| -> 0 - -# 29| number -#-----| -> {...} - -# 29| {...} -#-----| -> ...=... - -# 33| sum -#-----| -> sum - -# 31| ...=... -#-----| -> sum - -# 31| sum -#-----| -> number - -# 31| number -#-----| -> number - -# 42| 0 -#-----| -> {...} - -# 44| {...} -#-----| -> ...=... - -# 50| sum -#-----| -> exit {...} (normal) - -# 36| exit {...} (normal) -#-----| -> exit {...} - -# 46| _ -#-----| -> {...} -#-----| -> {...} - -# 48| {...} -#-----| -> sum - -# 38| param(...) -#-----| -> {...} - -# 41| {...} -#-----| -> ...=... - -# 42| ...=... -#-----| -> sum - -# 42| sum -#-----| -> 0 - -# 42| 0 -#-----| -> 0 - -# 50| sum -#-----| -> sum - -# 46| ...=... -#-----| -> sum - -# 46| sum -#-----| -> _ - -# 46| _ -#-----| -> _ - -global.ps1: -# 2| 1 -#-----| -> ...=... - -# 3| ...=... -#-----| -> b - -# 3| 2 -#-----| -> {...} - -# 5| {...} -#-----| -> ...=... - -# 6| ...+... -#-----| -> exit global.ps1 (normal) - -# 1| exit global.ps1 (normal) -#-----| -> exit global.ps1 - -# 1| {...} -#-----| -> ...=... - -# 2| ...=... -#-----| -> a - -# 2| a -#-----| -> 1 - -# 2| 1 -#-----| -> 1 - -# 3| b -#-----| -> 2 - -# 3| 2 -#-----| -> 2 - -# 6| ...=... -#-----| -> c - -# 6| c -#-----| -> ...+... - -# 6| ...+... -#-----| -> a - -# 6| a -#-----| -> b - -# 6| b -#-----| -> ...+... - -loops.ps1: -# 1| {...} -#-----| -> Test-While - -# 1| Test-While -#-----| -> Test-Break - -# 9| Test-Break -#-----| -> Test-Continue - -# 17| Test-Continue -#-----| -> Test-DoWhile - -# 25| Test-DoWhile -#-----| -> Test-DoUntil - -# 33| Test-DoUntil -#-----| -> Test-For - -# 41| Test-For -#-----| -> Test-ForEach - -# 49| Test-ForEach -#-----| -> Test-For-Ever - -# 58| Test-For-Ever -#-----| -> exit loops.ps1 (normal) - -# 1| exit loops.ps1 (normal) -#-----| -> exit loops.ps1 - -# 2| 0 -#-----| -> while(...) {...} - -# 4| while(...) {...} -#-----| -> ... -le ... - -# 5| ...+... -#-----| -> ... -le ... - -# 4| ... -le ... -#-----| -> a - -# 4| ... -le ... -#-----| -> {...} -#-----| -> exit {...} (normal) - -# 4| {...} -#-----| -> ...=... - -# 1| exit {...} (normal) -#-----| -> exit {...} - -# 2| {...} -#-----| -> ...=... - -# 2| ...=... -#-----| -> a - -# 2| a -#-----| -> 0 - -# 2| 0 -#-----| -> 0 - -# 5| ...=... -#-----| -> a - -# 5| a -#-----| -> ...+... - -# 5| ...+... -#-----| -> a - -# 5| a -#-----| -> 1 - -# 5| 1 -#-----| -> ...+... - -# 4| a -#-----| -> 10 - -# 4| 10 -#-----| -> ... -le ... - -# 10| 0 -#-----| -> while(...) {...} - -# 11| while(...) {...} -#-----| -> ... -le ... - -# 11| ... -le ... -#-----| -> {...} -#-----| -> exit {...} (normal) - -# 11| {...} -#-----| -> break - -# 9| exit {...} (normal) -#-----| -> exit {...} - -# 10| {...} -#-----| -> ...=... - -# 10| ...=... -#-----| -> a - -# 10| a -#-----| -> 0 - -# 10| 0 -#-----| -> 0 - -# 12| break -#-----| -> exit {...} (normal) - -# 11| ... -le ... -#-----| -> a - -# 11| a -#-----| -> 10 - -# 11| 10 -#-----| -> ... -le ... - -# 18| 0 -#-----| -> while(...) {...} - -# 19| while(...) {...} -#-----| -> ... -le ... - -# 19| ... -le ... -#-----| -> {...} -#-----| -> exit {...} (normal) - -# 19| {...} -#-----| -> continue - -# 17| exit {...} (normal) -#-----| -> exit {...} - -# 18| {...} -#-----| -> ...=... - -# 18| ...=... -#-----| -> a - -# 18| a -#-----| -> 0 - -# 18| 0 -#-----| -> 0 - -# 20| continue -#-----| -> ... -le ... - -# 19| ... -le ... -#-----| -> a - -# 19| a -#-----| -> 10 - -# 19| 10 -#-----| -> ... -le ... - -# 26| 0 -#-----| -> DoWhile - -# 28| DoWhile -#-----| -> {...} - -# 29| ...+... -#-----| -> ... -le ... - -# 30| ... -le ... -#-----| -> a - -# 30| ... -le ... -#-----| -> {...} -#-----| -> exit {...} (normal) - -# 28| {...} -#-----| -> ...=... - -# 25| exit {...} (normal) -#-----| -> exit {...} - -# 26| {...} -#-----| -> ...=... - -# 26| ...=... -#-----| -> a - -# 26| a -#-----| -> 0 - -# 26| 0 -#-----| -> 0 - -# 29| ...=... -#-----| -> a - -# 29| a -#-----| -> ...+... - -# 29| ...+... -#-----| -> a - -# 29| a -#-----| -> 1 - -# 29| 1 -#-----| -> ...+... - -# 30| a -#-----| -> 10 - -# 30| 10 -#-----| -> ... -le ... - -# 34| 0 -#-----| -> DoUntil - -# 36| DoUntil -#-----| -> {...} - -# 37| ...+... -#-----| -> ... -ge ... - -# 38| ... -ge ... -#-----| -> a - -# 38| ... -ge ... -#-----| -> {...} -#-----| -> exit {...} (normal) - -# 36| {...} -#-----| -> ...=... - -# 33| exit {...} (normal) -#-----| -> exit {...} - -# 34| {...} -#-----| -> ...=... - -# 34| ...=... -#-----| -> a - -# 34| a -#-----| -> 0 - -# 34| 0 -#-----| -> 0 - -# 37| ...=... -#-----| -> a - -# 37| a -#-----| -> ...+... - -# 37| ...+... -#-----| -> a - -# 37| a -#-----| -> 1 - -# 37| 1 -#-----| -> ...+... - -# 38| a -#-----| -> 10 - -# 38| 10 -#-----| -> ... -ge ... - -# 42| 0 -#-----| -> for(...;...;...) - -# 44| for(...;...;...) -#-----| -> ...=... - -# 45| ...+... -#-----| -> ... -le ... -#-----| -> ...=... - -# 44| ... -le ... -#-----| -> i - -# 44| ...=... -#-----| -> i - -# 44| 0 -#-----| -> ... -le ... - -# 44| ... -le ... -#-----| -> {...} -#-----| -> exit {...} (normal) - -# 44| {...} -#-----| -> ...=... - -# 41| exit {...} (normal) -#-----| -> exit {...} - -# 44| ...+... -#-----| -> ... -le ... - -# 42| {...} -#-----| -> ...=... - -# 42| ...=... -#-----| -> a - -# 42| a -#-----| -> 0 - -# 42| 0 -#-----| -> 0 - -# 45| ...=... -#-----| -> a - -# 45| a -#-----| -> ...+... - -# 45| ...+... -#-----| -> a - -# 45| a -#-----| -> 1 - -# 45| 1 -#-----| -> ...+... - -# 44| ...=... -#-----| -> i - -# 44| i -#-----| -> 0 - -# 44| 0 -#-----| -> 0 - -# 44| i -#-----| -> 10 - -# 44| 10 -#-----| -> ... -le ... - -# 44| i -#-----| -> ...+... - -# 44| ...+... -#-----| -> i - -# 44| i -#-----| -> 1 - -# 44| 1 -#-----| -> ...+... - -# 50| ...,... -#-----| -> ...=... - -# 51| ...=... -#-----| -> a - -# 51| 0 -#-----| -> letterArray - -# 52| letterArray -#-----| -> letterArray - -# 52| letterArray -#-----| -> forach(... in ...) - -# 52| forach(... in ...) -#-----| -> letter -#-----| -> exit {...} (normal) - -# 54| ...+... -#-----| -> forach(... in ...) - -# 50| {...} -#-----| -> ...=... - -# 50| ...=... -#-----| -> letterArray - -# 50| letterArray -#-----| -> ...,... - -# 50| ...,... -#-----| -> a - -# 50| a -#-----| -> b - -# 50| b -#-----| -> c - -# 50| c -#-----| -> d - -# 50| d -#-----| -> ...,... - -# 51| a -#-----| -> 0 - -# 51| 0 -#-----| -> 0 - -# 52| letter -#-----| -> {...} - -# 53| {...} -#-----| -> ...=... - -# 49| exit {...} (normal) -#-----| -> exit {...} - -# 54| ...=... -#-----| -> a - -# 54| a -#-----| -> ...+... - -# 54| ...+... -#-----| -> a - -# 54| a -#-----| -> 1 - -# 54| 1 -#-----| -> ...+... - -# 59| 0 -#-----| -> for(...;...;...) - -# 61| for(...;...;...) - -# 59| {...} -#-----| -> ...=... - -# 59| ...=... -#-----| -> a - -# 59| a -#-----| -> 0 - -# 59| 0 -#-----| -> 0 - -try.ps1: -# 1| {...} -#-----| -> test-try-catch - -# 1| test-try-catch -#-----| -> test-try-with-throw-catch - -# 10| test-try-with-throw-catch -#-----| -> test-try-with-throw-catch-with-throw - -# 21| test-try-with-throw-catch-with-throw -#-----| -> test-try-with-throw-catch-with-rethrow - -# 32| test-try-with-throw-catch-with-rethrow -#-----| -> test-try-catch-specific-1 - -# 43| test-try-catch-specific-1 -#-----| -> test-try-catch-specific-1 - -# 52| test-try-catch-specific-1 -#-----| -> test-try-two-catch-specific-1 - -# 61| test-try-two-catch-specific-1 -#-----| -> test-try-catch-specific-2 - -# 72| test-try-catch-specific-2 -#-----| -> test-try-two-catch-specific-2 - -# 81| test-try-two-catch-specific-2 -#-----| -> test-try-three-catch-specific-2 - -# 92| test-try-three-catch-specific-2 -#-----| -> test-try-catch-finally - -# 105| test-try-catch-finally -#-----| -> test-try-finally - -# 116| test-try-finally -#-----| -> test-try-finally-catch-specific-1 - -# 125| test-try-finally-catch-specific-1 -#-----| -> test-nested-try-inner-finally - -# 136| test-nested-try-inner-finally -#-----| -> test-nested-try-inner-finally - -# 149| test-nested-try-inner-finally -#-----| -> test-nested-try-outer-finally - -# 164| test-nested-try-outer-finally -#-----| -> test-nested-try-inner-outer-finally - -# 179| test-nested-try-inner-outer-finally -#-----| -> exit try.ps1 (normal) - -# 1| exit try.ps1 (normal) -#-----| -> exit try.ps1 - -# 7| 1 -#-----| -> exit {...} (normal) - -# 1| exit {...} (normal) -#-----| -> exit {...} - -# 2| {...} -#-----| -> try {...} - -# 2| try {...} -#-----| -> {...} - -# 2| {...} -#-----| -> Write-Output - -# 3| Write-Output -#-----| -> Hello! - -# 3| Write-Output -#-----| -> return ... - -# 7| return ... -#-----| -> 1 - -# 3| Hello! -#-----| -> Write-Output - -# 7| 1 -#-----| -> 1 - -# 12| b -#-----| -> {...} - -# 12| {...} -#-----| -> throw ... - -# 13| 42 -#-----| -> return ... - -# 18| return ... -#-----| -> 1 - -# 18| 1 -#-----| -> exit {...} (normal) - -# 10| exit {...} (normal) -#-----| -> exit {...} - -# 11| {...} -#-----| -> try {...} - -# 11| try {...} -#-----| -> {...} - -# 11| {...} -#-----| -> if (...) {...} - -# 12| if (...) {...} -#-----| -> b - -# 12| b -#-----| -> b - -# 13| throw ... -#-----| -> 42 - -# 13| 42 -#-----| -> 42 - -# 18| 1 -#-----| -> 1 - -# 23| b -#-----| -> {...} - -# 23| {...} -#-----| -> throw ... - -# 24| 42 -#-----| -> return ... - -# 29| return ... -#-----| -> 1 - -# 29| 1 -#-----| -> exit {...} (normal) - -# 21| exit {...} (normal) -#-----| -> exit {...} - -# 22| {...} -#-----| -> try {...} - -# 22| try {...} -#-----| -> {...} - -# 22| {...} -#-----| -> if (...) {...} - -# 23| if (...) {...} -#-----| -> b - -# 23| b -#-----| -> b - -# 24| throw ... -#-----| -> 42 - -# 24| 42 -#-----| -> 42 - -# 29| 1 -#-----| -> 1 - -# 34| b -#-----| -> {...} - -# 34| {...} -#-----| -> throw ... - -# 35| 42 -#-----| -> return ... - -# 40| return ... -#-----| -> 1 - -# 40| 1 -#-----| -> exit {...} (normal) - -# 32| exit {...} (normal) -#-----| -> exit {...} - -# 33| {...} -#-----| -> try {...} - -# 33| try {...} -#-----| -> {...} - -# 33| {...} -#-----| -> if (...) {...} - -# 34| if (...) {...} -#-----| -> b - -# 34| b -#-----| -> b - -# 35| throw ... -#-----| -> 42 - -# 35| 42 -#-----| -> 42 - -# 40| 1 -#-----| -> 1 - -# 49| 1 -#-----| -> exit {...} (normal) - -# 43| exit {...} (normal) -#-----| -> exit {...} - -# 44| {...} -#-----| -> try {...} - -# 44| try {...} -#-----| -> {...} - -# 44| {...} -#-----| -> Write-Output - -# 45| Write-Output -#-----| -> Hello! - -# 45| Write-Output -#-----| -> return ... - -# 49| return ... -#-----| -> 1 - -# 45| Hello! -#-----| -> Write-Output - -# 49| 1 -#-----| -> 1 - -# 58| 1 -#-----| -> exit {...} (normal) - -# 52| exit {...} (normal) -#-----| -> exit {...} - -# 53| {...} -#-----| -> try {...} - -# 53| try {...} -#-----| -> {...} - -# 53| {...} -#-----| -> Write-Output - -# 54| Write-Output -#-----| -> Hello! - -# 54| Write-Output -#-----| -> return ... - -# 58| return ... -#-----| -> 1 - -# 54| Hello! -#-----| -> Write-Output - -# 58| 1 -#-----| -> 1 - -# 69| 2 -#-----| -> exit {...} (normal) - -# 61| exit {...} (normal) -#-----| -> exit {...} - -# 62| {...} -#-----| -> try {...} - -# 62| try {...} -#-----| -> {...} - -# 62| {...} -#-----| -> Write-Output - -# 63| Write-Output -#-----| -> Hello! - -# 63| Write-Output -#-----| -> return ... - -# 69| return ... -#-----| -> 2 - -# 63| Hello! -#-----| -> Write-Output - -# 69| 2 -#-----| -> 2 - -# 78| 1 -#-----| -> exit {...} (normal) - -# 72| exit {...} (normal) -#-----| -> exit {...} - -# 73| {...} -#-----| -> try {...} - -# 73| try {...} -#-----| -> {...} - -# 73| {...} -#-----| -> Write-Output - -# 74| Write-Output -#-----| -> Hello! - -# 74| Write-Output -#-----| -> return ... - -# 78| return ... -#-----| -> 1 - -# 74| Hello! -#-----| -> Write-Output - -# 78| 1 -#-----| -> 1 - -# 89| 2 -#-----| -> exit {...} (normal) - -# 81| exit {...} (normal) -#-----| -> exit {...} - -# 82| {...} -#-----| -> try {...} - -# 82| try {...} -#-----| -> {...} - -# 82| {...} -#-----| -> Write-Output - -# 83| Write-Output -#-----| -> Hello! - -# 83| Write-Output -#-----| -> return ... - -# 89| return ... -#-----| -> 2 - -# 83| Hello! -#-----| -> Write-Output - -# 89| 2 -#-----| -> 2 - -# 102| 3 -#-----| -> exit {...} (normal) - -# 92| exit {...} (normal) -#-----| -> exit {...} - -# 93| {...} -#-----| -> try {...} - -# 93| try {...} -#-----| -> {...} - -# 93| {...} -#-----| -> Write-Output - -# 94| Write-Output -#-----| -> Hello! - -# 94| Write-Output -#-----| -> return ... - -# 102| return ... -#-----| -> 3 - -# 94| Hello! -#-----| -> Write-Output - -# 102| 3 -#-----| -> 3 - -# 113| 1 -#-----| -> exit {...} (normal) - -# 105| exit {...} (normal) -#-----| -> exit {...} - -# 106| {...} -#-----| -> try {...} - -# 106| try {...} -#-----| -> {...} - -# 106| {...} -#-----| -> Write-Output - -# 107| Write-Output -#-----| -> Hello! - -# 107| Write-Output -#-----| -> {...} - -# 110| {...} -#-----| -> Write-Output - -# 107| Hello! -#-----| -> Write-Output - -# 111| Write-Output -#-----| -> Finally! - -# 111| Write-Output -#-----| -> return ... - -# 113| return ... -#-----| -> 1 - -# 111| Finally! -#-----| -> Write-Output - -# 113| 1 -#-----| -> 1 - -# 122| 1 -#-----| -> exit {...} (normal) - -# 116| exit {...} (normal) -#-----| -> exit {...} - -# 117| {...} -#-----| -> try {...} - -# 117| try {...} -#-----| -> {...} - -# 117| {...} -#-----| -> Write-Output - -# 118| Write-Output -#-----| -> Hello! - -# 118| Write-Output -#-----| -> {...} - -# 119| {...} -#-----| -> Write-Output - -# 118| Hello! -#-----| -> Write-Output - -# 120| Write-Output -#-----| -> Finally! - -# 120| Write-Output -#-----| -> return ... - -# 122| return ... -#-----| -> 1 - -# 120| Finally! -#-----| -> Write-Output - -# 122| 1 -#-----| -> 1 - -# 133| 1 -#-----| -> exit {...} (normal) - -# 125| exit {...} (normal) -#-----| -> exit {...} - -# 126| {...} -#-----| -> try {...} - -# 126| try {...} -#-----| -> {...} - -# 126| {...} -#-----| -> Write-Output - -# 127| Write-Output -#-----| -> Hello! - -# 127| Write-Output -#-----| -> {...} - -# 130| {...} -#-----| -> Write-Output - -# 127| Hello! -#-----| -> Write-Output - -# 131| Write-Output -#-----| -> Finally! - -# 131| Write-Output -#-----| -> return ... - -# 133| return ... -#-----| -> 1 - -# 131| Finally! -#-----| -> Write-Output - -# 133| 1 -#-----| -> 1 - -# 146| 1 -#-----| -> exit {...} (normal) - -# 136| exit {...} (normal) -#-----| -> exit {...} - -# 137| {...} -#-----| -> try {...} - -# 137| try {...} -#-----| -> {...} - -# 137| {...} -#-----| -> try {...} - -# 138| try {...} -#-----| -> {...} - -# 138| {...} -#-----| -> Write-Output - -# 139| Write-Output -#-----| -> Hello! - -# 139| Write-Output -#-----| -> return ... - -# 146| return ... -#-----| -> 1 - -# 139| Hello! -#-----| -> Write-Output - -# 146| 1 -#-----| -> 1 - -# 150| {...} -#-----| -> try {...} - -# 150| try {...} -#-----| -> {...} - -# 150| {...} -#-----| -> try {...} - -# 151| try {...} -#-----| -> {...} - -# 151| {...} -#-----| -> Write-Output - -# 152| Write-Output -#-----| -> Hello! - -# 152| Write-Output -#-----| -> {...} - -# 155| {...} -#-----| -> Write-Output - -# 152| Hello! -#-----| -> Write-Output - -# 161| 1 -#-----| -> exit {...} (normal) - -# 149| exit {...} (normal) -#-----| -> exit {...} - -# 156| Write-Output -#-----| -> Finally! - -# 156| Write-Output -#-----| -> return ... - -# 161| return ... -#-----| -> 1 - -# 156| Finally! -#-----| -> Write-Output - -# 161| 1 -#-----| -> 1 - -# 176| 1 -#-----| -> exit {...} (normal) - -# 164| exit {...} (normal) -#-----| -> exit {...} - -# 165| {...} -#-----| -> try {...} - -# 165| try {...} -#-----| -> {...} - -# 165| {...} -#-----| -> try {...} - -# 166| try {...} -#-----| -> {...} - -# 166| {...} -#-----| -> Write-Output - -# 167| Write-Output -#-----| -> Hello! - -# 167| Write-Output -#-----| -> {...} - -# 173| {...} -#-----| -> Write-Output - -# 167| Hello! -#-----| -> Write-Output - -# 174| Write-Output -#-----| -> Finally! - -# 174| Write-Output -#-----| -> return ... - -# 176| return ... -#-----| -> 1 - -# 174| Finally! -#-----| -> Write-Output - -# 176| 1 -#-----| -> 1 - -# 193| 1 -#-----| -> exit {...} (normal) - -# 179| exit {...} (normal) -#-----| -> exit {...} - -# 180| {...} -#-----| -> try {...} - -# 180| try {...} -#-----| -> {...} - -# 180| {...} -#-----| -> try {...} - -# 181| try {...} -#-----| -> {...} - -# 181| {...} -#-----| -> Write-Output - -# 182| Write-Output -#-----| -> Hello! - -# 182| Write-Output -#-----| -> {...} - -# 185| {...} -#-----| -> Write-Output - -# 182| Hello! -#-----| -> Write-Output - -# 186| Write-Output -#-----| -> Finally! - -# 186| Write-Output -#-----| -> {...} - -# 190| {...} -#-----| -> Write-Output - -# 186| Finally! -#-----| -> Write-Output - -# 191| Write-Output -#-----| -> Finally! - -# 191| Write-Output -#-----| -> return ... - -# 193| return ... -#-----| -> 1 - -# 191| Finally! -#-----| -> Write-Output - -# 193| 1 -#-----| -> 1 - -conditionals.ps1: -# 1| exit conditionals.ps1 - -# 1| exit {...} - -# 11| exit {...} - -# 24| exit {...} - -# 34| exit {...} - -# 47| exit {...} - -# 57| exit {...} - -# 70| exit {...} - -# 84| exit {...} - -# 101| exit {...} - -# 110| exit {...} - -# 123| exit {...} - -functions.ps1: -# 1| exit functions.ps1 - -# 1| exit {...} - -# 11| exit {...} - -# 13| exit {...} - -# 22| exit {...} - -# 36| exit {...} - -global.ps1: -# 1| exit global.ps1 - -loops.ps1: -# 1| exit loops.ps1 - -# 1| exit {...} - -# 9| exit {...} - -# 17| exit {...} - -# 25| exit {...} - -# 33| exit {...} - -# 41| exit {...} - -# 49| exit {...} - -try.ps1: -# 1| exit try.ps1 - -# 1| exit {...} - -# 10| exit {...} - -# 21| exit {...} - -# 32| exit {...} - -# 43| exit {...} - -# 52| exit {...} - -# 61| exit {...} - -# 72| exit {...} - -# 81| exit {...} - -# 92| exit {...} - -# 105| exit {...} - -# 116| exit {...} - -# 125| exit {...} - -# 136| exit {...} - -# 149| exit {...} - -# 164| exit {...} - -# 179| exit {...} +| conditionals.ps1:1:1:9:2 | test-if | conditionals.ps1:11:1:22:2 | test-if-else | | +| conditionals.ps1:1:1:129:2 | conditionals.ps1 | conditionals.ps1:1:1:129:2 | {...} | | +| conditionals.ps1:1:1:129:2 | enter conditionals.ps1 | conditionals.ps1:1:1:129:2 | conditionals.ps1 | | +| conditionals.ps1:1:1:129:2 | exit conditionals.ps1 (normal) | conditionals.ps1:1:1:129:2 | exit conditionals.ps1 | | +| conditionals.ps1:1:1:129:2 | {...} | conditionals.ps1:1:1:9:2 | test-if | | +| conditionals.ps1:1:18:9:2 | enter {...} | conditionals.ps1:1:18:9:2 | {...} | | +| conditionals.ps1:1:18:9:2 | exit {...} (normal) | conditionals.ps1:1:18:9:2 | exit {...} | | +| conditionals.ps1:1:18:9:2 | {...} | conditionals.ps1:2:5:2:19 | param(...) | | +| conditionals.ps1:2:5:2:19 | param(...) | conditionals.ps1:2:5:8:14 | {...} | | +| conditionals.ps1:2:5:8:14 | {...} | conditionals.ps1:4:5:7:6 | if (...) {...} | | +| conditionals.ps1:4:5:7:6 | if (...) {...} | conditionals.ps1:4:8:4:15 | myBool | | +| conditionals.ps1:4:8:4:15 | myBool | conditionals.ps1:4:8:4:15 | myBool | | +| conditionals.ps1:4:8:4:15 | myBool | conditionals.ps1:5:5:7:6 | {...} | true | +| conditionals.ps1:5:5:7:6 | {...} | conditionals.ps1:6:9:6:18 | return ... | | +| conditionals.ps1:6:9:6:18 | return ... | conditionals.ps1:6:16:6:18 | 10 | | +| conditionals.ps1:6:16:6:18 | 10 | conditionals.ps1:6:16:6:18 | 10 | | +| conditionals.ps1:6:16:6:18 | 10 | conditionals.ps1:8:5:8:14 | return ... | | +| conditionals.ps1:8:5:8:14 | return ... | conditionals.ps1:8:12:8:14 | 11 | | +| conditionals.ps1:8:12:8:14 | 11 | conditionals.ps1:1:18:9:2 | exit {...} (normal) | | +| conditionals.ps1:8:12:8:14 | 11 | conditionals.ps1:8:12:8:14 | 11 | | +| conditionals.ps1:11:1:22:2 | test-if-else | conditionals.ps1:24:1:32:2 | test-if-conj | | +| conditionals.ps1:11:23:22:2 | enter {...} | conditionals.ps1:11:23:22:2 | {...} | | +| conditionals.ps1:11:23:22:2 | exit {...} (normal) | conditionals.ps1:11:23:22:2 | exit {...} | | +| conditionals.ps1:11:23:22:2 | {...} | conditionals.ps1:12:5:12:19 | param(...) | | +| conditionals.ps1:12:5:12:19 | param(...) | conditionals.ps1:12:5:21:6 | {...} | | +| conditionals.ps1:12:5:21:6 | {...} | conditionals.ps1:14:5:21:6 | if (...) {...} else {...} | | +| conditionals.ps1:14:5:21:6 | if (...) {...} else {...} | conditionals.ps1:14:8:14:15 | myBool | | +| conditionals.ps1:14:8:14:15 | myBool | conditionals.ps1:14:8:14:15 | myBool | | +| conditionals.ps1:14:8:14:15 | myBool | conditionals.ps1:15:5:17:6 | {...} | true | +| conditionals.ps1:14:8:14:15 | myBool | conditionals.ps1:19:5:21:6 | {...} | false | +| conditionals.ps1:15:5:17:6 | {...} | conditionals.ps1:16:9:16:18 | return ... | | +| conditionals.ps1:16:9:16:18 | return ... | conditionals.ps1:16:16:16:18 | 10 | | +| conditionals.ps1:16:16:16:18 | 10 | conditionals.ps1:11:23:22:2 | exit {...} (normal) | | +| conditionals.ps1:16:16:16:18 | 10 | conditionals.ps1:16:16:16:18 | 10 | | +| conditionals.ps1:19:5:21:6 | {...} | conditionals.ps1:20:9:20:18 | return ... | | +| conditionals.ps1:20:9:20:18 | return ... | conditionals.ps1:20:16:20:18 | 11 | | +| conditionals.ps1:20:16:20:18 | 11 | conditionals.ps1:11:23:22:2 | exit {...} (normal) | | +| conditionals.ps1:20:16:20:18 | 11 | conditionals.ps1:20:16:20:18 | 11 | | +| conditionals.ps1:24:1:32:2 | test-if-conj | conditionals.ps1:34:1:45:2 | test-if-else-conj | | +| conditionals.ps1:24:23:32:2 | enter {...} | conditionals.ps1:24:23:32:2 | {...} | | +| conditionals.ps1:24:23:32:2 | exit {...} (normal) | conditionals.ps1:24:23:32:2 | exit {...} | | +| conditionals.ps1:24:23:32:2 | {...} | conditionals.ps1:25:5:25:30 | param(...) | | +| conditionals.ps1:25:5:25:30 | param(...) | conditionals.ps1:25:5:31:14 | {...} | | +| conditionals.ps1:25:5:31:14 | {...} | conditionals.ps1:27:5:30:6 | if (...) {...} | | +| conditionals.ps1:27:5:30:6 | if (...) {...} | conditionals.ps1:27:8:27:30 | ... -and ... | | +| conditionals.ps1:27:8:27:16 | myBool1 | conditionals.ps1:27:22:27:30 | myBool2 | false, true | +| conditionals.ps1:27:8:27:30 | ... -and ... | conditionals.ps1:27:8:27:16 | myBool1 | | +| conditionals.ps1:27:8:27:30 | ... -and ... | conditionals.ps1:28:5:30:6 | {...} | true | +| conditionals.ps1:27:22:27:30 | myBool2 | conditionals.ps1:27:8:27:30 | ... -and ... | false, true | +| conditionals.ps1:28:5:30:6 | {...} | conditionals.ps1:29:9:29:18 | return ... | | +| conditionals.ps1:29:9:29:18 | return ... | conditionals.ps1:29:16:29:18 | 10 | | +| conditionals.ps1:29:16:29:18 | 10 | conditionals.ps1:29:16:29:18 | 10 | | +| conditionals.ps1:29:16:29:18 | 10 | conditionals.ps1:31:5:31:14 | return ... | | +| conditionals.ps1:31:5:31:14 | return ... | conditionals.ps1:31:12:31:14 | 11 | | +| conditionals.ps1:31:12:31:14 | 11 | conditionals.ps1:24:23:32:2 | exit {...} (normal) | | +| conditionals.ps1:31:12:31:14 | 11 | conditionals.ps1:31:12:31:14 | 11 | | +| conditionals.ps1:34:1:45:2 | test-if-else-conj | conditionals.ps1:47:1:55:2 | test-if-disj | | +| conditionals.ps1:34:28:45:2 | enter {...} | conditionals.ps1:34:28:45:2 | {...} | | +| conditionals.ps1:34:28:45:2 | exit {...} (normal) | conditionals.ps1:34:28:45:2 | exit {...} | | +| conditionals.ps1:34:28:45:2 | {...} | conditionals.ps1:35:5:35:30 | param(...) | | +| conditionals.ps1:35:5:35:30 | param(...) | conditionals.ps1:35:5:44:6 | {...} | | +| conditionals.ps1:35:5:44:6 | {...} | conditionals.ps1:37:5:44:6 | if (...) {...} else {...} | | +| conditionals.ps1:37:5:44:6 | if (...) {...} else {...} | conditionals.ps1:37:8:37:30 | ... -and ... | | +| conditionals.ps1:37:8:37:16 | myBool1 | conditionals.ps1:37:22:37:30 | myBool2 | false, true | +| conditionals.ps1:37:8:37:30 | ... -and ... | conditionals.ps1:37:8:37:16 | myBool1 | | +| conditionals.ps1:37:8:37:30 | ... -and ... | conditionals.ps1:38:5:40:6 | {...} | true | +| conditionals.ps1:37:8:37:30 | ... -and ... | conditionals.ps1:42:5:44:6 | {...} | false | +| conditionals.ps1:37:22:37:30 | myBool2 | conditionals.ps1:37:8:37:30 | ... -and ... | false, true | +| conditionals.ps1:38:5:40:6 | {...} | conditionals.ps1:39:9:39:18 | return ... | | +| conditionals.ps1:39:9:39:18 | return ... | conditionals.ps1:39:16:39:18 | 10 | | +| conditionals.ps1:39:16:39:18 | 10 | conditionals.ps1:34:28:45:2 | exit {...} (normal) | | +| conditionals.ps1:39:16:39:18 | 10 | conditionals.ps1:39:16:39:18 | 10 | | +| conditionals.ps1:42:5:44:6 | {...} | conditionals.ps1:43:9:43:18 | return ... | | +| conditionals.ps1:43:9:43:18 | return ... | conditionals.ps1:43:16:43:18 | 11 | | +| conditionals.ps1:43:16:43:18 | 11 | conditionals.ps1:34:28:45:2 | exit {...} (normal) | | +| conditionals.ps1:43:16:43:18 | 11 | conditionals.ps1:43:16:43:18 | 11 | | +| conditionals.ps1:47:1:55:2 | test-if-disj | conditionals.ps1:57:1:68:2 | test-if-else-disj | | +| conditionals.ps1:47:23:55:2 | enter {...} | conditionals.ps1:47:23:55:2 | {...} | | +| conditionals.ps1:47:23:55:2 | exit {...} (normal) | conditionals.ps1:47:23:55:2 | exit {...} | | +| conditionals.ps1:47:23:55:2 | {...} | conditionals.ps1:48:5:48:30 | param(...) | | +| conditionals.ps1:48:5:48:30 | param(...) | conditionals.ps1:48:5:54:14 | {...} | | +| conditionals.ps1:48:5:54:14 | {...} | conditionals.ps1:50:5:53:6 | if (...) {...} | | +| conditionals.ps1:50:5:53:6 | if (...) {...} | conditionals.ps1:50:8:50:29 | ... -or ... | | +| conditionals.ps1:50:8:50:16 | myBool1 | conditionals.ps1:50:21:50:29 | myBool2 | false, true | +| conditionals.ps1:50:8:50:29 | ... -or ... | conditionals.ps1:50:8:50:16 | myBool1 | | +| conditionals.ps1:50:8:50:29 | ... -or ... | conditionals.ps1:51:5:53:6 | {...} | true | +| conditionals.ps1:50:21:50:29 | myBool2 | conditionals.ps1:50:8:50:29 | ... -or ... | false, true | +| conditionals.ps1:51:5:53:6 | {...} | conditionals.ps1:52:9:52:18 | return ... | | +| conditionals.ps1:52:9:52:18 | return ... | conditionals.ps1:52:16:52:18 | 10 | | +| conditionals.ps1:52:16:52:18 | 10 | conditionals.ps1:52:16:52:18 | 10 | | +| conditionals.ps1:52:16:52:18 | 10 | conditionals.ps1:54:5:54:14 | return ... | | +| conditionals.ps1:54:5:54:14 | return ... | conditionals.ps1:54:12:54:14 | 11 | | +| conditionals.ps1:54:12:54:14 | 11 | conditionals.ps1:47:23:55:2 | exit {...} (normal) | | +| conditionals.ps1:54:12:54:14 | 11 | conditionals.ps1:54:12:54:14 | 11 | | +| conditionals.ps1:57:1:68:2 | test-if-else-disj | conditionals.ps1:70:1:82:2 | test-else-if | | +| conditionals.ps1:57:28:68:2 | enter {...} | conditionals.ps1:57:28:68:2 | {...} | | +| conditionals.ps1:57:28:68:2 | exit {...} (normal) | conditionals.ps1:57:28:68:2 | exit {...} | | +| conditionals.ps1:57:28:68:2 | {...} | conditionals.ps1:58:5:58:30 | param(...) | | +| conditionals.ps1:58:5:58:30 | param(...) | conditionals.ps1:58:5:67:6 | {...} | | +| conditionals.ps1:58:5:67:6 | {...} | conditionals.ps1:60:5:67:6 | if (...) {...} else {...} | | +| conditionals.ps1:60:5:67:6 | if (...) {...} else {...} | conditionals.ps1:60:8:60:29 | ... -or ... | | +| conditionals.ps1:60:8:60:16 | myBool1 | conditionals.ps1:60:21:60:29 | myBool2 | false, true | +| conditionals.ps1:60:8:60:29 | ... -or ... | conditionals.ps1:60:8:60:16 | myBool1 | | +| conditionals.ps1:60:8:60:29 | ... -or ... | conditionals.ps1:61:5:63:6 | {...} | true | +| conditionals.ps1:60:8:60:29 | ... -or ... | conditionals.ps1:65:5:67:6 | {...} | false | +| conditionals.ps1:60:21:60:29 | myBool2 | conditionals.ps1:60:8:60:29 | ... -or ... | false, true | +| conditionals.ps1:61:5:63:6 | {...} | conditionals.ps1:62:9:62:18 | return ... | | +| conditionals.ps1:62:9:62:18 | return ... | conditionals.ps1:62:16:62:18 | 10 | | +| conditionals.ps1:62:16:62:18 | 10 | conditionals.ps1:57:28:68:2 | exit {...} (normal) | | +| conditionals.ps1:62:16:62:18 | 10 | conditionals.ps1:62:16:62:18 | 10 | | +| conditionals.ps1:65:5:67:6 | {...} | conditionals.ps1:66:9:66:18 | return ... | | +| conditionals.ps1:66:9:66:18 | return ... | conditionals.ps1:66:16:66:18 | 11 | | +| conditionals.ps1:66:16:66:18 | 11 | conditionals.ps1:57:28:68:2 | exit {...} (normal) | | +| conditionals.ps1:66:16:66:18 | 11 | conditionals.ps1:66:16:66:18 | 11 | | +| conditionals.ps1:70:1:82:2 | test-else-if | conditionals.ps1:84:1:99:2 | test-else-if-else | | +| conditionals.ps1:70:23:82:2 | enter {...} | conditionals.ps1:70:23:82:2 | {...} | | +| conditionals.ps1:70:23:82:2 | exit {...} (normal) | conditionals.ps1:70:23:82:2 | exit {...} | | +| conditionals.ps1:70:23:82:2 | {...} | conditionals.ps1:71:5:71:30 | param(...) | | +| conditionals.ps1:71:5:71:30 | param(...) | conditionals.ps1:71:5:81:14 | {...} | | +| conditionals.ps1:71:5:81:14 | {...} | conditionals.ps1:73:5:80:6 | if (...) {...} | | +| conditionals.ps1:73:5:80:6 | if (...) {...} | conditionals.ps1:73:8:73:16 | myBool1 | | +| conditionals.ps1:73:8:73:16 | myBool1 | conditionals.ps1:73:8:73:16 | myBool1 | | +| conditionals.ps1:73:8:73:16 | myBool1 | conditionals.ps1:74:5:76:6 | {...} | true | +| conditionals.ps1:74:5:76:6 | {...} | conditionals.ps1:75:9:75:18 | return ... | | +| conditionals.ps1:75:9:75:18 | return ... | conditionals.ps1:75:16:75:18 | 10 | | +| conditionals.ps1:75:16:75:18 | 10 | conditionals.ps1:75:16:75:18 | 10 | | +| conditionals.ps1:75:16:75:18 | 10 | conditionals.ps1:81:5:81:14 | return ... | | +| conditionals.ps1:81:5:81:14 | return ... | conditionals.ps1:81:12:81:14 | 12 | | +| conditionals.ps1:81:12:81:14 | 12 | conditionals.ps1:70:23:82:2 | exit {...} (normal) | | +| conditionals.ps1:81:12:81:14 | 12 | conditionals.ps1:81:12:81:14 | 12 | | +| conditionals.ps1:84:1:99:2 | test-else-if-else | conditionals.ps1:101:1:108:2 | test-switch | | +| conditionals.ps1:84:28:99:2 | enter {...} | conditionals.ps1:84:28:99:2 | {...} | | +| conditionals.ps1:84:28:99:2 | exit {...} (normal) | conditionals.ps1:84:28:99:2 | exit {...} | | +| conditionals.ps1:84:28:99:2 | {...} | conditionals.ps1:85:5:85:30 | param(...) | | +| conditionals.ps1:85:5:85:30 | param(...) | conditionals.ps1:85:5:98:6 | {...} | | +| conditionals.ps1:85:5:98:6 | {...} | conditionals.ps1:87:5:98:6 | if (...) {...} else {...} | | +| conditionals.ps1:87:5:98:6 | if (...) {...} else {...} | conditionals.ps1:87:8:87:16 | myBool1 | | +| conditionals.ps1:87:8:87:16 | myBool1 | conditionals.ps1:87:8:87:16 | myBool1 | | +| conditionals.ps1:87:8:87:16 | myBool1 | conditionals.ps1:88:5:90:6 | {...} | true | +| conditionals.ps1:87:8:87:16 | myBool1 | conditionals.ps1:96:5:98:6 | {...} | false | +| conditionals.ps1:88:5:90:6 | {...} | conditionals.ps1:89:9:89:18 | return ... | | +| conditionals.ps1:89:9:89:18 | return ... | conditionals.ps1:89:16:89:18 | 10 | | +| conditionals.ps1:89:16:89:18 | 10 | conditionals.ps1:84:28:99:2 | exit {...} (normal) | | +| conditionals.ps1:89:16:89:18 | 10 | conditionals.ps1:89:16:89:18 | 10 | | +| conditionals.ps1:96:5:98:6 | {...} | conditionals.ps1:97:9:97:18 | return ... | | +| conditionals.ps1:97:9:97:18 | return ... | conditionals.ps1:97:16:97:18 | 12 | | +| conditionals.ps1:97:16:97:18 | 12 | conditionals.ps1:84:28:99:2 | exit {...} (normal) | | +| conditionals.ps1:97:16:97:18 | 12 | conditionals.ps1:97:16:97:18 | 12 | | +| conditionals.ps1:101:1:108:2 | test-switch | conditionals.ps1:110:1:121:2 | test-switch-default | | +| conditionals.ps1:101:26:108:2 | enter {...} | conditionals.ps1:101:26:108:2 | {...} | | +| conditionals.ps1:101:26:108:2 | exit {...} (normal) | conditionals.ps1:101:26:108:2 | exit {...} | | +| conditionals.ps1:101:26:108:2 | {...} | conditionals.ps1:102:5:107:6 | {...} | | +| conditionals.ps1:102:5:107:6 | switch(...) {...} | conditionals.ps1:102:12:102:14 | n | | +| conditionals.ps1:102:5:107:6 | {...} | conditionals.ps1:102:5:107:6 | switch(...) {...} | | +| conditionals.ps1:102:12:102:14 | n | conditionals.ps1:102:12:102:14 | n | | +| conditionals.ps1:102:12:102:14 | n | conditionals.ps1:104:9:104:11 | 0: | | +| conditionals.ps1:104:9:104:11 | 0: | conditionals.ps1:104:12:104:25 | {...} | true | +| conditionals.ps1:104:9:104:11 | 0: | conditionals.ps1:105:9:105:11 | 1: | false | +| conditionals.ps1:104:12:104:25 | {...} | conditionals.ps1:104:14:104:22 | return ... | | +| conditionals.ps1:104:14:104:22 | return ... | conditionals.ps1:104:21:104:22 | 0 | | +| conditionals.ps1:104:21:104:22 | 0 | conditionals.ps1:101:26:108:2 | exit {...} (normal) | | +| conditionals.ps1:104:21:104:22 | 0 | conditionals.ps1:104:21:104:22 | 0 | | +| conditionals.ps1:105:9:105:11 | 1: | conditionals.ps1:105:12:105:25 | {...} | true | +| conditionals.ps1:105:9:105:11 | 1: | conditionals.ps1:106:9:106:11 | 2: | false | +| conditionals.ps1:105:12:105:25 | {...} | conditionals.ps1:105:14:105:22 | return ... | | +| conditionals.ps1:105:14:105:22 | return ... | conditionals.ps1:105:21:105:22 | 1 | | +| conditionals.ps1:105:21:105:22 | 1 | conditionals.ps1:101:26:108:2 | exit {...} (normal) | | +| conditionals.ps1:105:21:105:22 | 1 | conditionals.ps1:105:21:105:22 | 1 | | +| conditionals.ps1:106:9:106:11 | 2: | conditionals.ps1:101:26:108:2 | exit {...} (normal) | false | +| conditionals.ps1:106:9:106:11 | 2: | conditionals.ps1:106:12:106:25 | {...} | true | +| conditionals.ps1:106:12:106:25 | {...} | conditionals.ps1:106:14:106:22 | return ... | | +| conditionals.ps1:106:14:106:22 | return ... | conditionals.ps1:106:21:106:22 | 2 | | +| conditionals.ps1:106:21:106:22 | 2 | conditionals.ps1:101:26:108:2 | exit {...} (normal) | | +| conditionals.ps1:106:21:106:22 | 2 | conditionals.ps1:106:21:106:22 | 2 | | +| conditionals.ps1:110:1:121:2 | test-switch-default | conditionals.ps1:123:1:129:2 | test-switch-assign | | +| conditionals.ps1:110:34:121:2 | enter {...} | conditionals.ps1:110:34:121:2 | {...} | | +| conditionals.ps1:110:34:121:2 | exit {...} (normal) | conditionals.ps1:110:34:121:2 | exit {...} | | +| conditionals.ps1:110:34:121:2 | {...} | conditionals.ps1:111:5:120:6 | {...} | | +| conditionals.ps1:111:5:120:6 | switch(...) {...} | conditionals.ps1:111:12:111:14 | n | | +| conditionals.ps1:111:5:120:6 | {...} | conditionals.ps1:111:5:120:6 | switch(...) {...} | | +| conditionals.ps1:111:12:111:14 | n | conditionals.ps1:111:12:111:14 | n | | +| conditionals.ps1:111:12:111:14 | n | conditionals.ps1:113:9:113:11 | 0: | | +| conditionals.ps1:113:9:113:11 | 0: | conditionals.ps1:113:12:113:25 | {...} | true | +| conditionals.ps1:113:9:113:11 | 0: | conditionals.ps1:114:9:114:11 | 1: | false | +| conditionals.ps1:113:12:113:25 | {...} | conditionals.ps1:113:14:113:22 | return ... | | +| conditionals.ps1:113:14:113:22 | return ... | conditionals.ps1:113:21:113:22 | 0 | | +| conditionals.ps1:113:21:113:22 | 0 | conditionals.ps1:110:34:121:2 | exit {...} (normal) | | +| conditionals.ps1:113:21:113:22 | 0 | conditionals.ps1:113:21:113:22 | 0 | | +| conditionals.ps1:114:9:114:11 | 1: | conditionals.ps1:114:12:114:25 | {...} | true | +| conditionals.ps1:114:9:114:11 | 1: | conditionals.ps1:115:9:115:11 | 2: | false | +| conditionals.ps1:114:12:114:25 | {...} | conditionals.ps1:114:14:114:22 | return ... | | +| conditionals.ps1:114:14:114:22 | return ... | conditionals.ps1:114:21:114:22 | 1 | | +| conditionals.ps1:114:21:114:22 | 1 | conditionals.ps1:110:34:121:2 | exit {...} (normal) | | +| conditionals.ps1:114:21:114:22 | 1 | conditionals.ps1:114:21:114:22 | 1 | | +| conditionals.ps1:115:9:115:11 | 2: | conditionals.ps1:115:12:115:25 | {...} | true | +| conditionals.ps1:115:9:115:11 | 2: | conditionals.ps1:116:9:116:17 | default: | false | +| conditionals.ps1:115:12:115:25 | {...} | conditionals.ps1:115:14:115:22 | return ... | | +| conditionals.ps1:115:14:115:22 | return ... | conditionals.ps1:115:21:115:22 | 2 | | +| conditionals.ps1:115:21:115:22 | 2 | conditionals.ps1:110:34:121:2 | exit {...} (normal) | | +| conditionals.ps1:115:21:115:22 | 2 | conditionals.ps1:115:21:115:22 | 2 | | +| conditionals.ps1:116:9:116:17 | default: | conditionals.ps1:110:34:121:2 | exit {...} (normal) | false | +| conditionals.ps1:116:9:116:17 | default: | conditionals.ps1:116:18:119:10 | {...} | true | +| conditionals.ps1:116:18:119:10 | {...} | conditionals.ps1:117:13:117:25 | Write-Output | | +| conditionals.ps1:117:13:117:25 | Write-Output | conditionals.ps1:117:26:117:34 | Error! | | +| conditionals.ps1:117:13:117:34 | Write-Output | conditionals.ps1:118:13:118:21 | return ... | | +| conditionals.ps1:117:26:117:34 | Error! | conditionals.ps1:117:13:117:34 | Write-Output | | +| conditionals.ps1:118:13:118:21 | return ... | conditionals.ps1:118:20:118:21 | 3 | | +| conditionals.ps1:118:20:118:21 | 3 | conditionals.ps1:110:34:121:2 | exit {...} (normal) | | +| conditionals.ps1:118:20:118:21 | 3 | conditionals.ps1:118:20:118:21 | 3 | | +| conditionals.ps1:123:1:129:2 | test-switch-assign | conditionals.ps1:1:1:129:2 | exit conditionals.ps1 (normal) | | +| conditionals.ps1:123:33:129:2 | enter {...} | conditionals.ps1:123:33:129:2 | {...} | | +| conditionals.ps1:123:33:129:2 | exit {...} (normal) | conditionals.ps1:123:33:129:2 | exit {...} | | +| conditionals.ps1:123:33:129:2 | {...} | conditionals.ps1:124:5:128:6 | {...} | | +| conditionals.ps1:124:5:124:7 | a | conditionals.ps1:124:10:128:6 | switch(...) {...} | | +| conditionals.ps1:124:5:128:6 | ...=... | conditionals.ps1:124:5:124:7 | a | | +| conditionals.ps1:124:5:128:6 | {...} | conditionals.ps1:124:5:128:6 | ...=... | | +| conditionals.ps1:124:10:128:6 | switch(...) {...} | conditionals.ps1:124:17:124:19 | n | | +| conditionals.ps1:124:17:124:19 | n | conditionals.ps1:124:17:124:19 | n | | +| conditionals.ps1:124:17:124:19 | n | conditionals.ps1:125:9:125:11 | 0: | | +| conditionals.ps1:125:9:125:11 | 0: | conditionals.ps1:125:12:125:19 | {...} | true | +| conditionals.ps1:125:9:125:11 | 0: | conditionals.ps1:126:9:126:11 | 1: | false | +| conditionals.ps1:125:12:125:19 | {...} | conditionals.ps1:125:14:125:17 | 0 | | +| conditionals.ps1:125:14:125:17 | 0 | conditionals.ps1:123:33:129:2 | exit {...} (normal) | | +| conditionals.ps1:125:14:125:17 | 0 | conditionals.ps1:125:14:125:17 | 0 | | +| conditionals.ps1:126:9:126:11 | 1: | conditionals.ps1:126:12:126:19 | {...} | true | +| conditionals.ps1:126:9:126:11 | 1: | conditionals.ps1:127:9:127:11 | 2: | false | +| conditionals.ps1:126:12:126:19 | {...} | conditionals.ps1:126:14:126:17 | 1 | | +| conditionals.ps1:126:14:126:17 | 1 | conditionals.ps1:123:33:129:2 | exit {...} (normal) | | +| conditionals.ps1:126:14:126:17 | 1 | conditionals.ps1:126:14:126:17 | 1 | | +| conditionals.ps1:127:9:127:11 | 2: | conditionals.ps1:123:33:129:2 | exit {...} (normal) | false | +| conditionals.ps1:127:9:127:11 | 2: | conditionals.ps1:127:12:127:19 | {...} | true | +| conditionals.ps1:127:12:127:19 | {...} | conditionals.ps1:127:14:127:17 | 2 | | +| conditionals.ps1:127:14:127:17 | 2 | conditionals.ps1:123:33:129:2 | exit {...} (normal) | | +| conditionals.ps1:127:14:127:17 | 2 | conditionals.ps1:127:14:127:17 | 2 | | +| functions.ps1:1:1:9:2 | Add-Numbers-Arguments | functions.ps1:11:1:11:29 | foo | | +| functions.ps1:1:1:52:2 | {...} | functions.ps1:1:1:9:2 | Add-Numbers-Arguments | | +| functions.ps1:1:1:54:1 | enter functions.ps1 | functions.ps1:1:1:54:1 | functions.ps1 | | +| functions.ps1:1:1:54:1 | exit functions.ps1 (normal) | functions.ps1:1:1:54:1 | exit functions.ps1 | | +| functions.ps1:1:1:54:1 | functions.ps1 | functions.ps1:1:1:52:2 | {...} | | +| functions.ps1:1:32:9:2 | enter {...} | functions.ps1:1:32:9:2 | {...} | | +| functions.ps1:1:32:9:2 | exit {...} (normal) | functions.ps1:1:32:9:2 | exit {...} | | +| functions.ps1:1:32:9:2 | {...} | functions.ps1:3:5:6:6 | param(...) | | +| functions.ps1:3:5:6:6 | param(...) | functions.ps1:3:5:8:24 | {...} | | +| functions.ps1:3:5:8:24 | {...} | functions.ps1:8:5:8:24 | ...+... | | +| functions.ps1:8:5:8:13 | number1 | functions.ps1:8:16:8:24 | number2 | | +| functions.ps1:8:5:8:24 | ...+... | functions.ps1:1:32:9:2 | exit {...} (normal) | | +| functions.ps1:8:5:8:24 | ...+... | functions.ps1:8:5:8:13 | number1 | | +| functions.ps1:8:16:8:24 | number2 | functions.ps1:8:5:8:24 | ...+... | | +| functions.ps1:11:1:11:29 | foo | functions.ps1:13:1:20:2 | Default-Arguments | | +| functions.ps1:11:16:11:29 | enter {...} | functions.ps1:11:16:11:29 | {...} | | +| functions.ps1:11:16:11:29 | exit {...} (normal) | functions.ps1:11:16:11:29 | exit {...} | | +| functions.ps1:11:16:11:29 | {...} | functions.ps1:11:18:11:27 | param(...) | | +| functions.ps1:11:18:11:27 | param(...) | functions.ps1:11:18:11:27 | {...} | | +| functions.ps1:11:18:11:27 | {...} | functions.ps1:11:16:11:29 | exit {...} (normal) | | +| functions.ps1:13:1:20:2 | Default-Arguments | functions.ps1:22:1:34:2 | Add-Numbers-From-Array | | +| functions.ps1:13:28:20:2 | enter {...} | functions.ps1:13:28:20:2 | {...} | | +| functions.ps1:13:28:20:2 | exit {...} (normal) | functions.ps1:13:28:20:2 | exit {...} | | +| functions.ps1:13:28:20:2 | {...} | functions.ps1:16:24:16:25 | 0 | | +| functions.ps1:14:5:18:6 | param(...) | functions.ps1:14:5:19:19 | {...} | | +| functions.ps1:14:5:19:19 | {...} | functions.ps1:19:5:19:19 | ...+... | | +| functions.ps1:16:24:16:25 | 0 | functions.ps1:17:24:17:30 | name1 | | +| functions.ps1:17:24:17:30 | name1 | functions.ps1:17:33:17:34 | 1 | | +| functions.ps1:17:24:17:34 | ...+... | functions.ps1:14:5:18:6 | param(...) | | +| functions.ps1:17:33:17:34 | 1 | functions.ps1:17:24:17:34 | ...+... | | +| functions.ps1:19:5:19:10 | name | functions.ps1:19:13:19:19 | name2 | | +| functions.ps1:19:5:19:19 | ...+... | functions.ps1:13:28:20:2 | exit {...} (normal) | | +| functions.ps1:19:5:19:19 | ...+... | functions.ps1:19:5:19:10 | name | | +| functions.ps1:19:13:19:19 | name2 | functions.ps1:19:5:19:19 | ...+... | | +| functions.ps1:22:1:34:2 | Add-Numbers-From-Array | functions.ps1:36:1:52:2 | Add-Numbers-From-Pipeline | | +| functions.ps1:22:33:34:2 | enter {...} | functions.ps1:22:33:34:2 | {...} | | +| functions.ps1:22:33:34:2 | exit {...} (normal) | functions.ps1:22:33:34:2 | exit {...} | | +| functions.ps1:22:33:34:2 | {...} | functions.ps1:24:5:26:6 | param(...) | | +| functions.ps1:24:5:26:6 | param(...) | functions.ps1:24:5:33:9 | {...} | | +| functions.ps1:24:5:33:9 | {...} | functions.ps1:28:5:28:13 | ...=... | | +| functions.ps1:28:5:28:9 | sum | functions.ps1:28:12:28:13 | 0 | | +| functions.ps1:28:5:28:13 | ...=... | functions.ps1:28:5:28:9 | sum | | +| functions.ps1:28:12:28:13 | 0 | functions.ps1:28:12:28:13 | 0 | | +| functions.ps1:28:12:28:13 | 0 | functions.ps1:29:25:29:33 | numbers | | +| functions.ps1:29:5:32:6 | forach(... in ...) | functions.ps1:29:14:29:21 | number | | +| functions.ps1:29:5:32:6 | forach(... in ...) | functions.ps1:33:5:33:9 | sum | | +| functions.ps1:29:14:29:21 | number | functions.ps1:29:35:32:6 | {...} | | +| functions.ps1:29:25:29:33 | numbers | functions.ps1:29:5:32:6 | forach(... in ...) | | +| functions.ps1:29:25:29:33 | numbers | functions.ps1:29:25:29:33 | numbers | | +| functions.ps1:29:35:32:6 | {...} | functions.ps1:31:9:31:24 | ...=... | | +| functions.ps1:31:9:31:13 | sum | functions.ps1:31:17:31:24 | number | | +| functions.ps1:31:9:31:24 | ...=... | functions.ps1:31:9:31:13 | sum | | +| functions.ps1:31:17:31:24 | number | functions.ps1:29:5:32:6 | forach(... in ...) | | +| functions.ps1:31:17:31:24 | number | functions.ps1:31:17:31:24 | number | | +| functions.ps1:33:5:33:9 | sum | functions.ps1:22:33:34:2 | exit {...} (normal) | | +| functions.ps1:33:5:33:9 | sum | functions.ps1:33:5:33:9 | sum | | +| functions.ps1:36:1:52:2 | Add-Numbers-From-Pipeline | functions.ps1:1:1:54:1 | exit functions.ps1 (normal) | | +| functions.ps1:36:36:52:2 | enter {...} | functions.ps1:36:36:52:2 | {...} | | +| functions.ps1:36:36:52:2 | exit {...} (normal) | functions.ps1:36:36:52:2 | exit {...} | | +| functions.ps1:36:36:52:2 | {...} | functions.ps1:38:5:40:6 | param(...) | | +| functions.ps1:38:5:40:6 | param(...) | functions.ps1:41:5:43:6 | {...} | | +| functions.ps1:41:5:43:6 | {...} | functions.ps1:42:9:42:17 | ...=... | | +| functions.ps1:42:9:42:13 | sum | functions.ps1:42:16:42:17 | 0 | | +| functions.ps1:42:9:42:17 | ...=... | functions.ps1:42:9:42:13 | sum | | +| functions.ps1:42:16:42:17 | 0 | functions.ps1:42:16:42:17 | 0 | | +| functions.ps1:42:16:42:17 | 0 | functions.ps1:44:5:47:6 | {...} | | +| functions.ps1:44:5:47:6 | {...} | functions.ps1:46:9:46:19 | ...=... | | +| functions.ps1:46:9:46:13 | sum | functions.ps1:46:17:46:19 | _ | | +| functions.ps1:46:9:46:19 | ...=... | functions.ps1:46:9:46:13 | sum | | +| functions.ps1:46:17:46:19 | _ | functions.ps1:44:5:47:6 | {...} | | +| functions.ps1:46:17:46:19 | _ | functions.ps1:46:17:46:19 | _ | | +| functions.ps1:46:17:46:19 | _ | functions.ps1:48:5:51:6 | {...} | | +| functions.ps1:48:5:51:6 | {...} | functions.ps1:50:9:50:13 | sum | | +| functions.ps1:50:9:50:13 | sum | functions.ps1:36:36:52:2 | exit {...} (normal) | | +| functions.ps1:50:9:50:13 | sum | functions.ps1:50:9:50:13 | sum | | +| global.ps1:1:1:4:2 | {...} | global.ps1:2:5:2:11 | ...=... | | +| global.ps1:1:1:7:2 | enter global.ps1 | global.ps1:1:1:7:2 | global.ps1 | | +| global.ps1:1:1:7:2 | exit global.ps1 (normal) | global.ps1:1:1:7:2 | exit global.ps1 | | +| global.ps1:1:1:7:2 | global.ps1 | global.ps1:1:1:4:2 | {...} | | +| global.ps1:2:5:2:7 | a | global.ps1:2:10:2:11 | 1 | | +| global.ps1:2:5:2:11 | ...=... | global.ps1:2:5:2:7 | a | | +| global.ps1:2:10:2:11 | 1 | global.ps1:2:10:2:11 | 1 | | +| global.ps1:2:10:2:11 | 1 | global.ps1:3:5:3:11 | ...=... | | +| global.ps1:3:5:3:7 | b | global.ps1:3:10:3:11 | 2 | | +| global.ps1:3:5:3:11 | ...=... | global.ps1:3:5:3:7 | b | | +| global.ps1:3:10:3:11 | 2 | global.ps1:3:10:3:11 | 2 | | +| global.ps1:3:10:3:11 | 2 | global.ps1:5:1:7:2 | {...} | | +| global.ps1:5:1:7:2 | {...} | global.ps1:6:5:6:17 | ...=... | | +| global.ps1:6:5:6:7 | c | global.ps1:6:10:6:17 | ...+... | | +| global.ps1:6:5:6:17 | ...=... | global.ps1:6:5:6:7 | c | | +| global.ps1:6:10:6:12 | a | global.ps1:6:15:6:17 | b | | +| global.ps1:6:10:6:17 | ...+... | global.ps1:1:1:7:2 | exit global.ps1 (normal) | | +| global.ps1:6:10:6:17 | ...+... | global.ps1:6:10:6:12 | a | | +| global.ps1:6:15:6:17 | b | global.ps1:6:10:6:17 | ...+... | | +| loops.ps1:1:1:7:2 | Test-While | loops.ps1:9:1:15:2 | Test-Break | | +| loops.ps1:1:1:68:2 | {...} | loops.ps1:1:1:7:2 | Test-While | | +| loops.ps1:1:1:70:1 | enter loops.ps1 | loops.ps1:1:1:70:1 | loops.ps1 | | +| loops.ps1:1:1:70:1 | exit loops.ps1 (normal) | loops.ps1:1:1:70:1 | exit loops.ps1 | | +| loops.ps1:1:1:70:1 | loops.ps1 | loops.ps1:1:1:68:2 | {...} | | +| loops.ps1:1:21:7:2 | enter {...} | loops.ps1:1:21:7:2 | {...} | | +| loops.ps1:1:21:7:2 | exit {...} (normal) | loops.ps1:1:21:7:2 | exit {...} | | +| loops.ps1:1:21:7:2 | {...} | loops.ps1:2:5:6:6 | {...} | | +| loops.ps1:2:5:2:7 | a | loops.ps1:2:10:2:11 | 0 | | +| loops.ps1:2:5:2:11 | ...=... | loops.ps1:2:5:2:7 | a | | +| loops.ps1:2:5:6:6 | {...} | loops.ps1:2:5:2:11 | ...=... | | +| loops.ps1:2:10:2:11 | 0 | loops.ps1:2:10:2:11 | 0 | | +| loops.ps1:2:10:2:11 | 0 | loops.ps1:4:5:6:6 | while(...) {...} | | +| loops.ps1:4:5:6:6 | while(...) {...} | loops.ps1:4:11:4:20 | ... -le ... | | +| loops.ps1:4:11:4:13 | a | loops.ps1:4:18:4:20 | 10 | | +| loops.ps1:4:11:4:20 | ... -le ... | loops.ps1:1:21:7:2 | exit {...} (normal) | false | +| loops.ps1:4:11:4:20 | ... -le ... | loops.ps1:4:11:4:13 | a | | +| loops.ps1:4:11:4:20 | ... -le ... | loops.ps1:4:22:6:6 | {...} | true | +| loops.ps1:4:18:4:20 | 10 | loops.ps1:4:11:4:20 | ... -le ... | | +| loops.ps1:4:22:6:6 | {...} | loops.ps1:5:9:5:20 | ...=... | | +| loops.ps1:5:9:5:11 | a | loops.ps1:5:14:5:20 | ...+... | | +| loops.ps1:5:9:5:20 | ...=... | loops.ps1:5:9:5:11 | a | | +| loops.ps1:5:14:5:16 | a | loops.ps1:5:19:5:20 | 1 | | +| loops.ps1:5:14:5:20 | ...+... | loops.ps1:4:11:4:20 | ... -le ... | | +| loops.ps1:5:14:5:20 | ...+... | loops.ps1:5:14:5:16 | a | | +| loops.ps1:5:19:5:20 | 1 | loops.ps1:5:14:5:20 | ...+... | | +| loops.ps1:9:1:15:2 | Test-Break | loops.ps1:17:1:23:2 | Test-Continue | | +| loops.ps1:9:21:15:2 | enter {...} | loops.ps1:9:21:15:2 | {...} | | +| loops.ps1:9:21:15:2 | exit {...} (normal) | loops.ps1:9:21:15:2 | exit {...} | | +| loops.ps1:9:21:15:2 | {...} | loops.ps1:10:5:14:6 | {...} | | +| loops.ps1:10:5:10:7 | a | loops.ps1:10:10:10:11 | 0 | | +| loops.ps1:10:5:10:11 | ...=... | loops.ps1:10:5:10:7 | a | | +| loops.ps1:10:5:14:6 | {...} | loops.ps1:10:5:10:11 | ...=... | | +| loops.ps1:10:10:10:11 | 0 | loops.ps1:10:10:10:11 | 0 | | +| loops.ps1:10:10:10:11 | 0 | loops.ps1:11:5:14:6 | while(...) {...} | | +| loops.ps1:11:5:14:6 | while(...) {...} | loops.ps1:11:11:11:20 | ... -le ... | | +| loops.ps1:11:11:11:13 | a | loops.ps1:11:18:11:20 | 10 | | +| loops.ps1:11:11:11:20 | ... -le ... | loops.ps1:9:21:15:2 | exit {...} (normal) | false | +| loops.ps1:11:11:11:20 | ... -le ... | loops.ps1:11:11:11:13 | a | | +| loops.ps1:11:11:11:20 | ... -le ... | loops.ps1:11:22:14:6 | {...} | true | +| loops.ps1:11:18:11:20 | 10 | loops.ps1:11:11:11:20 | ... -le ... | | +| loops.ps1:11:22:14:6 | {...} | loops.ps1:12:9:12:14 | break | | +| loops.ps1:12:9:12:14 | break | loops.ps1:9:21:15:2 | exit {...} (normal) | break | +| loops.ps1:17:1:23:2 | Test-Continue | loops.ps1:25:1:31:2 | Test-DoWhile | | +| loops.ps1:17:24:23:2 | enter {...} | loops.ps1:17:24:23:2 | {...} | | +| loops.ps1:17:24:23:2 | exit {...} (normal) | loops.ps1:17:24:23:2 | exit {...} | | +| loops.ps1:17:24:23:2 | {...} | loops.ps1:18:5:22:6 | {...} | | +| loops.ps1:18:5:18:7 | a | loops.ps1:18:10:18:11 | 0 | | +| loops.ps1:18:5:18:11 | ...=... | loops.ps1:18:5:18:7 | a | | +| loops.ps1:18:5:22:6 | {...} | loops.ps1:18:5:18:11 | ...=... | | +| loops.ps1:18:10:18:11 | 0 | loops.ps1:18:10:18:11 | 0 | | +| loops.ps1:18:10:18:11 | 0 | loops.ps1:19:5:22:6 | while(...) {...} | | +| loops.ps1:19:5:22:6 | while(...) {...} | loops.ps1:19:11:19:20 | ... -le ... | | +| loops.ps1:19:11:19:13 | a | loops.ps1:19:18:19:20 | 10 | | +| loops.ps1:19:11:19:20 | ... -le ... | loops.ps1:17:24:23:2 | exit {...} (normal) | false | +| loops.ps1:19:11:19:20 | ... -le ... | loops.ps1:19:11:19:13 | a | | +| loops.ps1:19:11:19:20 | ... -le ... | loops.ps1:19:22:22:6 | {...} | true | +| loops.ps1:19:18:19:20 | 10 | loops.ps1:19:11:19:20 | ... -le ... | | +| loops.ps1:19:22:22:6 | {...} | loops.ps1:20:9:20:17 | continue | | +| loops.ps1:20:9:20:17 | continue | loops.ps1:19:11:19:20 | ... -le ... | continue | +| loops.ps1:25:1:31:2 | Test-DoWhile | loops.ps1:33:1:39:2 | Test-DoUntil | | +| loops.ps1:25:23:31:2 | enter {...} | loops.ps1:25:23:31:2 | {...} | | +| loops.ps1:25:23:31:2 | exit {...} (normal) | loops.ps1:25:23:31:2 | exit {...} | | +| loops.ps1:25:23:31:2 | {...} | loops.ps1:26:5:30:24 | {...} | | +| loops.ps1:26:5:26:7 | a | loops.ps1:26:10:26:11 | 0 | | +| loops.ps1:26:5:26:11 | ...=... | loops.ps1:26:5:26:7 | a | | +| loops.ps1:26:5:30:24 | {...} | loops.ps1:26:5:26:11 | ...=... | | +| loops.ps1:26:10:26:11 | 0 | loops.ps1:26:10:26:11 | 0 | | +| loops.ps1:26:10:26:11 | 0 | loops.ps1:28:5:30:24 | DoWhile | | +| loops.ps1:28:5:30:24 | DoWhile | loops.ps1:28:8:30:6 | {...} | | +| loops.ps1:28:8:30:6 | {...} | loops.ps1:29:9:29:20 | ...=... | | +| loops.ps1:29:9:29:11 | a | loops.ps1:29:14:29:20 | ...+... | | +| loops.ps1:29:9:29:20 | ...=... | loops.ps1:29:9:29:11 | a | | +| loops.ps1:29:14:29:16 | a | loops.ps1:29:19:29:20 | 1 | | +| loops.ps1:29:14:29:20 | ...+... | loops.ps1:29:14:29:16 | a | | +| loops.ps1:29:14:29:20 | ...+... | loops.ps1:30:14:30:23 | ... -le ... | | +| loops.ps1:29:19:29:20 | 1 | loops.ps1:29:14:29:20 | ...+... | | +| loops.ps1:30:14:30:16 | a | loops.ps1:30:21:30:23 | 10 | | +| loops.ps1:30:14:30:23 | ... -le ... | loops.ps1:25:23:31:2 | exit {...} (normal) | false | +| loops.ps1:30:14:30:23 | ... -le ... | loops.ps1:28:8:30:6 | {...} | true | +| loops.ps1:30:14:30:23 | ... -le ... | loops.ps1:30:14:30:16 | a | | +| loops.ps1:30:21:30:23 | 10 | loops.ps1:30:14:30:23 | ... -le ... | | +| loops.ps1:33:1:39:2 | Test-DoUntil | loops.ps1:41:1:47:2 | Test-For | | +| loops.ps1:33:23:39:2 | enter {...} | loops.ps1:33:23:39:2 | {...} | | +| loops.ps1:33:23:39:2 | exit {...} (normal) | loops.ps1:33:23:39:2 | exit {...} | | +| loops.ps1:33:23:39:2 | {...} | loops.ps1:34:5:38:24 | {...} | | +| loops.ps1:34:5:34:7 | a | loops.ps1:34:10:34:11 | 0 | | +| loops.ps1:34:5:34:11 | ...=... | loops.ps1:34:5:34:7 | a | | +| loops.ps1:34:5:38:24 | {...} | loops.ps1:34:5:34:11 | ...=... | | +| loops.ps1:34:10:34:11 | 0 | loops.ps1:34:10:34:11 | 0 | | +| loops.ps1:34:10:34:11 | 0 | loops.ps1:36:5:38:24 | DoUntil | | +| loops.ps1:36:5:38:24 | DoUntil | loops.ps1:36:8:38:6 | {...} | | +| loops.ps1:36:8:38:6 | {...} | loops.ps1:37:9:37:20 | ...=... | | +| loops.ps1:37:9:37:11 | a | loops.ps1:37:14:37:20 | ...+... | | +| loops.ps1:37:9:37:20 | ...=... | loops.ps1:37:9:37:11 | a | | +| loops.ps1:37:14:37:16 | a | loops.ps1:37:19:37:20 | 1 | | +| loops.ps1:37:14:37:20 | ...+... | loops.ps1:37:14:37:16 | a | | +| loops.ps1:37:14:37:20 | ...+... | loops.ps1:38:14:38:23 | ... -ge ... | | +| loops.ps1:37:19:37:20 | 1 | loops.ps1:37:14:37:20 | ...+... | | +| loops.ps1:38:14:38:16 | a | loops.ps1:38:21:38:23 | 10 | | +| loops.ps1:38:14:38:23 | ... -ge ... | loops.ps1:33:23:39:2 | exit {...} (normal) | true | +| loops.ps1:38:14:38:23 | ... -ge ... | loops.ps1:36:8:38:6 | {...} | false | +| loops.ps1:38:14:38:23 | ... -ge ... | loops.ps1:38:14:38:16 | a | | +| loops.ps1:38:21:38:23 | 10 | loops.ps1:38:14:38:23 | ... -ge ... | | +| loops.ps1:41:1:47:2 | Test-For | loops.ps1:49:1:56:2 | Test-ForEach | | +| loops.ps1:41:19:47:2 | enter {...} | loops.ps1:41:19:47:2 | {...} | | +| loops.ps1:41:19:47:2 | exit {...} (normal) | loops.ps1:41:19:47:2 | exit {...} | | +| loops.ps1:41:19:47:2 | {...} | loops.ps1:42:5:46:6 | {...} | | +| loops.ps1:42:5:42:7 | a | loops.ps1:42:10:42:11 | 0 | | +| loops.ps1:42:5:42:11 | ...=... | loops.ps1:42:5:42:7 | a | | +| loops.ps1:42:5:46:6 | {...} | loops.ps1:42:5:42:11 | ...=... | | +| loops.ps1:42:10:42:11 | 0 | loops.ps1:42:10:42:11 | 0 | | +| loops.ps1:42:10:42:11 | 0 | loops.ps1:44:5:46:6 | for(...;...;...) | | +| loops.ps1:44:5:46:6 | for(...;...;...) | loops.ps1:44:10:44:16 | ...=... | | +| loops.ps1:44:10:44:12 | i | loops.ps1:44:15:44:16 | 0 | | +| loops.ps1:44:10:44:16 | ...=... | loops.ps1:44:10:44:12 | i | | +| loops.ps1:44:15:44:16 | 0 | loops.ps1:44:15:44:16 | 0 | | +| loops.ps1:44:15:44:16 | 0 | loops.ps1:44:18:44:27 | ... -le ... | | +| loops.ps1:44:18:44:20 | i | loops.ps1:44:25:44:27 | 10 | | +| loops.ps1:44:18:44:27 | ... -le ... | loops.ps1:41:19:47:2 | exit {...} (normal) | false | +| loops.ps1:44:18:44:27 | ... -le ... | loops.ps1:44:18:44:20 | i | | +| loops.ps1:44:18:44:27 | ... -le ... | loops.ps1:44:42:46:6 | {...} | true | +| loops.ps1:44:25:44:27 | 10 | loops.ps1:44:18:44:27 | ... -le ... | | +| loops.ps1:44:29:44:31 | i | loops.ps1:44:34:44:40 | ...+... | | +| loops.ps1:44:29:44:40 | ...=... | loops.ps1:44:29:44:31 | i | | +| loops.ps1:44:34:44:36 | i | loops.ps1:44:39:44:40 | 1 | | +| loops.ps1:44:34:44:40 | ...+... | loops.ps1:44:18:44:27 | ... -le ... | | +| loops.ps1:44:34:44:40 | ...+... | loops.ps1:44:34:44:36 | i | | +| loops.ps1:44:39:44:40 | 1 | loops.ps1:44:34:44:40 | ...+... | | +| loops.ps1:44:42:46:6 | {...} | loops.ps1:45:9:45:20 | ...=... | | +| loops.ps1:45:9:45:11 | a | loops.ps1:45:14:45:20 | ...+... | | +| loops.ps1:45:9:45:20 | ...=... | loops.ps1:45:9:45:11 | a | | +| loops.ps1:45:14:45:16 | a | loops.ps1:45:19:45:20 | 1 | | +| loops.ps1:45:14:45:20 | ...+... | loops.ps1:44:18:44:27 | ... -le ... | | +| loops.ps1:45:14:45:20 | ...+... | loops.ps1:44:29:44:40 | ...=... | | +| loops.ps1:45:14:45:20 | ...+... | loops.ps1:45:14:45:16 | a | | +| loops.ps1:45:19:45:20 | 1 | loops.ps1:45:14:45:20 | ...+... | | +| loops.ps1:49:1:56:2 | Test-ForEach | loops.ps1:58:1:68:2 | Test-For-Ever | | +| loops.ps1:49:23:56:2 | enter {...} | loops.ps1:49:23:56:2 | {...} | | +| loops.ps1:49:23:56:2 | exit {...} (normal) | loops.ps1:49:23:56:2 | exit {...} | | +| loops.ps1:49:23:56:2 | {...} | loops.ps1:50:5:55:6 | {...} | | +| loops.ps1:50:5:50:17 | letterArray | loops.ps1:50:20:50:35 | ...,... | | +| loops.ps1:50:5:50:35 | ...=... | loops.ps1:50:5:50:17 | letterArray | | +| loops.ps1:50:5:55:6 | {...} | loops.ps1:50:5:50:35 | ...=... | | +| loops.ps1:50:20:50:23 | a | loops.ps1:50:24:50:27 | b | | +| loops.ps1:50:20:50:35 | ...,... | loops.ps1:50:20:50:23 | a | | +| loops.ps1:50:20:50:35 | ...,... | loops.ps1:51:5:51:11 | ...=... | | +| loops.ps1:50:24:50:27 | b | loops.ps1:50:28:50:31 | c | | +| loops.ps1:50:28:50:31 | c | loops.ps1:50:32:50:35 | d | | +| loops.ps1:50:32:50:35 | d | loops.ps1:50:20:50:35 | ...,... | | +| loops.ps1:51:5:51:7 | a | loops.ps1:51:10:51:11 | 0 | | +| loops.ps1:51:5:51:11 | ...=... | loops.ps1:51:5:51:7 | a | | +| loops.ps1:51:10:51:11 | 0 | loops.ps1:51:10:51:11 | 0 | | +| loops.ps1:51:10:51:11 | 0 | loops.ps1:52:25:52:37 | letterArray | | +| loops.ps1:52:5:55:6 | forach(... in ...) | loops.ps1:49:23:56:2 | exit {...} (normal) | | +| loops.ps1:52:5:55:6 | forach(... in ...) | loops.ps1:52:14:52:21 | letter | | +| loops.ps1:52:14:52:21 | letter | loops.ps1:53:5:55:6 | {...} | | +| loops.ps1:52:25:52:37 | letterArray | loops.ps1:52:5:55:6 | forach(... in ...) | | +| loops.ps1:52:25:52:37 | letterArray | loops.ps1:52:25:52:37 | letterArray | | +| loops.ps1:53:5:55:6 | {...} | loops.ps1:54:9:54:20 | ...=... | | +| loops.ps1:54:9:54:11 | a | loops.ps1:54:14:54:20 | ...+... | | +| loops.ps1:54:9:54:20 | ...=... | loops.ps1:54:9:54:11 | a | | +| loops.ps1:54:14:54:16 | a | loops.ps1:54:19:54:20 | 1 | | +| loops.ps1:54:14:54:20 | ...+... | loops.ps1:52:5:55:6 | forach(... in ...) | | +| loops.ps1:54:14:54:20 | ...+... | loops.ps1:54:14:54:16 | a | | +| loops.ps1:54:19:54:20 | 1 | loops.ps1:54:14:54:20 | ...+... | | +| loops.ps1:58:1:68:2 | Test-For-Ever | loops.ps1:1:1:70:1 | exit loops.ps1 (normal) | | +| loops.ps1:58:24:68:2 | enter {...} | loops.ps1:58:24:68:2 | {...} | | +| loops.ps1:58:24:68:2 | exit {...} (normal) | loops.ps1:58:24:68:2 | exit {...} | | +| loops.ps1:58:24:68:2 | {...} | loops.ps1:59:5:67:6 | {...} | | +| loops.ps1:59:5:59:7 | a | loops.ps1:59:10:59:11 | 0 | | +| loops.ps1:59:5:59:11 | ...=... | loops.ps1:59:5:59:7 | a | | +| loops.ps1:59:5:67:6 | {...} | loops.ps1:59:5:59:11 | ...=... | | +| loops.ps1:59:10:59:11 | 0 | loops.ps1:59:10:59:11 | 0 | | +| loops.ps1:59:10:59:11 | 0 | loops.ps1:61:5:67:6 | for(...;...;...) | | +| loops.ps1:61:5:67:6 | for(...;...;...) | loops.ps1:62:5:67:6 | {...} | | +| loops.ps1:62:5:67:6 | {...} | loops.ps1:63:9:66:10 | if (...) {...} | | +| loops.ps1:63:9:66:10 | if (...) {...} | loops.ps1:63:12:63:21 | ... -le ... | | +| loops.ps1:63:12:63:14 | a | loops.ps1:63:19:63:21 | 10 | | +| loops.ps1:63:12:63:21 | ... -le ... | loops.ps1:63:12:63:14 | a | | +| loops.ps1:63:12:63:21 | ... -le ... | loops.ps1:64:9:66:10 | {...} | true | +| loops.ps1:63:19:63:21 | 10 | loops.ps1:63:12:63:21 | ... -le ... | | +| loops.ps1:64:9:66:10 | {...} | loops.ps1:65:13:65:18 | break | | +| loops.ps1:65:13:65:18 | break | loops.ps1:58:24:68:2 | exit {...} (normal) | break | +| try.ps1:1:1:8:2 | test-try-catch | try.ps1:10:1:19:2 | test-try-with-throw-catch | | +| try.ps1:1:1:194:2 | enter try.ps1 | try.ps1:1:1:194:2 | try.ps1 | | +| try.ps1:1:1:194:2 | exit try.ps1 (normal) | try.ps1:1:1:194:2 | exit try.ps1 | | +| try.ps1:1:1:194:2 | try.ps1 | try.ps1:1:1:194:2 | {...} | | +| try.ps1:1:1:194:2 | {...} | try.ps1:1:1:8:2 | test-try-catch | | +| try.ps1:1:25:8:2 | enter {...} | try.ps1:1:25:8:2 | {...} | | +| try.ps1:1:25:8:2 | exit {...} (normal) | try.ps1:1:25:8:2 | exit {...} | | +| try.ps1:1:25:8:2 | {...} | try.ps1:2:5:7:13 | {...} | | +| try.ps1:2:5:6:6 | try {...} | try.ps1:2:9:4:6 | {...} | | +| try.ps1:2:5:7:13 | {...} | try.ps1:2:5:6:6 | try {...} | | +| try.ps1:2:9:4:6 | {...} | try.ps1:3:9:3:21 | Write-Output | | +| try.ps1:3:9:3:21 | Write-Output | try.ps1:3:22:3:30 | Hello! | | +| try.ps1:3:9:3:30 | Write-Output | try.ps1:7:5:7:13 | return ... | | +| try.ps1:3:22:3:30 | Hello! | try.ps1:3:9:3:30 | Write-Output | | +| try.ps1:7:5:7:13 | return ... | try.ps1:7:12:7:13 | 1 | | +| try.ps1:7:12:7:13 | 1 | try.ps1:1:25:8:2 | exit {...} (normal) | | +| try.ps1:7:12:7:13 | 1 | try.ps1:7:12:7:13 | 1 | | +| try.ps1:10:1:19:2 | test-try-with-throw-catch | try.ps1:21:1:30:2 | test-try-with-throw-catch-with-throw | | +| try.ps1:10:40:19:2 | enter {...} | try.ps1:10:40:19:2 | {...} | | +| try.ps1:10:40:19:2 | exit {...} (normal) | try.ps1:10:40:19:2 | exit {...} | | +| try.ps1:10:40:19:2 | {...} | try.ps1:11:5:18:13 | {...} | | +| try.ps1:11:5:17:6 | try {...} | try.ps1:11:9:15:6 | {...} | | +| try.ps1:11:5:18:13 | {...} | try.ps1:11:5:17:6 | try {...} | | +| try.ps1:11:9:15:6 | {...} | try.ps1:12:9:14:10 | if (...) {...} | | +| try.ps1:12:9:14:10 | if (...) {...} | try.ps1:12:12:12:14 | b | | +| try.ps1:12:12:12:14 | b | try.ps1:12:12:12:14 | b | | +| try.ps1:12:12:12:14 | b | try.ps1:12:16:14:10 | {...} | true | +| try.ps1:12:16:14:10 | {...} | try.ps1:13:13:13:21 | throw ... | | +| try.ps1:13:13:13:21 | throw ... | try.ps1:13:19:13:21 | 42 | | +| try.ps1:13:19:13:21 | 42 | try.ps1:13:19:13:21 | 42 | | +| try.ps1:13:19:13:21 | 42 | try.ps1:18:5:18:13 | return ... | | +| try.ps1:18:5:18:13 | return ... | try.ps1:18:12:18:13 | 1 | | +| try.ps1:18:12:18:13 | 1 | try.ps1:10:40:19:2 | exit {...} (normal) | | +| try.ps1:18:12:18:13 | 1 | try.ps1:18:12:18:13 | 1 | | +| try.ps1:21:1:30:2 | test-try-with-throw-catch-with-throw | try.ps1:32:1:41:2 | test-try-with-throw-catch-with-rethrow | | +| try.ps1:21:51:30:2 | enter {...} | try.ps1:21:51:30:2 | {...} | | +| try.ps1:21:51:30:2 | exit {...} (normal) | try.ps1:21:51:30:2 | exit {...} | | +| try.ps1:21:51:30:2 | {...} | try.ps1:22:5:29:13 | {...} | | +| try.ps1:22:5:28:6 | try {...} | try.ps1:22:9:26:6 | {...} | | +| try.ps1:22:5:29:13 | {...} | try.ps1:22:5:28:6 | try {...} | | +| try.ps1:22:9:26:6 | {...} | try.ps1:23:9:25:10 | if (...) {...} | | +| try.ps1:23:9:25:10 | if (...) {...} | try.ps1:23:12:23:14 | b | | +| try.ps1:23:12:23:14 | b | try.ps1:23:12:23:14 | b | | +| try.ps1:23:12:23:14 | b | try.ps1:23:16:25:10 | {...} | true | +| try.ps1:23:16:25:10 | {...} | try.ps1:24:13:24:21 | throw ... | | +| try.ps1:24:13:24:21 | throw ... | try.ps1:24:19:24:21 | 42 | | +| try.ps1:24:19:24:21 | 42 | try.ps1:24:19:24:21 | 42 | | +| try.ps1:24:19:24:21 | 42 | try.ps1:29:5:29:13 | return ... | | +| try.ps1:29:5:29:13 | return ... | try.ps1:29:12:29:13 | 1 | | +| try.ps1:29:12:29:13 | 1 | try.ps1:21:51:30:2 | exit {...} (normal) | | +| try.ps1:29:12:29:13 | 1 | try.ps1:29:12:29:13 | 1 | | +| try.ps1:32:1:41:2 | test-try-with-throw-catch-with-rethrow | try.ps1:43:1:50:2 | test-try-catch-specific-1 | | +| try.ps1:32:53:41:2 | enter {...} | try.ps1:32:53:41:2 | {...} | | +| try.ps1:32:53:41:2 | exit {...} (normal) | try.ps1:32:53:41:2 | exit {...} | | +| try.ps1:32:53:41:2 | {...} | try.ps1:33:5:40:13 | {...} | | +| try.ps1:33:5:39:6 | try {...} | try.ps1:33:9:37:6 | {...} | | +| try.ps1:33:5:40:13 | {...} | try.ps1:33:5:39:6 | try {...} | | +| try.ps1:33:9:37:6 | {...} | try.ps1:34:9:36:10 | if (...) {...} | | +| try.ps1:34:9:36:10 | if (...) {...} | try.ps1:34:12:34:14 | b | | +| try.ps1:34:12:34:14 | b | try.ps1:34:12:34:14 | b | | +| try.ps1:34:12:34:14 | b | try.ps1:34:16:36:10 | {...} | true | +| try.ps1:34:16:36:10 | {...} | try.ps1:35:13:35:21 | throw ... | | +| try.ps1:35:13:35:21 | throw ... | try.ps1:35:19:35:21 | 42 | | +| try.ps1:35:19:35:21 | 42 | try.ps1:35:19:35:21 | 42 | | +| try.ps1:35:19:35:21 | 42 | try.ps1:40:5:40:13 | return ... | | +| try.ps1:40:5:40:13 | return ... | try.ps1:40:12:40:13 | 1 | | +| try.ps1:40:12:40:13 | 1 | try.ps1:32:53:41:2 | exit {...} (normal) | | +| try.ps1:40:12:40:13 | 1 | try.ps1:40:12:40:13 | 1 | | +| try.ps1:43:1:50:2 | test-try-catch-specific-1 | try.ps1:52:1:59:2 | test-try-catch-specific-1 | | +| try.ps1:43:36:50:2 | enter {...} | try.ps1:43:36:50:2 | {...} | | +| try.ps1:43:36:50:2 | exit {...} (normal) | try.ps1:43:36:50:2 | exit {...} | | +| try.ps1:43:36:50:2 | {...} | try.ps1:44:5:49:13 | {...} | | +| try.ps1:44:5:48:6 | try {...} | try.ps1:44:9:46:6 | {...} | | +| try.ps1:44:5:49:13 | {...} | try.ps1:44:5:48:6 | try {...} | | +| try.ps1:44:9:46:6 | {...} | try.ps1:45:9:45:21 | Write-Output | | +| try.ps1:45:9:45:21 | Write-Output | try.ps1:45:22:45:30 | Hello! | | +| try.ps1:45:9:45:30 | Write-Output | try.ps1:49:5:49:13 | return ... | | +| try.ps1:45:22:45:30 | Hello! | try.ps1:45:9:45:30 | Write-Output | | +| try.ps1:49:5:49:13 | return ... | try.ps1:49:12:49:13 | 1 | | +| try.ps1:49:12:49:13 | 1 | try.ps1:43:36:50:2 | exit {...} (normal) | | +| try.ps1:49:12:49:13 | 1 | try.ps1:49:12:49:13 | 1 | | +| try.ps1:52:1:59:2 | test-try-catch-specific-1 | try.ps1:61:1:70:2 | test-try-two-catch-specific-1 | | +| try.ps1:52:36:59:2 | enter {...} | try.ps1:52:36:59:2 | {...} | | +| try.ps1:52:36:59:2 | exit {...} (normal) | try.ps1:52:36:59:2 | exit {...} | | +| try.ps1:52:36:59:2 | {...} | try.ps1:53:5:58:13 | {...} | | +| try.ps1:53:5:57:6 | try {...} | try.ps1:53:9:55:6 | {...} | | +| try.ps1:53:5:58:13 | {...} | try.ps1:53:5:57:6 | try {...} | | +| try.ps1:53:9:55:6 | {...} | try.ps1:54:9:54:21 | Write-Output | | +| try.ps1:54:9:54:21 | Write-Output | try.ps1:54:22:54:30 | Hello! | | +| try.ps1:54:9:54:30 | Write-Output | try.ps1:58:5:58:13 | return ... | | +| try.ps1:54:22:54:30 | Hello! | try.ps1:54:9:54:30 | Write-Output | | +| try.ps1:58:5:58:13 | return ... | try.ps1:58:12:58:13 | 1 | | +| try.ps1:58:12:58:13 | 1 | try.ps1:52:36:59:2 | exit {...} (normal) | | +| try.ps1:58:12:58:13 | 1 | try.ps1:58:12:58:13 | 1 | | +| try.ps1:61:1:70:2 | test-try-two-catch-specific-1 | try.ps1:72:1:79:2 | test-try-catch-specific-2 | | +| try.ps1:61:40:70:2 | enter {...} | try.ps1:61:40:70:2 | {...} | | +| try.ps1:61:40:70:2 | exit {...} (normal) | try.ps1:61:40:70:2 | exit {...} | | +| try.ps1:61:40:70:2 | {...} | try.ps1:62:5:69:13 | {...} | | +| try.ps1:62:5:68:6 | try {...} | try.ps1:62:9:64:6 | {...} | | +| try.ps1:62:5:69:13 | {...} | try.ps1:62:5:68:6 | try {...} | | +| try.ps1:62:9:64:6 | {...} | try.ps1:63:9:63:21 | Write-Output | | +| try.ps1:63:9:63:21 | Write-Output | try.ps1:63:22:63:30 | Hello! | | +| try.ps1:63:9:63:30 | Write-Output | try.ps1:69:5:69:13 | return ... | | +| try.ps1:63:22:63:30 | Hello! | try.ps1:63:9:63:30 | Write-Output | | +| try.ps1:69:5:69:13 | return ... | try.ps1:69:12:69:13 | 2 | | +| try.ps1:69:12:69:13 | 2 | try.ps1:61:40:70:2 | exit {...} (normal) | | +| try.ps1:69:12:69:13 | 2 | try.ps1:69:12:69:13 | 2 | | +| try.ps1:72:1:79:2 | test-try-catch-specific-2 | try.ps1:81:1:90:2 | test-try-two-catch-specific-2 | | +| try.ps1:72:36:79:2 | enter {...} | try.ps1:72:36:79:2 | {...} | | +| try.ps1:72:36:79:2 | exit {...} (normal) | try.ps1:72:36:79:2 | exit {...} | | +| try.ps1:72:36:79:2 | {...} | try.ps1:73:5:78:13 | {...} | | +| try.ps1:73:5:77:6 | try {...} | try.ps1:73:9:75:6 | {...} | | +| try.ps1:73:5:78:13 | {...} | try.ps1:73:5:77:6 | try {...} | | +| try.ps1:73:9:75:6 | {...} | try.ps1:74:9:74:21 | Write-Output | | +| try.ps1:74:9:74:21 | Write-Output | try.ps1:74:22:74:30 | Hello! | | +| try.ps1:74:9:74:30 | Write-Output | try.ps1:78:5:78:13 | return ... | | +| try.ps1:74:22:74:30 | Hello! | try.ps1:74:9:74:30 | Write-Output | | +| try.ps1:78:5:78:13 | return ... | try.ps1:78:12:78:13 | 1 | | +| try.ps1:78:12:78:13 | 1 | try.ps1:72:36:79:2 | exit {...} (normal) | | +| try.ps1:78:12:78:13 | 1 | try.ps1:78:12:78:13 | 1 | | +| try.ps1:81:1:90:2 | test-try-two-catch-specific-2 | try.ps1:92:1:103:2 | test-try-three-catch-specific-2 | | +| try.ps1:81:40:90:2 | enter {...} | try.ps1:81:40:90:2 | {...} | | +| try.ps1:81:40:90:2 | exit {...} (normal) | try.ps1:81:40:90:2 | exit {...} | | +| try.ps1:81:40:90:2 | {...} | try.ps1:82:5:89:13 | {...} | | +| try.ps1:82:5:88:6 | try {...} | try.ps1:82:9:84:6 | {...} | | +| try.ps1:82:5:89:13 | {...} | try.ps1:82:5:88:6 | try {...} | | +| try.ps1:82:9:84:6 | {...} | try.ps1:83:9:83:21 | Write-Output | | +| try.ps1:83:9:83:21 | Write-Output | try.ps1:83:22:83:30 | Hello! | | +| try.ps1:83:9:83:30 | Write-Output | try.ps1:89:5:89:13 | return ... | | +| try.ps1:83:22:83:30 | Hello! | try.ps1:83:9:83:30 | Write-Output | | +| try.ps1:89:5:89:13 | return ... | try.ps1:89:12:89:13 | 2 | | +| try.ps1:89:12:89:13 | 2 | try.ps1:81:40:90:2 | exit {...} (normal) | | +| try.ps1:89:12:89:13 | 2 | try.ps1:89:12:89:13 | 2 | | +| try.ps1:92:1:103:2 | test-try-three-catch-specific-2 | try.ps1:105:1:114:2 | test-try-catch-finally | | +| try.ps1:92:42:103:2 | enter {...} | try.ps1:92:42:103:2 | {...} | | +| try.ps1:92:42:103:2 | exit {...} (normal) | try.ps1:92:42:103:2 | exit {...} | | +| try.ps1:92:42:103:2 | {...} | try.ps1:93:5:102:13 | {...} | | +| try.ps1:93:5:101:6 | try {...} | try.ps1:93:9:95:6 | {...} | | +| try.ps1:93:5:102:13 | {...} | try.ps1:93:5:101:6 | try {...} | | +| try.ps1:93:9:95:6 | {...} | try.ps1:94:9:94:21 | Write-Output | | +| try.ps1:94:9:94:21 | Write-Output | try.ps1:94:22:94:30 | Hello! | | +| try.ps1:94:9:94:30 | Write-Output | try.ps1:102:5:102:13 | return ... | | +| try.ps1:94:22:94:30 | Hello! | try.ps1:94:9:94:30 | Write-Output | | +| try.ps1:102:5:102:13 | return ... | try.ps1:102:12:102:13 | 3 | | +| try.ps1:102:12:102:13 | 3 | try.ps1:92:42:103:2 | exit {...} (normal) | | +| try.ps1:102:12:102:13 | 3 | try.ps1:102:12:102:13 | 3 | | +| try.ps1:105:1:114:2 | test-try-catch-finally | try.ps1:116:1:123:2 | test-try-finally | | +| try.ps1:105:33:114:2 | enter {...} | try.ps1:105:33:114:2 | {...} | | +| try.ps1:105:33:114:2 | exit {...} (normal) | try.ps1:105:33:114:2 | exit {...} | | +| try.ps1:105:33:114:2 | {...} | try.ps1:106:5:113:13 | {...} | | +| try.ps1:106:5:112:6 | try {...} | try.ps1:106:9:108:6 | {...} | | +| try.ps1:106:5:113:13 | {...} | try.ps1:106:5:112:6 | try {...} | | +| try.ps1:106:9:108:6 | {...} | try.ps1:107:9:107:21 | Write-Output | | +| try.ps1:107:9:107:21 | Write-Output | try.ps1:107:22:107:30 | Hello! | | +| try.ps1:107:9:107:30 | Write-Output | try.ps1:110:15:112:6 | {...} | | +| try.ps1:107:22:107:30 | Hello! | try.ps1:107:9:107:30 | Write-Output | | +| try.ps1:110:15:112:6 | {...} | try.ps1:111:9:111:21 | Write-Output | | +| try.ps1:111:9:111:21 | Write-Output | try.ps1:111:22:111:32 | Finally! | | +| try.ps1:111:9:111:32 | Write-Output | try.ps1:113:5:113:13 | return ... | | +| try.ps1:111:22:111:32 | Finally! | try.ps1:111:9:111:32 | Write-Output | | +| try.ps1:113:5:113:13 | return ... | try.ps1:113:12:113:13 | 1 | | +| try.ps1:113:12:113:13 | 1 | try.ps1:105:33:114:2 | exit {...} (normal) | | +| try.ps1:113:12:113:13 | 1 | try.ps1:113:12:113:13 | 1 | | +| try.ps1:116:1:123:2 | test-try-finally | try.ps1:125:1:134:2 | test-try-finally-catch-specific-1 | | +| try.ps1:116:27:123:2 | enter {...} | try.ps1:116:27:123:2 | {...} | | +| try.ps1:116:27:123:2 | exit {...} (normal) | try.ps1:116:27:123:2 | exit {...} | | +| try.ps1:116:27:123:2 | {...} | try.ps1:117:5:122:13 | {...} | | +| try.ps1:117:5:121:6 | try {...} | try.ps1:117:9:119:6 | {...} | | +| try.ps1:117:5:122:13 | {...} | try.ps1:117:5:121:6 | try {...} | | +| try.ps1:117:9:119:6 | {...} | try.ps1:118:9:118:21 | Write-Output | | +| try.ps1:118:9:118:21 | Write-Output | try.ps1:118:22:118:30 | Hello! | | +| try.ps1:118:9:118:30 | Write-Output | try.ps1:119:15:121:6 | {...} | | +| try.ps1:118:22:118:30 | Hello! | try.ps1:118:9:118:30 | Write-Output | | +| try.ps1:119:15:121:6 | {...} | try.ps1:120:9:120:21 | Write-Output | | +| try.ps1:120:9:120:21 | Write-Output | try.ps1:120:22:120:32 | Finally! | | +| try.ps1:120:9:120:32 | Write-Output | try.ps1:122:5:122:13 | return ... | | +| try.ps1:120:22:120:32 | Finally! | try.ps1:120:9:120:32 | Write-Output | | +| try.ps1:122:5:122:13 | return ... | try.ps1:122:12:122:13 | 1 | | +| try.ps1:122:12:122:13 | 1 | try.ps1:116:27:123:2 | exit {...} (normal) | | +| try.ps1:122:12:122:13 | 1 | try.ps1:122:12:122:13 | 1 | | +| try.ps1:125:1:134:2 | test-try-finally-catch-specific-1 | try.ps1:136:1:147:2 | test-nested-try-inner-finally | | +| try.ps1:125:44:134:2 | enter {...} | try.ps1:125:44:134:2 | {...} | | +| try.ps1:125:44:134:2 | exit {...} (normal) | try.ps1:125:44:134:2 | exit {...} | | +| try.ps1:125:44:134:2 | {...} | try.ps1:126:5:133:13 | {...} | | +| try.ps1:126:5:132:6 | try {...} | try.ps1:126:9:128:6 | {...} | | +| try.ps1:126:5:133:13 | {...} | try.ps1:126:5:132:6 | try {...} | | +| try.ps1:126:9:128:6 | {...} | try.ps1:127:9:127:21 | Write-Output | | +| try.ps1:127:9:127:21 | Write-Output | try.ps1:127:22:127:30 | Hello! | | +| try.ps1:127:9:127:30 | Write-Output | try.ps1:130:15:132:6 | {...} | | +| try.ps1:127:22:127:30 | Hello! | try.ps1:127:9:127:30 | Write-Output | | +| try.ps1:130:15:132:6 | {...} | try.ps1:131:9:131:21 | Write-Output | | +| try.ps1:131:9:131:21 | Write-Output | try.ps1:131:22:131:32 | Finally! | | +| try.ps1:131:9:131:32 | Write-Output | try.ps1:133:5:133:13 | return ... | | +| try.ps1:131:22:131:32 | Finally! | try.ps1:131:9:131:32 | Write-Output | | +| try.ps1:133:5:133:13 | return ... | try.ps1:133:12:133:13 | 1 | | +| try.ps1:133:12:133:13 | 1 | try.ps1:125:44:134:2 | exit {...} (normal) | | +| try.ps1:133:12:133:13 | 1 | try.ps1:133:12:133:13 | 1 | | +| try.ps1:136:1:147:2 | test-nested-try-inner-finally | try.ps1:149:1:162:2 | test-nested-try-inner-finally | | +| try.ps1:136:40:147:2 | enter {...} | try.ps1:136:40:147:2 | {...} | | +| try.ps1:136:40:147:2 | exit {...} (normal) | try.ps1:136:40:147:2 | exit {...} | | +| try.ps1:136:40:147:2 | {...} | try.ps1:137:5:146:13 | {...} | | +| try.ps1:137:5:145:6 | try {...} | try.ps1:137:9:143:6 | {...} | | +| try.ps1:137:5:146:13 | {...} | try.ps1:137:5:145:6 | try {...} | | +| try.ps1:137:9:143:6 | {...} | try.ps1:138:9:142:10 | try {...} | | +| try.ps1:138:9:142:10 | try {...} | try.ps1:138:13:140:10 | {...} | | +| try.ps1:138:13:140:10 | {...} | try.ps1:139:13:139:25 | Write-Output | | +| try.ps1:139:13:139:25 | Write-Output | try.ps1:139:26:139:34 | Hello! | | +| try.ps1:139:13:139:34 | Write-Output | try.ps1:146:5:146:13 | return ... | | +| try.ps1:139:26:139:34 | Hello! | try.ps1:139:13:139:34 | Write-Output | | +| try.ps1:146:5:146:13 | return ... | try.ps1:146:12:146:13 | 1 | | +| try.ps1:146:12:146:13 | 1 | try.ps1:136:40:147:2 | exit {...} (normal) | | +| try.ps1:146:12:146:13 | 1 | try.ps1:146:12:146:13 | 1 | | +| try.ps1:149:1:162:2 | test-nested-try-inner-finally | try.ps1:164:1:177:2 | test-nested-try-outer-finally | | +| try.ps1:149:40:162:2 | enter {...} | try.ps1:149:40:162:2 | {...} | | +| try.ps1:149:40:162:2 | exit {...} (normal) | try.ps1:149:40:162:2 | exit {...} | | +| try.ps1:149:40:162:2 | {...} | try.ps1:150:5:161:13 | {...} | | +| try.ps1:150:5:160:6 | try {...} | try.ps1:150:9:158:6 | {...} | | +| try.ps1:150:5:161:13 | {...} | try.ps1:150:5:160:6 | try {...} | | +| try.ps1:150:9:158:6 | {...} | try.ps1:151:9:157:10 | try {...} | | +| try.ps1:151:9:157:10 | try {...} | try.ps1:151:13:153:10 | {...} | | +| try.ps1:151:13:153:10 | {...} | try.ps1:152:13:152:25 | Write-Output | | +| try.ps1:152:13:152:25 | Write-Output | try.ps1:152:26:152:34 | Hello! | | +| try.ps1:152:13:152:34 | Write-Output | try.ps1:155:19:157:10 | {...} | | +| try.ps1:152:26:152:34 | Hello! | try.ps1:152:13:152:34 | Write-Output | | +| try.ps1:155:19:157:10 | {...} | try.ps1:156:13:156:25 | Write-Output | | +| try.ps1:156:13:156:25 | Write-Output | try.ps1:156:26:156:36 | Finally! | | +| try.ps1:156:13:156:36 | Write-Output | try.ps1:161:5:161:13 | return ... | | +| try.ps1:156:26:156:36 | Finally! | try.ps1:156:13:156:36 | Write-Output | | +| try.ps1:161:5:161:13 | return ... | try.ps1:161:12:161:13 | 1 | | +| try.ps1:161:12:161:13 | 1 | try.ps1:149:40:162:2 | exit {...} (normal) | | +| try.ps1:161:12:161:13 | 1 | try.ps1:161:12:161:13 | 1 | | +| try.ps1:164:1:177:2 | test-nested-try-outer-finally | try.ps1:179:1:194:2 | test-nested-try-inner-outer-finally | | +| try.ps1:164:40:177:2 | enter {...} | try.ps1:164:40:177:2 | {...} | | +| try.ps1:164:40:177:2 | exit {...} (normal) | try.ps1:164:40:177:2 | exit {...} | | +| try.ps1:164:40:177:2 | {...} | try.ps1:165:5:176:13 | {...} | | +| try.ps1:165:5:175:6 | try {...} | try.ps1:165:9:171:6 | {...} | | +| try.ps1:165:5:176:13 | {...} | try.ps1:165:5:175:6 | try {...} | | +| try.ps1:165:9:171:6 | {...} | try.ps1:166:9:170:10 | try {...} | | +| try.ps1:166:9:170:10 | try {...} | try.ps1:166:13:168:10 | {...} | | +| try.ps1:166:13:168:10 | {...} | try.ps1:167:13:167:25 | Write-Output | | +| try.ps1:167:13:167:25 | Write-Output | try.ps1:167:26:167:34 | Hello! | | +| try.ps1:167:13:167:34 | Write-Output | try.ps1:173:15:175:6 | {...} | | +| try.ps1:167:26:167:34 | Hello! | try.ps1:167:13:167:34 | Write-Output | | +| try.ps1:173:15:175:6 | {...} | try.ps1:174:9:174:21 | Write-Output | | +| try.ps1:174:9:174:21 | Write-Output | try.ps1:174:22:174:32 | Finally! | | +| try.ps1:174:9:174:32 | Write-Output | try.ps1:176:5:176:13 | return ... | | +| try.ps1:174:22:174:32 | Finally! | try.ps1:174:9:174:32 | Write-Output | | +| try.ps1:176:5:176:13 | return ... | try.ps1:176:12:176:13 | 1 | | +| try.ps1:176:12:176:13 | 1 | try.ps1:164:40:177:2 | exit {...} (normal) | | +| try.ps1:176:12:176:13 | 1 | try.ps1:176:12:176:13 | 1 | | +| try.ps1:179:1:194:2 | test-nested-try-inner-outer-finally | try.ps1:1:1:194:2 | exit try.ps1 (normal) | | +| try.ps1:179:46:194:2 | enter {...} | try.ps1:179:46:194:2 | {...} | | +| try.ps1:179:46:194:2 | exit {...} (normal) | try.ps1:179:46:194:2 | exit {...} | | +| try.ps1:179:46:194:2 | {...} | try.ps1:180:5:193:13 | {...} | | +| try.ps1:180:5:192:6 | try {...} | try.ps1:180:9:188:6 | {...} | | +| try.ps1:180:5:193:13 | {...} | try.ps1:180:5:192:6 | try {...} | | +| try.ps1:180:9:188:6 | {...} | try.ps1:181:9:187:10 | try {...} | | +| try.ps1:181:9:187:10 | try {...} | try.ps1:181:13:183:10 | {...} | | +| try.ps1:181:13:183:10 | {...} | try.ps1:182:13:182:25 | Write-Output | | +| try.ps1:182:13:182:25 | Write-Output | try.ps1:182:26:182:34 | Hello! | | +| try.ps1:182:13:182:34 | Write-Output | try.ps1:185:19:187:10 | {...} | | +| try.ps1:182:26:182:34 | Hello! | try.ps1:182:13:182:34 | Write-Output | | +| try.ps1:185:19:187:10 | {...} | try.ps1:186:13:186:25 | Write-Output | | +| try.ps1:186:13:186:25 | Write-Output | try.ps1:186:26:186:36 | Finally! | | +| try.ps1:186:13:186:36 | Write-Output | try.ps1:190:15:192:6 | {...} | | +| try.ps1:186:26:186:36 | Finally! | try.ps1:186:13:186:36 | Write-Output | | +| try.ps1:190:15:192:6 | {...} | try.ps1:191:9:191:21 | Write-Output | | +| try.ps1:191:9:191:21 | Write-Output | try.ps1:191:22:191:32 | Finally! | | +| try.ps1:191:9:191:32 | Write-Output | try.ps1:193:5:193:13 | return ... | | +| try.ps1:191:22:191:32 | Finally! | try.ps1:191:9:191:32 | Write-Output | | +| try.ps1:193:5:193:13 | return ... | try.ps1:193:12:193:13 | 1 | | +| try.ps1:193:12:193:13 | 1 | try.ps1:179:46:194:2 | exit {...} (normal) | | +| try.ps1:193:12:193:13 | 1 | try.ps1:193:12:193:13 | 1 | | diff --git a/powershell/ql/test/library-tests/controlflow/graph/Cfg.ql b/powershell/ql/test/library-tests/controlflow/graph/Cfg.ql index 05f36b088a1..c89c201daff 100644 --- a/powershell/ql/test/library-tests/controlflow/graph/Cfg.ql +++ b/powershell/ql/test/library-tests/controlflow/graph/Cfg.ql @@ -1,7 +1,2 @@ -/** - * @kind graph - */ - import semmle.code.powershell.Cfg - import semmle.code.powershell.controlflow.internal.ControlFlowGraphImpl::TestOutput