From ce5c886ad4a3bc2317add3abe6bc5cfa0805264a Mon Sep 17 00:00:00 2001
From: Simon Friis Vindum <simonfv@gmail.com>
Date: Wed, 15 Jan 2025 14:42:11 +0100
Subject: [PATCH 01/12] Rust, Ruby: Add basic block test

---
 .../controlflow/graph/BasicBlocks.expected    | 6530 +++++++++++++++++
 .../controlflow/graph/BasicBlocks.ql          |   23 +
 .../controlflow/BasicBlocks.expected          | 1520 ++++
 .../library-tests/controlflow/BasicBlocks.ql  |   23 +
 4 files changed, 8096 insertions(+)
 create mode 100644 ruby/ql/test/library-tests/controlflow/graph/BasicBlocks.expected
 create mode 100644 ruby/ql/test/library-tests/controlflow/graph/BasicBlocks.ql
 create mode 100644 rust/ql/test/library-tests/controlflow/BasicBlocks.expected
 create mode 100644 rust/ql/test/library-tests/controlflow/BasicBlocks.ql

diff --git a/ruby/ql/test/library-tests/controlflow/graph/BasicBlocks.expected b/ruby/ql/test/library-tests/controlflow/graph/BasicBlocks.expected
new file mode 100644
index 000000000000..cafb6267eb9b
--- /dev/null
+++ b/ruby/ql/test/library-tests/controlflow/graph/BasicBlocks.expected
@@ -0,0 +1,6530 @@
+dominates
+| break_ensure.rb:1:1:11:3 | enter m1 | break_ensure.rb:1:1:11:3 | enter m1 |
+| break_ensure.rb:1:1:11:3 | enter m1 | break_ensure.rb:1:1:11:3 | exit m1 |
+| break_ensure.rb:1:1:11:3 | enter m1 | break_ensure.rb:2:3:6:5 | while ... |
+| break_ensure.rb:1:1:11:3 | enter m1 | break_ensure.rb:2:9:2:9 | x |
+| break_ensure.rb:1:1:11:3 | enter m1 | break_ensure.rb:3:5:5:7 | if ... |
+| break_ensure.rb:1:1:11:3 | enter m1 | break_ensure.rb:3:8:3:8 | x |
+| break_ensure.rb:1:1:11:3 | enter m1 | break_ensure.rb:4:7:4:11 | break |
+| break_ensure.rb:1:1:11:3 | enter m1 | break_ensure.rb:8:3:10:5 | [ensure: raise] if ... |
+| break_ensure.rb:1:1:11:3 | enter m1 | break_ensure.rb:8:3:10:5 | if ... |
+| break_ensure.rb:1:1:11:3 | enter m1 | break_ensure.rb:8:6:8:13 | [ensure: raise] self |
+| break_ensure.rb:1:1:11:3 | enter m1 | break_ensure.rb:9:5:9:23 | [ensure: raise] self |
+| break_ensure.rb:1:1:11:3 | enter m1 | break_ensure.rb:9:5:9:23 | self |
+| break_ensure.rb:1:1:11:3 | exit m1 | break_ensure.rb:1:1:11:3 | exit m1 |
+| break_ensure.rb:1:1:56:4 | enter break_ensure.rb | break_ensure.rb:1:1:56:4 | enter break_ensure.rb |
+| break_ensure.rb:2:3:6:5 | while ... | break_ensure.rb:2:3:6:5 | while ... |
+| break_ensure.rb:2:3:6:5 | while ... | break_ensure.rb:8:3:10:5 | if ... |
+| break_ensure.rb:2:3:6:5 | while ... | break_ensure.rb:9:5:9:23 | self |
+| break_ensure.rb:2:9:2:9 | x | break_ensure.rb:1:1:11:3 | exit m1 |
+| break_ensure.rb:2:9:2:9 | x | break_ensure.rb:2:3:6:5 | while ... |
+| break_ensure.rb:2:9:2:9 | x | break_ensure.rb:2:9:2:9 | x |
+| break_ensure.rb:2:9:2:9 | x | break_ensure.rb:3:5:5:7 | if ... |
+| break_ensure.rb:2:9:2:9 | x | break_ensure.rb:3:8:3:8 | x |
+| break_ensure.rb:2:9:2:9 | x | break_ensure.rb:4:7:4:11 | break |
+| break_ensure.rb:2:9:2:9 | x | break_ensure.rb:8:3:10:5 | [ensure: raise] if ... |
+| break_ensure.rb:2:9:2:9 | x | break_ensure.rb:8:3:10:5 | if ... |
+| break_ensure.rb:2:9:2:9 | x | break_ensure.rb:8:6:8:13 | [ensure: raise] self |
+| break_ensure.rb:2:9:2:9 | x | break_ensure.rb:9:5:9:23 | [ensure: raise] self |
+| break_ensure.rb:2:9:2:9 | x | break_ensure.rb:9:5:9:23 | self |
+| break_ensure.rb:3:5:5:7 | if ... | break_ensure.rb:3:5:5:7 | if ... |
+| break_ensure.rb:3:8:3:8 | x | break_ensure.rb:3:5:5:7 | if ... |
+| break_ensure.rb:3:8:3:8 | x | break_ensure.rb:3:8:3:8 | x |
+| break_ensure.rb:3:8:3:8 | x | break_ensure.rb:4:7:4:11 | break |
+| break_ensure.rb:4:7:4:11 | break | break_ensure.rb:4:7:4:11 | break |
+| break_ensure.rb:8:3:10:5 | [ensure: raise] if ... | break_ensure.rb:8:3:10:5 | [ensure: raise] if ... |
+| break_ensure.rb:8:3:10:5 | if ... | break_ensure.rb:8:3:10:5 | if ... |
+| break_ensure.rb:8:6:8:13 | [ensure: raise] self | break_ensure.rb:8:3:10:5 | [ensure: raise] if ... |
+| break_ensure.rb:8:6:8:13 | [ensure: raise] self | break_ensure.rb:8:6:8:13 | [ensure: raise] self |
+| break_ensure.rb:8:6:8:13 | [ensure: raise] self | break_ensure.rb:9:5:9:23 | [ensure: raise] self |
+| break_ensure.rb:9:5:9:23 | [ensure: raise] self | break_ensure.rb:9:5:9:23 | [ensure: raise] self |
+| break_ensure.rb:9:5:9:23 | self | break_ensure.rb:9:5:9:23 | self |
+| break_ensure.rb:13:1:25:3 | enter m2 | break_ensure.rb:13:1:25:3 | enter m2 |
+| break_ensure.rb:13:1:25:3 | enter m2 | break_ensure.rb:14:3:24:5 | while ... |
+| break_ensure.rb:13:1:25:3 | enter m2 | break_ensure.rb:14:9:14:9 | x |
+| break_ensure.rb:13:1:25:3 | enter m2 | break_ensure.rb:16:7:18:9 | if ... |
+| break_ensure.rb:13:1:25:3 | enter m2 | break_ensure.rb:16:10:16:10 | x |
+| break_ensure.rb:13:1:25:3 | enter m2 | break_ensure.rb:17:9:17:13 | break |
+| break_ensure.rb:13:1:25:3 | enter m2 | break_ensure.rb:20:7:22:9 | [ensure: break] if ... |
+| break_ensure.rb:13:1:25:3 | enter m2 | break_ensure.rb:20:7:22:9 | [ensure: raise] if ... |
+| break_ensure.rb:13:1:25:3 | enter m2 | break_ensure.rb:20:7:22:9 | if ... |
+| break_ensure.rb:13:1:25:3 | enter m2 | break_ensure.rb:20:10:20:10 | [ensure: raise] y |
+| break_ensure.rb:13:1:25:3 | enter m2 | break_ensure.rb:21:9:21:20 | [ensure: break] self |
+| break_ensure.rb:13:1:25:3 | enter m2 | break_ensure.rb:21:9:21:20 | [ensure: raise] self |
+| break_ensure.rb:13:1:25:3 | enter m2 | break_ensure.rb:21:9:21:20 | self |
+| break_ensure.rb:14:3:24:5 | while ... | break_ensure.rb:14:3:24:5 | while ... |
+| break_ensure.rb:14:9:14:9 | x | break_ensure.rb:14:3:24:5 | while ... |
+| break_ensure.rb:14:9:14:9 | x | break_ensure.rb:14:9:14:9 | x |
+| break_ensure.rb:14:9:14:9 | x | break_ensure.rb:16:7:18:9 | if ... |
+| break_ensure.rb:14:9:14:9 | x | break_ensure.rb:16:10:16:10 | x |
+| break_ensure.rb:14:9:14:9 | x | break_ensure.rb:17:9:17:13 | break |
+| break_ensure.rb:14:9:14:9 | x | break_ensure.rb:20:7:22:9 | [ensure: break] if ... |
+| break_ensure.rb:14:9:14:9 | x | break_ensure.rb:20:7:22:9 | [ensure: raise] if ... |
+| break_ensure.rb:14:9:14:9 | x | break_ensure.rb:20:7:22:9 | if ... |
+| break_ensure.rb:14:9:14:9 | x | break_ensure.rb:20:10:20:10 | [ensure: raise] y |
+| break_ensure.rb:14:9:14:9 | x | break_ensure.rb:21:9:21:20 | [ensure: break] self |
+| break_ensure.rb:14:9:14:9 | x | break_ensure.rb:21:9:21:20 | [ensure: raise] self |
+| break_ensure.rb:14:9:14:9 | x | break_ensure.rb:21:9:21:20 | self |
+| break_ensure.rb:16:7:18:9 | if ... | break_ensure.rb:16:7:18:9 | if ... |
+| break_ensure.rb:16:7:18:9 | if ... | break_ensure.rb:20:7:22:9 | if ... |
+| break_ensure.rb:16:7:18:9 | if ... | break_ensure.rb:21:9:21:20 | self |
+| break_ensure.rb:16:10:16:10 | x | break_ensure.rb:16:7:18:9 | if ... |
+| break_ensure.rb:16:10:16:10 | x | break_ensure.rb:16:10:16:10 | x |
+| break_ensure.rb:16:10:16:10 | x | break_ensure.rb:17:9:17:13 | break |
+| break_ensure.rb:16:10:16:10 | x | break_ensure.rb:20:7:22:9 | [ensure: break] if ... |
+| break_ensure.rb:16:10:16:10 | x | break_ensure.rb:20:7:22:9 | [ensure: raise] if ... |
+| break_ensure.rb:16:10:16:10 | x | break_ensure.rb:20:7:22:9 | if ... |
+| break_ensure.rb:16:10:16:10 | x | break_ensure.rb:20:10:20:10 | [ensure: raise] y |
+| break_ensure.rb:16:10:16:10 | x | break_ensure.rb:21:9:21:20 | [ensure: break] self |
+| break_ensure.rb:16:10:16:10 | x | break_ensure.rb:21:9:21:20 | [ensure: raise] self |
+| break_ensure.rb:16:10:16:10 | x | break_ensure.rb:21:9:21:20 | self |
+| break_ensure.rb:17:9:17:13 | break | break_ensure.rb:17:9:17:13 | break |
+| break_ensure.rb:17:9:17:13 | break | break_ensure.rb:20:7:22:9 | [ensure: break] if ... |
+| break_ensure.rb:17:9:17:13 | break | break_ensure.rb:21:9:21:20 | [ensure: break] self |
+| break_ensure.rb:20:7:22:9 | [ensure: break] if ... | break_ensure.rb:20:7:22:9 | [ensure: break] if ... |
+| break_ensure.rb:20:7:22:9 | [ensure: raise] if ... | break_ensure.rb:20:7:22:9 | [ensure: raise] if ... |
+| break_ensure.rb:20:7:22:9 | if ... | break_ensure.rb:20:7:22:9 | if ... |
+| break_ensure.rb:20:10:20:10 | [ensure: raise] y | break_ensure.rb:20:7:22:9 | [ensure: raise] if ... |
+| break_ensure.rb:20:10:20:10 | [ensure: raise] y | break_ensure.rb:20:10:20:10 | [ensure: raise] y |
+| break_ensure.rb:20:10:20:10 | [ensure: raise] y | break_ensure.rb:21:9:21:20 | [ensure: raise] self |
+| break_ensure.rb:21:9:21:20 | [ensure: break] self | break_ensure.rb:21:9:21:20 | [ensure: break] self |
+| break_ensure.rb:21:9:21:20 | [ensure: raise] self | break_ensure.rb:21:9:21:20 | [ensure: raise] self |
+| break_ensure.rb:21:9:21:20 | self | break_ensure.rb:21:9:21:20 | self |
+| break_ensure.rb:27:1:42:3 | enter m3 | break_ensure.rb:27:1:42:3 | enter m3 |
+| break_ensure.rb:27:1:42:3 | enter m3 | break_ensure.rb:27:1:42:3 | exit m3 |
+| break_ensure.rb:27:1:42:3 | enter m3 | break_ensure.rb:27:1:42:3 | exit m3 (normal) |
+| break_ensure.rb:27:1:42:3 | enter m3 | break_ensure.rb:29:5:31:7 | if ... |
+| break_ensure.rb:27:1:42:3 | enter m3 | break_ensure.rb:30:7:30:12 | return |
+| break_ensure.rb:27:1:42:3 | enter m3 | break_ensure.rb:33:5:39:7 | [ensure: raise] while ... |
+| break_ensure.rb:27:1:42:3 | enter m3 | break_ensure.rb:33:5:39:7 | [ensure: return] while ... |
+| break_ensure.rb:27:1:42:3 | enter m3 | break_ensure.rb:33:5:39:7 | while ... |
+| break_ensure.rb:27:1:42:3 | enter m3 | break_ensure.rb:33:11:33:11 | [ensure: raise] y |
+| break_ensure.rb:27:1:42:3 | enter m3 | break_ensure.rb:33:11:33:11 | [ensure: return] y |
+| break_ensure.rb:27:1:42:3 | enter m3 | break_ensure.rb:33:11:33:11 | y |
+| break_ensure.rb:27:1:42:3 | enter m3 | break_ensure.rb:35:9:37:11 | [ensure: raise] if ... |
+| break_ensure.rb:27:1:42:3 | enter m3 | break_ensure.rb:35:9:37:11 | [ensure: return] if ... |
+| break_ensure.rb:27:1:42:3 | enter m3 | break_ensure.rb:35:9:37:11 | if ... |
+| break_ensure.rb:27:1:42:3 | enter m3 | break_ensure.rb:35:12:35:12 | [ensure: raise] x |
+| break_ensure.rb:27:1:42:3 | enter m3 | break_ensure.rb:35:12:35:12 | [ensure: return] x |
+| break_ensure.rb:27:1:42:3 | enter m3 | break_ensure.rb:35:12:35:12 | x |
+| break_ensure.rb:27:1:42:3 | enter m3 | break_ensure.rb:36:11:36:15 | [ensure: raise] break |
+| break_ensure.rb:27:1:42:3 | enter m3 | break_ensure.rb:36:11:36:15 | [ensure: return] break |
+| break_ensure.rb:27:1:42:3 | enter m3 | break_ensure.rb:36:11:36:15 | break |
+| break_ensure.rb:27:1:42:3 | exit m3 | break_ensure.rb:27:1:42:3 | exit m3 |
+| break_ensure.rb:27:1:42:3 | exit m3 (normal) | break_ensure.rb:27:1:42:3 | exit m3 (normal) |
+| break_ensure.rb:29:5:31:7 | if ... | break_ensure.rb:29:5:31:7 | if ... |
+| break_ensure.rb:29:5:31:7 | if ... | break_ensure.rb:33:5:39:7 | while ... |
+| break_ensure.rb:29:5:31:7 | if ... | break_ensure.rb:33:11:33:11 | y |
+| break_ensure.rb:29:5:31:7 | if ... | break_ensure.rb:35:9:37:11 | if ... |
+| break_ensure.rb:29:5:31:7 | if ... | break_ensure.rb:35:12:35:12 | x |
+| break_ensure.rb:29:5:31:7 | if ... | break_ensure.rb:36:11:36:15 | break |
+| break_ensure.rb:30:7:30:12 | return | break_ensure.rb:30:7:30:12 | return |
+| break_ensure.rb:30:7:30:12 | return | break_ensure.rb:33:5:39:7 | [ensure: return] while ... |
+| break_ensure.rb:30:7:30:12 | return | break_ensure.rb:33:11:33:11 | [ensure: return] y |
+| break_ensure.rb:30:7:30:12 | return | break_ensure.rb:35:9:37:11 | [ensure: return] if ... |
+| break_ensure.rb:30:7:30:12 | return | break_ensure.rb:35:12:35:12 | [ensure: return] x |
+| break_ensure.rb:30:7:30:12 | return | break_ensure.rb:36:11:36:15 | [ensure: return] break |
+| break_ensure.rb:33:5:39:7 | [ensure: raise] while ... | break_ensure.rb:33:5:39:7 | [ensure: raise] while ... |
+| break_ensure.rb:33:5:39:7 | [ensure: return] while ... | break_ensure.rb:33:5:39:7 | [ensure: return] while ... |
+| break_ensure.rb:33:5:39:7 | while ... | break_ensure.rb:33:5:39:7 | while ... |
+| break_ensure.rb:33:11:33:11 | [ensure: raise] y | break_ensure.rb:33:5:39:7 | [ensure: raise] while ... |
+| break_ensure.rb:33:11:33:11 | [ensure: raise] y | break_ensure.rb:33:11:33:11 | [ensure: raise] y |
+| break_ensure.rb:33:11:33:11 | [ensure: raise] y | break_ensure.rb:35:9:37:11 | [ensure: raise] if ... |
+| break_ensure.rb:33:11:33:11 | [ensure: raise] y | break_ensure.rb:35:12:35:12 | [ensure: raise] x |
+| break_ensure.rb:33:11:33:11 | [ensure: raise] y | break_ensure.rb:36:11:36:15 | [ensure: raise] break |
+| break_ensure.rb:33:11:33:11 | [ensure: return] y | break_ensure.rb:33:5:39:7 | [ensure: return] while ... |
+| break_ensure.rb:33:11:33:11 | [ensure: return] y | break_ensure.rb:33:11:33:11 | [ensure: return] y |
+| break_ensure.rb:33:11:33:11 | [ensure: return] y | break_ensure.rb:35:9:37:11 | [ensure: return] if ... |
+| break_ensure.rb:33:11:33:11 | [ensure: return] y | break_ensure.rb:35:12:35:12 | [ensure: return] x |
+| break_ensure.rb:33:11:33:11 | [ensure: return] y | break_ensure.rb:36:11:36:15 | [ensure: return] break |
+| break_ensure.rb:33:11:33:11 | y | break_ensure.rb:33:5:39:7 | while ... |
+| break_ensure.rb:33:11:33:11 | y | break_ensure.rb:33:11:33:11 | y |
+| break_ensure.rb:33:11:33:11 | y | break_ensure.rb:35:9:37:11 | if ... |
+| break_ensure.rb:33:11:33:11 | y | break_ensure.rb:35:12:35:12 | x |
+| break_ensure.rb:33:11:33:11 | y | break_ensure.rb:36:11:36:15 | break |
+| break_ensure.rb:35:9:37:11 | [ensure: raise] if ... | break_ensure.rb:35:9:37:11 | [ensure: raise] if ... |
+| break_ensure.rb:35:9:37:11 | [ensure: return] if ... | break_ensure.rb:35:9:37:11 | [ensure: return] if ... |
+| break_ensure.rb:35:9:37:11 | if ... | break_ensure.rb:35:9:37:11 | if ... |
+| break_ensure.rb:35:12:35:12 | [ensure: raise] x | break_ensure.rb:35:9:37:11 | [ensure: raise] if ... |
+| break_ensure.rb:35:12:35:12 | [ensure: raise] x | break_ensure.rb:35:12:35:12 | [ensure: raise] x |
+| break_ensure.rb:35:12:35:12 | [ensure: raise] x | break_ensure.rb:36:11:36:15 | [ensure: raise] break |
+| break_ensure.rb:35:12:35:12 | [ensure: return] x | break_ensure.rb:35:9:37:11 | [ensure: return] if ... |
+| break_ensure.rb:35:12:35:12 | [ensure: return] x | break_ensure.rb:35:12:35:12 | [ensure: return] x |
+| break_ensure.rb:35:12:35:12 | [ensure: return] x | break_ensure.rb:36:11:36:15 | [ensure: return] break |
+| break_ensure.rb:35:12:35:12 | x | break_ensure.rb:35:9:37:11 | if ... |
+| break_ensure.rb:35:12:35:12 | x | break_ensure.rb:35:12:35:12 | x |
+| break_ensure.rb:35:12:35:12 | x | break_ensure.rb:36:11:36:15 | break |
+| break_ensure.rb:36:11:36:15 | [ensure: raise] break | break_ensure.rb:36:11:36:15 | [ensure: raise] break |
+| break_ensure.rb:36:11:36:15 | [ensure: return] break | break_ensure.rb:36:11:36:15 | [ensure: return] break |
+| break_ensure.rb:36:11:36:15 | break | break_ensure.rb:36:11:36:15 | break |
+| break_ensure.rb:44:1:56:3 | enter m4 | break_ensure.rb:44:1:56:3 | enter m4 |
+| break_ensure.rb:44:1:56:3 | enter m4 | break_ensure.rb:45:3:55:5 | while ... |
+| break_ensure.rb:44:1:56:3 | enter m4 | break_ensure.rb:45:9:45:9 | x |
+| break_ensure.rb:44:1:56:3 | enter m4 | break_ensure.rb:47:7:49:9 | if ... |
+| break_ensure.rb:44:1:56:3 | enter m4 | break_ensure.rb:47:10:47:10 | x |
+| break_ensure.rb:44:1:56:3 | enter m4 | break_ensure.rb:48:9:48:16 | self |
+| break_ensure.rb:44:1:56:3 | enter m4 | break_ensure.rb:51:7:53:9 | [ensure: raise] if ... |
+| break_ensure.rb:44:1:56:3 | enter m4 | break_ensure.rb:51:7:53:9 | if ... |
+| break_ensure.rb:44:1:56:3 | enter m4 | break_ensure.rb:51:10:51:10 | [ensure: raise] x |
+| break_ensure.rb:44:1:56:3 | enter m4 | break_ensure.rb:52:15:52:16 | 10 |
+| break_ensure.rb:44:1:56:3 | enter m4 | break_ensure.rb:52:15:52:16 | [ensure: raise] 10 |
+| break_ensure.rb:45:3:55:5 | while ... | break_ensure.rb:45:3:55:5 | while ... |
+| break_ensure.rb:45:9:45:9 | x | break_ensure.rb:45:3:55:5 | while ... |
+| break_ensure.rb:45:9:45:9 | x | break_ensure.rb:45:9:45:9 | x |
+| break_ensure.rb:45:9:45:9 | x | break_ensure.rb:47:7:49:9 | if ... |
+| break_ensure.rb:45:9:45:9 | x | break_ensure.rb:47:10:47:10 | x |
+| break_ensure.rb:45:9:45:9 | x | break_ensure.rb:48:9:48:16 | self |
+| break_ensure.rb:45:9:45:9 | x | break_ensure.rb:51:7:53:9 | [ensure: raise] if ... |
+| break_ensure.rb:45:9:45:9 | x | break_ensure.rb:51:7:53:9 | if ... |
+| break_ensure.rb:45:9:45:9 | x | break_ensure.rb:51:10:51:10 | [ensure: raise] x |
+| break_ensure.rb:45:9:45:9 | x | break_ensure.rb:52:15:52:16 | 10 |
+| break_ensure.rb:45:9:45:9 | x | break_ensure.rb:52:15:52:16 | [ensure: raise] 10 |
+| break_ensure.rb:47:7:49:9 | if ... | break_ensure.rb:47:7:49:9 | if ... |
+| break_ensure.rb:47:7:49:9 | if ... | break_ensure.rb:51:7:53:9 | if ... |
+| break_ensure.rb:47:7:49:9 | if ... | break_ensure.rb:52:15:52:16 | 10 |
+| break_ensure.rb:47:10:47:10 | x | break_ensure.rb:47:7:49:9 | if ... |
+| break_ensure.rb:47:10:47:10 | x | break_ensure.rb:47:10:47:10 | x |
+| break_ensure.rb:47:10:47:10 | x | break_ensure.rb:48:9:48:16 | self |
+| break_ensure.rb:47:10:47:10 | x | break_ensure.rb:51:7:53:9 | [ensure: raise] if ... |
+| break_ensure.rb:47:10:47:10 | x | break_ensure.rb:51:7:53:9 | if ... |
+| break_ensure.rb:47:10:47:10 | x | break_ensure.rb:51:10:51:10 | [ensure: raise] x |
+| break_ensure.rb:47:10:47:10 | x | break_ensure.rb:52:15:52:16 | 10 |
+| break_ensure.rb:47:10:47:10 | x | break_ensure.rb:52:15:52:16 | [ensure: raise] 10 |
+| break_ensure.rb:48:9:48:16 | self | break_ensure.rb:48:9:48:16 | self |
+| break_ensure.rb:51:7:53:9 | [ensure: raise] if ... | break_ensure.rb:51:7:53:9 | [ensure: raise] if ... |
+| break_ensure.rb:51:7:53:9 | if ... | break_ensure.rb:51:7:53:9 | if ... |
+| break_ensure.rb:51:10:51:10 | [ensure: raise] x | break_ensure.rb:51:7:53:9 | [ensure: raise] if ... |
+| break_ensure.rb:51:10:51:10 | [ensure: raise] x | break_ensure.rb:51:10:51:10 | [ensure: raise] x |
+| break_ensure.rb:51:10:51:10 | [ensure: raise] x | break_ensure.rb:52:15:52:16 | [ensure: raise] 10 |
+| break_ensure.rb:52:15:52:16 | 10 | break_ensure.rb:52:15:52:16 | 10 |
+| break_ensure.rb:52:15:52:16 | [ensure: raise] 10 | break_ensure.rb:52:15:52:16 | [ensure: raise] 10 |
+| case.rb:1:1:6:3 | enter if_in_case | case.rb:1:1:6:3 | enter if_in_case |
+| case.rb:1:1:6:3 | enter if_in_case | case.rb:2:3:5:5 | case ... |
+| case.rb:1:1:6:3 | enter if_in_case | case.rb:3:5:3:42 | [match] when ... |
+| case.rb:1:1:6:3 | enter if_in_case | case.rb:3:5:3:42 | [no-match] when ... |
+| case.rb:1:1:6:3 | enter if_in_case | case.rb:3:18:3:41 | if ... |
+| case.rb:1:1:6:3 | enter if_in_case | case.rb:3:21:3:22 | self |
+| case.rb:1:1:6:3 | enter if_in_case | case.rb:3:29:3:37 | self |
+| case.rb:1:1:6:3 | enter if_in_case | case.rb:4:5:4:24 | [match] when ... |
+| case.rb:1:1:6:3 | enter if_in_case | case.rb:4:5:4:24 | [no-match] when ... |
+| case.rb:1:1:6:3 | enter if_in_case | case.rb:4:10:4:10 | 2 |
+| case.rb:1:1:6:3 | enter if_in_case | case.rb:4:17:4:24 | self |
+| case.rb:1:1:99:4 | enter case.rb | case.rb:1:1:99:4 | enter case.rb |
+| case.rb:2:3:5:5 | case ... | case.rb:2:3:5:5 | case ... |
+| case.rb:3:5:3:42 | [match] when ... | case.rb:3:5:3:42 | [match] when ... |
+| case.rb:3:5:3:42 | [match] when ... | case.rb:3:18:3:41 | if ... |
+| case.rb:3:5:3:42 | [match] when ... | case.rb:3:21:3:22 | self |
+| case.rb:3:5:3:42 | [match] when ... | case.rb:3:29:3:37 | self |
+| case.rb:3:5:3:42 | [no-match] when ... | case.rb:3:5:3:42 | [no-match] when ... |
+| case.rb:3:5:3:42 | [no-match] when ... | case.rb:4:5:4:24 | [match] when ... |
+| case.rb:3:5:3:42 | [no-match] when ... | case.rb:4:5:4:24 | [no-match] when ... |
+| case.rb:3:5:3:42 | [no-match] when ... | case.rb:4:10:4:10 | 2 |
+| case.rb:3:5:3:42 | [no-match] when ... | case.rb:4:17:4:24 | self |
+| case.rb:3:18:3:41 | if ... | case.rb:3:18:3:41 | if ... |
+| case.rb:3:21:3:22 | self | case.rb:3:18:3:41 | if ... |
+| case.rb:3:21:3:22 | self | case.rb:3:21:3:22 | self |
+| case.rb:3:21:3:22 | self | case.rb:3:29:3:37 | self |
+| case.rb:3:29:3:37 | self | case.rb:3:29:3:37 | self |
+| case.rb:4:5:4:24 | [match] when ... | case.rb:4:5:4:24 | [match] when ... |
+| case.rb:4:5:4:24 | [match] when ... | case.rb:4:17:4:24 | self |
+| case.rb:4:5:4:24 | [no-match] when ... | case.rb:4:5:4:24 | [no-match] when ... |
+| case.rb:4:10:4:10 | 2 | case.rb:4:5:4:24 | [match] when ... |
+| case.rb:4:10:4:10 | 2 | case.rb:4:5:4:24 | [no-match] when ... |
+| case.rb:4:10:4:10 | 2 | case.rb:4:10:4:10 | 2 |
+| case.rb:4:10:4:10 | 2 | case.rb:4:17:4:24 | self |
+| case.rb:4:17:4:24 | self | case.rb:4:17:4:24 | self |
+| case.rb:8:1:18:3 | enter case_match | case.rb:8:1:18:3 | enter case_match |
+| case.rb:8:1:18:3 | enter case_match | case.rb:9:3:17:5 | case ... |
+| case.rb:8:1:18:3 | enter case_match | case.rb:11:5:11:15 | in ... then ... |
+| case.rb:8:1:18:3 | enter case_match | case.rb:11:15:11:15 | 3 |
+| case.rb:8:1:18:3 | enter case_match | case.rb:12:5:13:7 | in ... then ... |
+| case.rb:8:1:18:3 | enter case_match | case.rb:13:7:13:7 | 4 |
+| case.rb:8:1:18:3 | enter case_match | case.rb:14:5:14:25 | in ... then ... |
+| case.rb:8:1:18:3 | enter case_match | case.rb:14:13:14:13 | x |
+| case.rb:8:1:18:3 | enter case_match | case.rb:14:25:14:25 | 6 |
+| case.rb:8:1:18:3 | enter case_match | case.rb:15:5:15:28 | in ... then ... |
+| case.rb:8:1:18:3 | enter case_match | case.rb:15:17:15:17 | x |
+| case.rb:8:1:18:3 | enter case_match | case.rb:15:28:15:28 | 7 |
+| case.rb:8:1:18:3 | enter case_match | case.rb:16:10:16:10 | 8 |
+| case.rb:9:3:17:5 | case ... | case.rb:9:3:17:5 | case ... |
+| case.rb:11:5:11:15 | in ... then ... | case.rb:11:5:11:15 | in ... then ... |
+| case.rb:11:5:11:15 | in ... then ... | case.rb:11:15:11:15 | 3 |
+| case.rb:11:5:11:15 | in ... then ... | case.rb:12:5:13:7 | in ... then ... |
+| case.rb:11:5:11:15 | in ... then ... | case.rb:13:7:13:7 | 4 |
+| case.rb:11:5:11:15 | in ... then ... | case.rb:14:5:14:25 | in ... then ... |
+| case.rb:11:5:11:15 | in ... then ... | case.rb:14:13:14:13 | x |
+| case.rb:11:5:11:15 | in ... then ... | case.rb:14:25:14:25 | 6 |
+| case.rb:11:5:11:15 | in ... then ... | case.rb:15:5:15:28 | in ... then ... |
+| case.rb:11:5:11:15 | in ... then ... | case.rb:15:17:15:17 | x |
+| case.rb:11:5:11:15 | in ... then ... | case.rb:15:28:15:28 | 7 |
+| case.rb:11:5:11:15 | in ... then ... | case.rb:16:10:16:10 | 8 |
+| case.rb:11:15:11:15 | 3 | case.rb:11:15:11:15 | 3 |
+| case.rb:12:5:13:7 | in ... then ... | case.rb:12:5:13:7 | in ... then ... |
+| case.rb:12:5:13:7 | in ... then ... | case.rb:13:7:13:7 | 4 |
+| case.rb:12:5:13:7 | in ... then ... | case.rb:14:5:14:25 | in ... then ... |
+| case.rb:12:5:13:7 | in ... then ... | case.rb:14:13:14:13 | x |
+| case.rb:12:5:13:7 | in ... then ... | case.rb:14:25:14:25 | 6 |
+| case.rb:12:5:13:7 | in ... then ... | case.rb:15:5:15:28 | in ... then ... |
+| case.rb:12:5:13:7 | in ... then ... | case.rb:15:17:15:17 | x |
+| case.rb:12:5:13:7 | in ... then ... | case.rb:15:28:15:28 | 7 |
+| case.rb:12:5:13:7 | in ... then ... | case.rb:16:10:16:10 | 8 |
+| case.rb:13:7:13:7 | 4 | case.rb:13:7:13:7 | 4 |
+| case.rb:14:5:14:25 | in ... then ... | case.rb:14:5:14:25 | in ... then ... |
+| case.rb:14:5:14:25 | in ... then ... | case.rb:14:13:14:13 | x |
+| case.rb:14:5:14:25 | in ... then ... | case.rb:14:25:14:25 | 6 |
+| case.rb:14:5:14:25 | in ... then ... | case.rb:15:5:15:28 | in ... then ... |
+| case.rb:14:5:14:25 | in ... then ... | case.rb:15:17:15:17 | x |
+| case.rb:14:5:14:25 | in ... then ... | case.rb:15:28:15:28 | 7 |
+| case.rb:14:5:14:25 | in ... then ... | case.rb:16:10:16:10 | 8 |
+| case.rb:14:13:14:13 | x | case.rb:14:13:14:13 | x |
+| case.rb:14:13:14:13 | x | case.rb:14:25:14:25 | 6 |
+| case.rb:14:13:14:13 | x | case.rb:15:5:15:28 | in ... then ... |
+| case.rb:14:13:14:13 | x | case.rb:15:17:15:17 | x |
+| case.rb:14:13:14:13 | x | case.rb:15:28:15:28 | 7 |
+| case.rb:14:13:14:13 | x | case.rb:16:10:16:10 | 8 |
+| case.rb:14:25:14:25 | 6 | case.rb:14:25:14:25 | 6 |
+| case.rb:15:5:15:28 | in ... then ... | case.rb:15:5:15:28 | in ... then ... |
+| case.rb:15:5:15:28 | in ... then ... | case.rb:15:17:15:17 | x |
+| case.rb:15:5:15:28 | in ... then ... | case.rb:15:28:15:28 | 7 |
+| case.rb:15:5:15:28 | in ... then ... | case.rb:16:10:16:10 | 8 |
+| case.rb:15:17:15:17 | x | case.rb:15:17:15:17 | x |
+| case.rb:15:17:15:17 | x | case.rb:15:28:15:28 | 7 |
+| case.rb:15:17:15:17 | x | case.rb:16:10:16:10 | 8 |
+| case.rb:15:28:15:28 | 7 | case.rb:15:28:15:28 | 7 |
+| case.rb:16:10:16:10 | 8 | case.rb:16:10:16:10 | 8 |
+| case.rb:20:1:24:3 | enter case_match_no_match | case.rb:20:1:24:3 | enter case_match_no_match |
+| case.rb:20:1:24:3 | enter case_match_no_match | case.rb:20:1:24:3 | exit case_match_no_match |
+| case.rb:20:1:24:3 | enter case_match_no_match | case.rb:20:1:24:3 | exit case_match_no_match (abnormal) |
+| case.rb:20:1:24:3 | enter case_match_no_match | case.rb:21:3:23:5 | case ... |
+| case.rb:20:1:24:3 | exit case_match_no_match | case.rb:20:1:24:3 | exit case_match_no_match |
+| case.rb:20:1:24:3 | exit case_match_no_match (abnormal) | case.rb:20:1:24:3 | exit case_match_no_match (abnormal) |
+| case.rb:21:3:23:5 | case ... | case.rb:21:3:23:5 | case ... |
+| case.rb:26:1:30:3 | enter case_match_raise | case.rb:26:1:30:3 | enter case_match_raise |
+| case.rb:26:1:30:3 | enter case_match_raise | case.rb:26:1:30:3 | exit case_match_raise |
+| case.rb:26:1:30:3 | enter case_match_raise | case.rb:26:1:30:3 | exit case_match_raise (abnormal) |
+| case.rb:26:1:30:3 | enter case_match_raise | case.rb:27:3:29:5 | case ... |
+| case.rb:26:1:30:3 | exit case_match_raise | case.rb:26:1:30:3 | exit case_match_raise |
+| case.rb:26:1:30:3 | exit case_match_raise (abnormal) | case.rb:26:1:30:3 | exit case_match_raise (abnormal) |
+| case.rb:27:3:29:5 | case ... | case.rb:27:3:29:5 | case ... |
+| case.rb:28:7:28:28 | enter -> { ... } | case.rb:28:7:28:28 | enter -> { ... } |
+| case.rb:32:1:39:3 | enter case_match_array | case.rb:32:1:39:3 | enter case_match_array |
+| case.rb:32:1:39:3 | enter case_match_array | case.rb:32:1:39:3 | exit case_match_array |
+| case.rb:32:1:39:3 | enter case_match_array | case.rb:32:1:39:3 | exit case_match_array (abnormal) |
+| case.rb:32:1:39:3 | enter case_match_array | case.rb:33:3:38:5 | case ... |
+| case.rb:32:1:39:3 | enter case_match_array | case.rb:35:5:35:11 | in ... then ... |
+| case.rb:32:1:39:3 | enter case_match_array | case.rb:35:9:35:9 | x |
+| case.rb:32:1:39:3 | enter case_match_array | case.rb:36:5:36:13 | in ... then ... |
+| case.rb:32:1:39:3 | enter case_match_array | case.rb:36:9:36:9 | x |
+| case.rb:32:1:39:3 | enter case_match_array | case.rb:37:5:37:27 | in ... then ... |
+| case.rb:32:1:39:3 | enter case_match_array | case.rb:37:8:37:26 | [ ..., * ] |
+| case.rb:32:1:39:3 | enter case_match_array | case.rb:37:12:37:12 | a |
+| case.rb:32:1:39:3 | enter case_match_array | case.rb:37:15:37:15 | b |
+| case.rb:32:1:39:3 | enter case_match_array | case.rb:37:19:37:19 | c |
+| case.rb:32:1:39:3 | enter case_match_array | case.rb:37:25:37:25 | e |
+| case.rb:32:1:39:3 | exit case_match_array | case.rb:32:1:39:3 | exit case_match_array |
+| case.rb:32:1:39:3 | exit case_match_array (abnormal) | case.rb:32:1:39:3 | exit case_match_array (abnormal) |
+| case.rb:33:3:38:5 | case ... | case.rb:33:3:38:5 | case ... |
+| case.rb:35:5:35:11 | in ... then ... | case.rb:32:1:39:3 | exit case_match_array (abnormal) |
+| case.rb:35:5:35:11 | in ... then ... | case.rb:35:5:35:11 | in ... then ... |
+| case.rb:35:5:35:11 | in ... then ... | case.rb:35:9:35:9 | x |
+| case.rb:35:5:35:11 | in ... then ... | case.rb:36:5:36:13 | in ... then ... |
+| case.rb:35:5:35:11 | in ... then ... | case.rb:36:9:36:9 | x |
+| case.rb:35:5:35:11 | in ... then ... | case.rb:37:5:37:27 | in ... then ... |
+| case.rb:35:5:35:11 | in ... then ... | case.rb:37:8:37:26 | [ ..., * ] |
+| case.rb:35:5:35:11 | in ... then ... | case.rb:37:12:37:12 | a |
+| case.rb:35:5:35:11 | in ... then ... | case.rb:37:15:37:15 | b |
+| case.rb:35:5:35:11 | in ... then ... | case.rb:37:19:37:19 | c |
+| case.rb:35:5:35:11 | in ... then ... | case.rb:37:25:37:25 | e |
+| case.rb:35:9:35:9 | x | case.rb:35:9:35:9 | x |
+| case.rb:36:5:36:13 | in ... then ... | case.rb:32:1:39:3 | exit case_match_array (abnormal) |
+| case.rb:36:5:36:13 | in ... then ... | case.rb:36:5:36:13 | in ... then ... |
+| case.rb:36:5:36:13 | in ... then ... | case.rb:36:9:36:9 | x |
+| case.rb:36:5:36:13 | in ... then ... | case.rb:37:5:37:27 | in ... then ... |
+| case.rb:36:5:36:13 | in ... then ... | case.rb:37:8:37:26 | [ ..., * ] |
+| case.rb:36:5:36:13 | in ... then ... | case.rb:37:12:37:12 | a |
+| case.rb:36:5:36:13 | in ... then ... | case.rb:37:15:37:15 | b |
+| case.rb:36:5:36:13 | in ... then ... | case.rb:37:19:37:19 | c |
+| case.rb:36:5:36:13 | in ... then ... | case.rb:37:25:37:25 | e |
+| case.rb:36:9:36:9 | x | case.rb:36:9:36:9 | x |
+| case.rb:37:5:37:27 | in ... then ... | case.rb:32:1:39:3 | exit case_match_array (abnormal) |
+| case.rb:37:5:37:27 | in ... then ... | case.rb:37:5:37:27 | in ... then ... |
+| case.rb:37:5:37:27 | in ... then ... | case.rb:37:8:37:26 | [ ..., * ] |
+| case.rb:37:5:37:27 | in ... then ... | case.rb:37:12:37:12 | a |
+| case.rb:37:5:37:27 | in ... then ... | case.rb:37:15:37:15 | b |
+| case.rb:37:5:37:27 | in ... then ... | case.rb:37:19:37:19 | c |
+| case.rb:37:5:37:27 | in ... then ... | case.rb:37:25:37:25 | e |
+| case.rb:37:8:37:26 | [ ..., * ] | case.rb:37:8:37:26 | [ ..., * ] |
+| case.rb:37:8:37:26 | [ ..., * ] | case.rb:37:12:37:12 | a |
+| case.rb:37:8:37:26 | [ ..., * ] | case.rb:37:15:37:15 | b |
+| case.rb:37:8:37:26 | [ ..., * ] | case.rb:37:19:37:19 | c |
+| case.rb:37:8:37:26 | [ ..., * ] | case.rb:37:25:37:25 | e |
+| case.rb:37:12:37:12 | a | case.rb:37:12:37:12 | a |
+| case.rb:37:12:37:12 | a | case.rb:37:15:37:15 | b |
+| case.rb:37:12:37:12 | a | case.rb:37:19:37:19 | c |
+| case.rb:37:12:37:12 | a | case.rb:37:25:37:25 | e |
+| case.rb:37:15:37:15 | b | case.rb:37:15:37:15 | b |
+| case.rb:37:15:37:15 | b | case.rb:37:19:37:19 | c |
+| case.rb:37:15:37:15 | b | case.rb:37:25:37:25 | e |
+| case.rb:37:19:37:19 | c | case.rb:37:19:37:19 | c |
+| case.rb:37:19:37:19 | c | case.rb:37:25:37:25 | e |
+| case.rb:37:25:37:25 | e | case.rb:37:25:37:25 | e |
+| case.rb:41:1:45:3 | enter case_match_find | case.rb:41:1:45:3 | enter case_match_find |
+| case.rb:41:1:45:3 | enter case_match_find | case.rb:41:1:45:3 | exit case_match_find |
+| case.rb:41:1:45:3 | enter case_match_find | case.rb:41:1:45:3 | exit case_match_find (abnormal) |
+| case.rb:41:1:45:3 | enter case_match_find | case.rb:43:10:43:10 | x |
+| case.rb:41:1:45:3 | enter case_match_find | case.rb:43:16:43:16 | 2 |
+| case.rb:41:1:45:3 | enter case_match_find | case.rb:43:20:43:20 | y |
+| case.rb:41:1:45:3 | exit case_match_find | case.rb:41:1:45:3 | exit case_match_find |
+| case.rb:41:1:45:3 | exit case_match_find (abnormal) | case.rb:41:1:45:3 | exit case_match_find (abnormal) |
+| case.rb:43:10:43:10 | x | case.rb:43:10:43:10 | x |
+| case.rb:43:10:43:10 | x | case.rb:43:16:43:16 | 2 |
+| case.rb:43:10:43:10 | x | case.rb:43:20:43:20 | y |
+| case.rb:43:16:43:16 | 2 | case.rb:43:16:43:16 | 2 |
+| case.rb:43:16:43:16 | 2 | case.rb:43:20:43:20 | y |
+| case.rb:43:20:43:20 | y | case.rb:43:20:43:20 | y |
+| case.rb:47:1:53:3 | enter case_match_hash | case.rb:47:1:53:3 | enter case_match_hash |
+| case.rb:47:1:53:3 | enter case_match_hash | case.rb:47:1:53:3 | exit case_match_hash |
+| case.rb:47:1:53:3 | enter case_match_hash | case.rb:47:1:53:3 | exit case_match_hash (abnormal) |
+| case.rb:47:1:53:3 | enter case_match_hash | case.rb:48:3:52:5 | case ... |
+| case.rb:47:1:53:3 | enter case_match_hash | case.rb:49:8:49:34 | { ..., ** } |
+| case.rb:47:1:53:3 | enter case_match_hash | case.rb:49:20:49:20 | 1 |
+| case.rb:47:1:53:3 | enter case_match_hash | case.rb:49:23:49:23 | a |
+| case.rb:47:1:53:3 | enter case_match_hash | case.rb:49:29:49:32 | rest |
+| case.rb:47:1:53:3 | enter case_match_hash | case.rb:50:5:50:25 | in ... then ... |
+| case.rb:47:1:53:3 | enter case_match_hash | case.rb:50:8:50:24 | { ..., ** } |
+| case.rb:47:1:53:3 | enter case_match_hash | case.rb:50:16:50:16 | 1 |
+| case.rb:47:1:53:3 | enter case_match_hash | case.rb:51:5:51:17 | in ... then ... |
+| case.rb:47:1:53:3 | enter case_match_hash | case.rb:51:8:51:16 | { ..., ** } |
+| case.rb:47:1:53:3 | exit case_match_hash | case.rb:47:1:53:3 | exit case_match_hash |
+| case.rb:47:1:53:3 | exit case_match_hash (abnormal) | case.rb:47:1:53:3 | exit case_match_hash (abnormal) |
+| case.rb:48:3:52:5 | case ... | case.rb:48:3:52:5 | case ... |
+| case.rb:49:8:49:34 | { ..., ** } | case.rb:49:8:49:34 | { ..., ** } |
+| case.rb:49:8:49:34 | { ..., ** } | case.rb:49:20:49:20 | 1 |
+| case.rb:49:8:49:34 | { ..., ** } | case.rb:49:23:49:23 | a |
+| case.rb:49:8:49:34 | { ..., ** } | case.rb:49:29:49:32 | rest |
+| case.rb:49:20:49:20 | 1 | case.rb:49:20:49:20 | 1 |
+| case.rb:49:20:49:20 | 1 | case.rb:49:23:49:23 | a |
+| case.rb:49:20:49:20 | 1 | case.rb:49:29:49:32 | rest |
+| case.rb:49:23:49:23 | a | case.rb:49:23:49:23 | a |
+| case.rb:49:23:49:23 | a | case.rb:49:29:49:32 | rest |
+| case.rb:49:29:49:32 | rest | case.rb:49:29:49:32 | rest |
+| case.rb:50:5:50:25 | in ... then ... | case.rb:47:1:53:3 | exit case_match_hash (abnormal) |
+| case.rb:50:5:50:25 | in ... then ... | case.rb:50:5:50:25 | in ... then ... |
+| case.rb:50:5:50:25 | in ... then ... | case.rb:50:8:50:24 | { ..., ** } |
+| case.rb:50:5:50:25 | in ... then ... | case.rb:50:16:50:16 | 1 |
+| case.rb:50:5:50:25 | in ... then ... | case.rb:51:5:51:17 | in ... then ... |
+| case.rb:50:5:50:25 | in ... then ... | case.rb:51:8:51:16 | { ..., ** } |
+| case.rb:50:8:50:24 | { ..., ** } | case.rb:50:8:50:24 | { ..., ** } |
+| case.rb:50:8:50:24 | { ..., ** } | case.rb:50:16:50:16 | 1 |
+| case.rb:50:16:50:16 | 1 | case.rb:50:16:50:16 | 1 |
+| case.rb:51:5:51:17 | in ... then ... | case.rb:47:1:53:3 | exit case_match_hash (abnormal) |
+| case.rb:51:5:51:17 | in ... then ... | case.rb:51:5:51:17 | in ... then ... |
+| case.rb:51:5:51:17 | in ... then ... | case.rb:51:8:51:16 | { ..., ** } |
+| case.rb:51:8:51:16 | { ..., ** } | case.rb:51:8:51:16 | { ..., ** } |
+| case.rb:55:1:61:3 | enter case_match_variable | case.rb:55:1:61:3 | enter case_match_variable |
+| case.rb:55:1:61:3 | enter case_match_variable | case.rb:56:3:60:5 | case ... |
+| case.rb:55:1:61:3 | enter case_match_variable | case.rb:58:5:58:10 | in ... then ... |
+| case.rb:56:3:60:5 | case ... | case.rb:56:3:60:5 | case ... |
+| case.rb:58:5:58:10 | in ... then ... | case.rb:58:5:58:10 | in ... then ... |
+| case.rb:63:1:67:3 | enter case_match_underscore | case.rb:63:1:67:3 | enter case_match_underscore |
+| case.rb:63:1:67:3 | enter case_match_underscore | case.rb:64:3:66:5 | case ... |
+| case.rb:63:1:67:3 | enter case_match_underscore | case.rb:65:12:65:12 | _ |
+| case.rb:64:3:66:5 | case ... | case.rb:64:3:66:5 | case ... |
+| case.rb:65:12:65:12 | _ | case.rb:65:12:65:12 | _ |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:69:1:93:3 | enter case_match_various |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:69:1:93:3 | exit case_match_various |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:69:1:93:3 | exit case_match_various (abnormal) |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:72:3:92:5 | case ... |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:74:5:74:11 | in ... then ... |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:75:5:75:15 | in ... then ... |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:76:5:76:18 | in ... then ... |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:77:5:77:18 | in ... then ... |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:78:5:78:19 | in ... then ... |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:79:5:79:14 | in ... then ... |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:80:5:80:12 | in ... then ... |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:81:5:81:11 | in ... then ... |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:82:5:82:20 | in ... then ... |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:82:13:82:13 | x |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:82:20:82:20 | 1 |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:83:5:83:26 | in ... then ... |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:83:12:83:15 | ^... |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:83:20:83:25 | string |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:84:5:84:17 | in ... then ... |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:85:5:85:23 | in ... then ... |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:86:5:86:11 | in ... then ... |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:87:5:87:17 | in ... then ... |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:88:5:88:15 | in ... then ... |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:88:14:88:15 | 10 |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:89:5:89:69 | in ... then ... |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:89:14:89:17 | self |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:89:21:89:24 | true |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:89:28:89:32 | false |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:89:36:89:43 | __LINE__ |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:89:47:89:54 | __FILE__ |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:89:58:89:69 | __ENCODING__ |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:90:5:90:13 | in ... then ... |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:91:5:91:25 | in ... then ... |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:91:13:91:14 | "" |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:91:18:91:19 | [ ..., * ] |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:91:23:91:24 | { ..., ** } |
+| case.rb:69:1:93:3 | exit case_match_various | case.rb:69:1:93:3 | exit case_match_various |
+| case.rb:69:1:93:3 | exit case_match_various (abnormal) | case.rb:69:1:93:3 | exit case_match_various (abnormal) |
+| case.rb:72:3:92:5 | case ... | case.rb:72:3:92:5 | case ... |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:69:1:93:3 | exit case_match_various (abnormal) |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:74:5:74:11 | in ... then ... |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:75:5:75:15 | in ... then ... |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:76:5:76:18 | in ... then ... |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:77:5:77:18 | in ... then ... |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:78:5:78:19 | in ... then ... |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:79:5:79:14 | in ... then ... |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:80:5:80:12 | in ... then ... |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:81:5:81:11 | in ... then ... |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:82:5:82:20 | in ... then ... |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:82:13:82:13 | x |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:82:20:82:20 | 1 |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:83:5:83:26 | in ... then ... |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:83:12:83:15 | ^... |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:83:20:83:25 | string |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:84:5:84:17 | in ... then ... |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:85:5:85:23 | in ... then ... |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:86:5:86:11 | in ... then ... |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:87:5:87:17 | in ... then ... |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:88:5:88:15 | in ... then ... |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:88:14:88:15 | 10 |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:89:5:89:69 | in ... then ... |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:89:14:89:17 | self |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:89:21:89:24 | true |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:89:28:89:32 | false |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:89:36:89:43 | __LINE__ |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:89:47:89:54 | __FILE__ |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:89:58:89:69 | __ENCODING__ |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:90:5:90:13 | in ... then ... |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:91:5:91:25 | in ... then ... |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:91:13:91:14 | "" |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:91:18:91:19 | [ ..., * ] |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:91:23:91:24 | { ..., ** } |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:69:1:93:3 | exit case_match_various (abnormal) |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:75:5:75:15 | in ... then ... |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:76:5:76:18 | in ... then ... |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:77:5:77:18 | in ... then ... |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:78:5:78:19 | in ... then ... |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:79:5:79:14 | in ... then ... |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:80:5:80:12 | in ... then ... |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:81:5:81:11 | in ... then ... |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:82:5:82:20 | in ... then ... |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:82:13:82:13 | x |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:82:20:82:20 | 1 |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:83:5:83:26 | in ... then ... |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:83:12:83:15 | ^... |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:83:20:83:25 | string |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:84:5:84:17 | in ... then ... |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:85:5:85:23 | in ... then ... |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:86:5:86:11 | in ... then ... |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:87:5:87:17 | in ... then ... |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:88:5:88:15 | in ... then ... |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:88:14:88:15 | 10 |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:89:5:89:69 | in ... then ... |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:89:14:89:17 | self |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:89:21:89:24 | true |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:89:28:89:32 | false |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:89:36:89:43 | __LINE__ |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:89:47:89:54 | __FILE__ |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:89:58:89:69 | __ENCODING__ |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:90:5:90:13 | in ... then ... |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:91:5:91:25 | in ... then ... |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:91:13:91:14 | "" |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:91:18:91:19 | [ ..., * ] |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:91:23:91:24 | { ..., ** } |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:69:1:93:3 | exit case_match_various (abnormal) |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:76:5:76:18 | in ... then ... |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:77:5:77:18 | in ... then ... |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:78:5:78:19 | in ... then ... |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:79:5:79:14 | in ... then ... |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:80:5:80:12 | in ... then ... |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:81:5:81:11 | in ... then ... |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:82:5:82:20 | in ... then ... |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:82:13:82:13 | x |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:82:20:82:20 | 1 |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:83:5:83:26 | in ... then ... |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:83:12:83:15 | ^... |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:83:20:83:25 | string |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:84:5:84:17 | in ... then ... |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:85:5:85:23 | in ... then ... |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:86:5:86:11 | in ... then ... |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:87:5:87:17 | in ... then ... |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:88:5:88:15 | in ... then ... |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:88:14:88:15 | 10 |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:89:5:89:69 | in ... then ... |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:89:14:89:17 | self |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:89:21:89:24 | true |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:89:28:89:32 | false |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:89:36:89:43 | __LINE__ |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:89:47:89:54 | __FILE__ |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:89:58:89:69 | __ENCODING__ |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:90:5:90:13 | in ... then ... |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:91:5:91:25 | in ... then ... |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:91:13:91:14 | "" |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:91:18:91:19 | [ ..., * ] |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:91:23:91:24 | { ..., ** } |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:69:1:93:3 | exit case_match_various (abnormal) |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:77:5:77:18 | in ... then ... |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:78:5:78:19 | in ... then ... |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:79:5:79:14 | in ... then ... |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:80:5:80:12 | in ... then ... |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:81:5:81:11 | in ... then ... |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:82:5:82:20 | in ... then ... |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:82:13:82:13 | x |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:82:20:82:20 | 1 |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:83:5:83:26 | in ... then ... |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:83:12:83:15 | ^... |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:83:20:83:25 | string |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:84:5:84:17 | in ... then ... |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:85:5:85:23 | in ... then ... |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:86:5:86:11 | in ... then ... |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:87:5:87:17 | in ... then ... |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:88:5:88:15 | in ... then ... |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:88:14:88:15 | 10 |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:89:5:89:69 | in ... then ... |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:89:14:89:17 | self |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:89:21:89:24 | true |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:89:28:89:32 | false |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:89:36:89:43 | __LINE__ |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:89:47:89:54 | __FILE__ |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:89:58:89:69 | __ENCODING__ |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:90:5:90:13 | in ... then ... |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:91:5:91:25 | in ... then ... |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:91:13:91:14 | "" |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:91:18:91:19 | [ ..., * ] |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:91:23:91:24 | { ..., ** } |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:69:1:93:3 | exit case_match_various (abnormal) |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:78:5:78:19 | in ... then ... |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:79:5:79:14 | in ... then ... |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:80:5:80:12 | in ... then ... |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:81:5:81:11 | in ... then ... |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:82:5:82:20 | in ... then ... |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:82:13:82:13 | x |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:82:20:82:20 | 1 |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:83:5:83:26 | in ... then ... |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:83:12:83:15 | ^... |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:83:20:83:25 | string |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:84:5:84:17 | in ... then ... |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:85:5:85:23 | in ... then ... |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:86:5:86:11 | in ... then ... |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:87:5:87:17 | in ... then ... |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:88:5:88:15 | in ... then ... |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:88:14:88:15 | 10 |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:89:5:89:69 | in ... then ... |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:89:14:89:17 | self |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:89:21:89:24 | true |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:89:28:89:32 | false |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:89:36:89:43 | __LINE__ |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:89:47:89:54 | __FILE__ |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:89:58:89:69 | __ENCODING__ |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:90:5:90:13 | in ... then ... |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:91:5:91:25 | in ... then ... |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:91:13:91:14 | "" |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:91:18:91:19 | [ ..., * ] |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:91:23:91:24 | { ..., ** } |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:69:1:93:3 | exit case_match_various (abnormal) |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:79:5:79:14 | in ... then ... |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:80:5:80:12 | in ... then ... |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:81:5:81:11 | in ... then ... |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:82:5:82:20 | in ... then ... |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:82:13:82:13 | x |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:82:20:82:20 | 1 |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:83:5:83:26 | in ... then ... |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:83:12:83:15 | ^... |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:83:20:83:25 | string |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:84:5:84:17 | in ... then ... |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:85:5:85:23 | in ... then ... |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:86:5:86:11 | in ... then ... |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:87:5:87:17 | in ... then ... |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:88:5:88:15 | in ... then ... |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:88:14:88:15 | 10 |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:89:5:89:69 | in ... then ... |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:89:14:89:17 | self |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:89:21:89:24 | true |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:89:28:89:32 | false |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:89:36:89:43 | __LINE__ |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:89:47:89:54 | __FILE__ |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:89:58:89:69 | __ENCODING__ |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:90:5:90:13 | in ... then ... |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:91:5:91:25 | in ... then ... |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:91:13:91:14 | "" |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:91:18:91:19 | [ ..., * ] |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:91:23:91:24 | { ..., ** } |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:69:1:93:3 | exit case_match_various (abnormal) |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:80:5:80:12 | in ... then ... |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:81:5:81:11 | in ... then ... |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:82:5:82:20 | in ... then ... |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:82:13:82:13 | x |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:82:20:82:20 | 1 |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:83:5:83:26 | in ... then ... |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:83:12:83:15 | ^... |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:83:20:83:25 | string |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:84:5:84:17 | in ... then ... |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:85:5:85:23 | in ... then ... |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:86:5:86:11 | in ... then ... |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:87:5:87:17 | in ... then ... |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:88:5:88:15 | in ... then ... |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:88:14:88:15 | 10 |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:89:5:89:69 | in ... then ... |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:89:14:89:17 | self |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:89:21:89:24 | true |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:89:28:89:32 | false |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:89:36:89:43 | __LINE__ |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:89:47:89:54 | __FILE__ |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:89:58:89:69 | __ENCODING__ |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:90:5:90:13 | in ... then ... |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:91:5:91:25 | in ... then ... |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:91:13:91:14 | "" |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:91:18:91:19 | [ ..., * ] |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:91:23:91:24 | { ..., ** } |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:69:1:93:3 | exit case_match_various (abnormal) |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:81:5:81:11 | in ... then ... |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:82:5:82:20 | in ... then ... |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:82:13:82:13 | x |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:82:20:82:20 | 1 |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:83:5:83:26 | in ... then ... |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:83:12:83:15 | ^... |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:83:20:83:25 | string |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:84:5:84:17 | in ... then ... |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:85:5:85:23 | in ... then ... |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:86:5:86:11 | in ... then ... |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:87:5:87:17 | in ... then ... |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:88:5:88:15 | in ... then ... |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:88:14:88:15 | 10 |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:89:5:89:69 | in ... then ... |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:89:14:89:17 | self |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:89:21:89:24 | true |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:89:28:89:32 | false |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:89:36:89:43 | __LINE__ |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:89:47:89:54 | __FILE__ |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:89:58:89:69 | __ENCODING__ |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:90:5:90:13 | in ... then ... |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:91:5:91:25 | in ... then ... |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:91:13:91:14 | "" |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:91:18:91:19 | [ ..., * ] |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:91:23:91:24 | { ..., ** } |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:69:1:93:3 | exit case_match_various (abnormal) |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:82:5:82:20 | in ... then ... |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:82:13:82:13 | x |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:82:20:82:20 | 1 |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:83:5:83:26 | in ... then ... |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:83:12:83:15 | ^... |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:83:20:83:25 | string |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:84:5:84:17 | in ... then ... |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:85:5:85:23 | in ... then ... |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:86:5:86:11 | in ... then ... |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:87:5:87:17 | in ... then ... |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:88:5:88:15 | in ... then ... |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:88:14:88:15 | 10 |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:89:5:89:69 | in ... then ... |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:89:14:89:17 | self |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:89:21:89:24 | true |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:89:28:89:32 | false |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:89:36:89:43 | __LINE__ |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:89:47:89:54 | __FILE__ |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:89:58:89:69 | __ENCODING__ |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:90:5:90:13 | in ... then ... |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:91:5:91:25 | in ... then ... |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:91:13:91:14 | "" |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:91:18:91:19 | [ ..., * ] |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:91:23:91:24 | { ..., ** } |
+| case.rb:82:13:82:13 | x | case.rb:82:13:82:13 | x |
+| case.rb:82:13:82:13 | x | case.rb:82:20:82:20 | 1 |
+| case.rb:82:20:82:20 | 1 | case.rb:82:20:82:20 | 1 |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:69:1:93:3 | exit case_match_various (abnormal) |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:83:5:83:26 | in ... then ... |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:83:12:83:15 | ^... |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:83:20:83:25 | string |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:84:5:84:17 | in ... then ... |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:85:5:85:23 | in ... then ... |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:86:5:86:11 | in ... then ... |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:87:5:87:17 | in ... then ... |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:88:5:88:15 | in ... then ... |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:88:14:88:15 | 10 |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:89:5:89:69 | in ... then ... |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:89:14:89:17 | self |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:89:21:89:24 | true |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:89:28:89:32 | false |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:89:36:89:43 | __LINE__ |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:89:47:89:54 | __FILE__ |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:89:58:89:69 | __ENCODING__ |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:90:5:90:13 | in ... then ... |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:91:5:91:25 | in ... then ... |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:91:13:91:14 | "" |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:91:18:91:19 | [ ..., * ] |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:91:23:91:24 | { ..., ** } |
+| case.rb:83:12:83:15 | ^... | case.rb:69:1:93:3 | exit case_match_various (abnormal) |
+| case.rb:83:12:83:15 | ^... | case.rb:83:12:83:15 | ^... |
+| case.rb:83:12:83:15 | ^... | case.rb:83:20:83:25 | string |
+| case.rb:83:12:83:15 | ^... | case.rb:84:5:84:17 | in ... then ... |
+| case.rb:83:12:83:15 | ^... | case.rb:85:5:85:23 | in ... then ... |
+| case.rb:83:12:83:15 | ^... | case.rb:86:5:86:11 | in ... then ... |
+| case.rb:83:12:83:15 | ^... | case.rb:87:5:87:17 | in ... then ... |
+| case.rb:83:12:83:15 | ^... | case.rb:88:5:88:15 | in ... then ... |
+| case.rb:83:12:83:15 | ^... | case.rb:88:14:88:15 | 10 |
+| case.rb:83:12:83:15 | ^... | case.rb:89:5:89:69 | in ... then ... |
+| case.rb:83:12:83:15 | ^... | case.rb:89:14:89:17 | self |
+| case.rb:83:12:83:15 | ^... | case.rb:89:21:89:24 | true |
+| case.rb:83:12:83:15 | ^... | case.rb:89:28:89:32 | false |
+| case.rb:83:12:83:15 | ^... | case.rb:89:36:89:43 | __LINE__ |
+| case.rb:83:12:83:15 | ^... | case.rb:89:47:89:54 | __FILE__ |
+| case.rb:83:12:83:15 | ^... | case.rb:89:58:89:69 | __ENCODING__ |
+| case.rb:83:12:83:15 | ^... | case.rb:90:5:90:13 | in ... then ... |
+| case.rb:83:12:83:15 | ^... | case.rb:91:5:91:25 | in ... then ... |
+| case.rb:83:12:83:15 | ^... | case.rb:91:13:91:14 | "" |
+| case.rb:83:12:83:15 | ^... | case.rb:91:18:91:19 | [ ..., * ] |
+| case.rb:83:12:83:15 | ^... | case.rb:91:23:91:24 | { ..., ** } |
+| case.rb:83:20:83:25 | string | case.rb:69:1:93:3 | exit case_match_various (abnormal) |
+| case.rb:83:20:83:25 | string | case.rb:83:20:83:25 | string |
+| case.rb:83:20:83:25 | string | case.rb:84:5:84:17 | in ... then ... |
+| case.rb:83:20:83:25 | string | case.rb:85:5:85:23 | in ... then ... |
+| case.rb:83:20:83:25 | string | case.rb:86:5:86:11 | in ... then ... |
+| case.rb:83:20:83:25 | string | case.rb:87:5:87:17 | in ... then ... |
+| case.rb:83:20:83:25 | string | case.rb:88:5:88:15 | in ... then ... |
+| case.rb:83:20:83:25 | string | case.rb:88:14:88:15 | 10 |
+| case.rb:83:20:83:25 | string | case.rb:89:5:89:69 | in ... then ... |
+| case.rb:83:20:83:25 | string | case.rb:89:14:89:17 | self |
+| case.rb:83:20:83:25 | string | case.rb:89:21:89:24 | true |
+| case.rb:83:20:83:25 | string | case.rb:89:28:89:32 | false |
+| case.rb:83:20:83:25 | string | case.rb:89:36:89:43 | __LINE__ |
+| case.rb:83:20:83:25 | string | case.rb:89:47:89:54 | __FILE__ |
+| case.rb:83:20:83:25 | string | case.rb:89:58:89:69 | __ENCODING__ |
+| case.rb:83:20:83:25 | string | case.rb:90:5:90:13 | in ... then ... |
+| case.rb:83:20:83:25 | string | case.rb:91:5:91:25 | in ... then ... |
+| case.rb:83:20:83:25 | string | case.rb:91:13:91:14 | "" |
+| case.rb:83:20:83:25 | string | case.rb:91:18:91:19 | [ ..., * ] |
+| case.rb:83:20:83:25 | string | case.rb:91:23:91:24 | { ..., ** } |
+| case.rb:84:5:84:17 | in ... then ... | case.rb:69:1:93:3 | exit case_match_various (abnormal) |
+| case.rb:84:5:84:17 | in ... then ... | case.rb:84:5:84:17 | in ... then ... |
+| case.rb:84:5:84:17 | in ... then ... | case.rb:85:5:85:23 | in ... then ... |
+| case.rb:84:5:84:17 | in ... then ... | case.rb:86:5:86:11 | in ... then ... |
+| case.rb:84:5:84:17 | in ... then ... | case.rb:87:5:87:17 | in ... then ... |
+| case.rb:84:5:84:17 | in ... then ... | case.rb:88:5:88:15 | in ... then ... |
+| case.rb:84:5:84:17 | in ... then ... | case.rb:88:14:88:15 | 10 |
+| case.rb:84:5:84:17 | in ... then ... | case.rb:89:5:89:69 | in ... then ... |
+| case.rb:84:5:84:17 | in ... then ... | case.rb:89:14:89:17 | self |
+| case.rb:84:5:84:17 | in ... then ... | case.rb:89:21:89:24 | true |
+| case.rb:84:5:84:17 | in ... then ... | case.rb:89:28:89:32 | false |
+| case.rb:84:5:84:17 | in ... then ... | case.rb:89:36:89:43 | __LINE__ |
+| case.rb:84:5:84:17 | in ... then ... | case.rb:89:47:89:54 | __FILE__ |
+| case.rb:84:5:84:17 | in ... then ... | case.rb:89:58:89:69 | __ENCODING__ |
+| case.rb:84:5:84:17 | in ... then ... | case.rb:90:5:90:13 | in ... then ... |
+| case.rb:84:5:84:17 | in ... then ... | case.rb:91:5:91:25 | in ... then ... |
+| case.rb:84:5:84:17 | in ... then ... | case.rb:91:13:91:14 | "" |
+| case.rb:84:5:84:17 | in ... then ... | case.rb:91:18:91:19 | [ ..., * ] |
+| case.rb:84:5:84:17 | in ... then ... | case.rb:91:23:91:24 | { ..., ** } |
+| case.rb:85:5:85:23 | in ... then ... | case.rb:69:1:93:3 | exit case_match_various (abnormal) |
+| case.rb:85:5:85:23 | in ... then ... | case.rb:85:5:85:23 | in ... then ... |
+| case.rb:85:5:85:23 | in ... then ... | case.rb:86:5:86:11 | in ... then ... |
+| case.rb:85:5:85:23 | in ... then ... | case.rb:87:5:87:17 | in ... then ... |
+| case.rb:85:5:85:23 | in ... then ... | case.rb:88:5:88:15 | in ... then ... |
+| case.rb:85:5:85:23 | in ... then ... | case.rb:88:14:88:15 | 10 |
+| case.rb:85:5:85:23 | in ... then ... | case.rb:89:5:89:69 | in ... then ... |
+| case.rb:85:5:85:23 | in ... then ... | case.rb:89:14:89:17 | self |
+| case.rb:85:5:85:23 | in ... then ... | case.rb:89:21:89:24 | true |
+| case.rb:85:5:85:23 | in ... then ... | case.rb:89:28:89:32 | false |
+| case.rb:85:5:85:23 | in ... then ... | case.rb:89:36:89:43 | __LINE__ |
+| case.rb:85:5:85:23 | in ... then ... | case.rb:89:47:89:54 | __FILE__ |
+| case.rb:85:5:85:23 | in ... then ... | case.rb:89:58:89:69 | __ENCODING__ |
+| case.rb:85:5:85:23 | in ... then ... | case.rb:90:5:90:13 | in ... then ... |
+| case.rb:85:5:85:23 | in ... then ... | case.rb:91:5:91:25 | in ... then ... |
+| case.rb:85:5:85:23 | in ... then ... | case.rb:91:13:91:14 | "" |
+| case.rb:85:5:85:23 | in ... then ... | case.rb:91:18:91:19 | [ ..., * ] |
+| case.rb:85:5:85:23 | in ... then ... | case.rb:91:23:91:24 | { ..., ** } |
+| case.rb:85:8:85:23 | enter -> { ... } | case.rb:85:8:85:23 | enter -> { ... } |
+| case.rb:86:5:86:11 | in ... then ... | case.rb:69:1:93:3 | exit case_match_various (abnormal) |
+| case.rb:86:5:86:11 | in ... then ... | case.rb:86:5:86:11 | in ... then ... |
+| case.rb:86:5:86:11 | in ... then ... | case.rb:87:5:87:17 | in ... then ... |
+| case.rb:86:5:86:11 | in ... then ... | case.rb:88:5:88:15 | in ... then ... |
+| case.rb:86:5:86:11 | in ... then ... | case.rb:88:14:88:15 | 10 |
+| case.rb:86:5:86:11 | in ... then ... | case.rb:89:5:89:69 | in ... then ... |
+| case.rb:86:5:86:11 | in ... then ... | case.rb:89:14:89:17 | self |
+| case.rb:86:5:86:11 | in ... then ... | case.rb:89:21:89:24 | true |
+| case.rb:86:5:86:11 | in ... then ... | case.rb:89:28:89:32 | false |
+| case.rb:86:5:86:11 | in ... then ... | case.rb:89:36:89:43 | __LINE__ |
+| case.rb:86:5:86:11 | in ... then ... | case.rb:89:47:89:54 | __FILE__ |
+| case.rb:86:5:86:11 | in ... then ... | case.rb:89:58:89:69 | __ENCODING__ |
+| case.rb:86:5:86:11 | in ... then ... | case.rb:90:5:90:13 | in ... then ... |
+| case.rb:86:5:86:11 | in ... then ... | case.rb:91:5:91:25 | in ... then ... |
+| case.rb:86:5:86:11 | in ... then ... | case.rb:91:13:91:14 | "" |
+| case.rb:86:5:86:11 | in ... then ... | case.rb:91:18:91:19 | [ ..., * ] |
+| case.rb:86:5:86:11 | in ... then ... | case.rb:91:23:91:24 | { ..., ** } |
+| case.rb:87:5:87:17 | in ... then ... | case.rb:69:1:93:3 | exit case_match_various (abnormal) |
+| case.rb:87:5:87:17 | in ... then ... | case.rb:87:5:87:17 | in ... then ... |
+| case.rb:87:5:87:17 | in ... then ... | case.rb:88:5:88:15 | in ... then ... |
+| case.rb:87:5:87:17 | in ... then ... | case.rb:88:14:88:15 | 10 |
+| case.rb:87:5:87:17 | in ... then ... | case.rb:89:5:89:69 | in ... then ... |
+| case.rb:87:5:87:17 | in ... then ... | case.rb:89:14:89:17 | self |
+| case.rb:87:5:87:17 | in ... then ... | case.rb:89:21:89:24 | true |
+| case.rb:87:5:87:17 | in ... then ... | case.rb:89:28:89:32 | false |
+| case.rb:87:5:87:17 | in ... then ... | case.rb:89:36:89:43 | __LINE__ |
+| case.rb:87:5:87:17 | in ... then ... | case.rb:89:47:89:54 | __FILE__ |
+| case.rb:87:5:87:17 | in ... then ... | case.rb:89:58:89:69 | __ENCODING__ |
+| case.rb:87:5:87:17 | in ... then ... | case.rb:90:5:90:13 | in ... then ... |
+| case.rb:87:5:87:17 | in ... then ... | case.rb:91:5:91:25 | in ... then ... |
+| case.rb:87:5:87:17 | in ... then ... | case.rb:91:13:91:14 | "" |
+| case.rb:87:5:87:17 | in ... then ... | case.rb:91:18:91:19 | [ ..., * ] |
+| case.rb:87:5:87:17 | in ... then ... | case.rb:91:23:91:24 | { ..., ** } |
+| case.rb:88:5:88:15 | in ... then ... | case.rb:69:1:93:3 | exit case_match_various (abnormal) |
+| case.rb:88:5:88:15 | in ... then ... | case.rb:88:5:88:15 | in ... then ... |
+| case.rb:88:5:88:15 | in ... then ... | case.rb:88:14:88:15 | 10 |
+| case.rb:88:5:88:15 | in ... then ... | case.rb:89:5:89:69 | in ... then ... |
+| case.rb:88:5:88:15 | in ... then ... | case.rb:89:14:89:17 | self |
+| case.rb:88:5:88:15 | in ... then ... | case.rb:89:21:89:24 | true |
+| case.rb:88:5:88:15 | in ... then ... | case.rb:89:28:89:32 | false |
+| case.rb:88:5:88:15 | in ... then ... | case.rb:89:36:89:43 | __LINE__ |
+| case.rb:88:5:88:15 | in ... then ... | case.rb:89:47:89:54 | __FILE__ |
+| case.rb:88:5:88:15 | in ... then ... | case.rb:89:58:89:69 | __ENCODING__ |
+| case.rb:88:5:88:15 | in ... then ... | case.rb:90:5:90:13 | in ... then ... |
+| case.rb:88:5:88:15 | in ... then ... | case.rb:91:5:91:25 | in ... then ... |
+| case.rb:88:5:88:15 | in ... then ... | case.rb:91:13:91:14 | "" |
+| case.rb:88:5:88:15 | in ... then ... | case.rb:91:18:91:19 | [ ..., * ] |
+| case.rb:88:5:88:15 | in ... then ... | case.rb:91:23:91:24 | { ..., ** } |
+| case.rb:88:14:88:15 | 10 | case.rb:69:1:93:3 | exit case_match_various (abnormal) |
+| case.rb:88:14:88:15 | 10 | case.rb:88:14:88:15 | 10 |
+| case.rb:88:14:88:15 | 10 | case.rb:89:5:89:69 | in ... then ... |
+| case.rb:88:14:88:15 | 10 | case.rb:89:14:89:17 | self |
+| case.rb:88:14:88:15 | 10 | case.rb:89:21:89:24 | true |
+| case.rb:88:14:88:15 | 10 | case.rb:89:28:89:32 | false |
+| case.rb:88:14:88:15 | 10 | case.rb:89:36:89:43 | __LINE__ |
+| case.rb:88:14:88:15 | 10 | case.rb:89:47:89:54 | __FILE__ |
+| case.rb:88:14:88:15 | 10 | case.rb:89:58:89:69 | __ENCODING__ |
+| case.rb:88:14:88:15 | 10 | case.rb:90:5:90:13 | in ... then ... |
+| case.rb:88:14:88:15 | 10 | case.rb:91:5:91:25 | in ... then ... |
+| case.rb:88:14:88:15 | 10 | case.rb:91:13:91:14 | "" |
+| case.rb:88:14:88:15 | 10 | case.rb:91:18:91:19 | [ ..., * ] |
+| case.rb:88:14:88:15 | 10 | case.rb:91:23:91:24 | { ..., ** } |
+| case.rb:89:5:89:69 | in ... then ... | case.rb:69:1:93:3 | exit case_match_various (abnormal) |
+| case.rb:89:5:89:69 | in ... then ... | case.rb:89:5:89:69 | in ... then ... |
+| case.rb:89:5:89:69 | in ... then ... | case.rb:89:14:89:17 | self |
+| case.rb:89:5:89:69 | in ... then ... | case.rb:89:21:89:24 | true |
+| case.rb:89:5:89:69 | in ... then ... | case.rb:89:28:89:32 | false |
+| case.rb:89:5:89:69 | in ... then ... | case.rb:89:36:89:43 | __LINE__ |
+| case.rb:89:5:89:69 | in ... then ... | case.rb:89:47:89:54 | __FILE__ |
+| case.rb:89:5:89:69 | in ... then ... | case.rb:89:58:89:69 | __ENCODING__ |
+| case.rb:89:5:89:69 | in ... then ... | case.rb:90:5:90:13 | in ... then ... |
+| case.rb:89:5:89:69 | in ... then ... | case.rb:91:5:91:25 | in ... then ... |
+| case.rb:89:5:89:69 | in ... then ... | case.rb:91:13:91:14 | "" |
+| case.rb:89:5:89:69 | in ... then ... | case.rb:91:18:91:19 | [ ..., * ] |
+| case.rb:89:5:89:69 | in ... then ... | case.rb:91:23:91:24 | { ..., ** } |
+| case.rb:89:14:89:17 | self | case.rb:69:1:93:3 | exit case_match_various (abnormal) |
+| case.rb:89:14:89:17 | self | case.rb:89:14:89:17 | self |
+| case.rb:89:14:89:17 | self | case.rb:89:21:89:24 | true |
+| case.rb:89:14:89:17 | self | case.rb:89:28:89:32 | false |
+| case.rb:89:14:89:17 | self | case.rb:89:36:89:43 | __LINE__ |
+| case.rb:89:14:89:17 | self | case.rb:89:47:89:54 | __FILE__ |
+| case.rb:89:14:89:17 | self | case.rb:89:58:89:69 | __ENCODING__ |
+| case.rb:89:14:89:17 | self | case.rb:90:5:90:13 | in ... then ... |
+| case.rb:89:14:89:17 | self | case.rb:91:5:91:25 | in ... then ... |
+| case.rb:89:14:89:17 | self | case.rb:91:13:91:14 | "" |
+| case.rb:89:14:89:17 | self | case.rb:91:18:91:19 | [ ..., * ] |
+| case.rb:89:14:89:17 | self | case.rb:91:23:91:24 | { ..., ** } |
+| case.rb:89:21:89:24 | true | case.rb:69:1:93:3 | exit case_match_various (abnormal) |
+| case.rb:89:21:89:24 | true | case.rb:89:21:89:24 | true |
+| case.rb:89:21:89:24 | true | case.rb:89:28:89:32 | false |
+| case.rb:89:21:89:24 | true | case.rb:89:36:89:43 | __LINE__ |
+| case.rb:89:21:89:24 | true | case.rb:89:47:89:54 | __FILE__ |
+| case.rb:89:21:89:24 | true | case.rb:89:58:89:69 | __ENCODING__ |
+| case.rb:89:21:89:24 | true | case.rb:90:5:90:13 | in ... then ... |
+| case.rb:89:21:89:24 | true | case.rb:91:5:91:25 | in ... then ... |
+| case.rb:89:21:89:24 | true | case.rb:91:13:91:14 | "" |
+| case.rb:89:21:89:24 | true | case.rb:91:18:91:19 | [ ..., * ] |
+| case.rb:89:21:89:24 | true | case.rb:91:23:91:24 | { ..., ** } |
+| case.rb:89:28:89:32 | false | case.rb:69:1:93:3 | exit case_match_various (abnormal) |
+| case.rb:89:28:89:32 | false | case.rb:89:28:89:32 | false |
+| case.rb:89:28:89:32 | false | case.rb:89:36:89:43 | __LINE__ |
+| case.rb:89:28:89:32 | false | case.rb:89:47:89:54 | __FILE__ |
+| case.rb:89:28:89:32 | false | case.rb:89:58:89:69 | __ENCODING__ |
+| case.rb:89:28:89:32 | false | case.rb:90:5:90:13 | in ... then ... |
+| case.rb:89:28:89:32 | false | case.rb:91:5:91:25 | in ... then ... |
+| case.rb:89:28:89:32 | false | case.rb:91:13:91:14 | "" |
+| case.rb:89:28:89:32 | false | case.rb:91:18:91:19 | [ ..., * ] |
+| case.rb:89:28:89:32 | false | case.rb:91:23:91:24 | { ..., ** } |
+| case.rb:89:36:89:43 | __LINE__ | case.rb:69:1:93:3 | exit case_match_various (abnormal) |
+| case.rb:89:36:89:43 | __LINE__ | case.rb:89:36:89:43 | __LINE__ |
+| case.rb:89:36:89:43 | __LINE__ | case.rb:89:47:89:54 | __FILE__ |
+| case.rb:89:36:89:43 | __LINE__ | case.rb:89:58:89:69 | __ENCODING__ |
+| case.rb:89:36:89:43 | __LINE__ | case.rb:90:5:90:13 | in ... then ... |
+| case.rb:89:36:89:43 | __LINE__ | case.rb:91:5:91:25 | in ... then ... |
+| case.rb:89:36:89:43 | __LINE__ | case.rb:91:13:91:14 | "" |
+| case.rb:89:36:89:43 | __LINE__ | case.rb:91:18:91:19 | [ ..., * ] |
+| case.rb:89:36:89:43 | __LINE__ | case.rb:91:23:91:24 | { ..., ** } |
+| case.rb:89:47:89:54 | __FILE__ | case.rb:69:1:93:3 | exit case_match_various (abnormal) |
+| case.rb:89:47:89:54 | __FILE__ | case.rb:89:47:89:54 | __FILE__ |
+| case.rb:89:47:89:54 | __FILE__ | case.rb:89:58:89:69 | __ENCODING__ |
+| case.rb:89:47:89:54 | __FILE__ | case.rb:90:5:90:13 | in ... then ... |
+| case.rb:89:47:89:54 | __FILE__ | case.rb:91:5:91:25 | in ... then ... |
+| case.rb:89:47:89:54 | __FILE__ | case.rb:91:13:91:14 | "" |
+| case.rb:89:47:89:54 | __FILE__ | case.rb:91:18:91:19 | [ ..., * ] |
+| case.rb:89:47:89:54 | __FILE__ | case.rb:91:23:91:24 | { ..., ** } |
+| case.rb:89:58:89:69 | __ENCODING__ | case.rb:69:1:93:3 | exit case_match_various (abnormal) |
+| case.rb:89:58:89:69 | __ENCODING__ | case.rb:89:58:89:69 | __ENCODING__ |
+| case.rb:89:58:89:69 | __ENCODING__ | case.rb:90:5:90:13 | in ... then ... |
+| case.rb:89:58:89:69 | __ENCODING__ | case.rb:91:5:91:25 | in ... then ... |
+| case.rb:89:58:89:69 | __ENCODING__ | case.rb:91:13:91:14 | "" |
+| case.rb:89:58:89:69 | __ENCODING__ | case.rb:91:18:91:19 | [ ..., * ] |
+| case.rb:89:58:89:69 | __ENCODING__ | case.rb:91:23:91:24 | { ..., ** } |
+| case.rb:90:5:90:13 | in ... then ... | case.rb:69:1:93:3 | exit case_match_various (abnormal) |
+| case.rb:90:5:90:13 | in ... then ... | case.rb:90:5:90:13 | in ... then ... |
+| case.rb:90:5:90:13 | in ... then ... | case.rb:91:5:91:25 | in ... then ... |
+| case.rb:90:5:90:13 | in ... then ... | case.rb:91:13:91:14 | "" |
+| case.rb:90:5:90:13 | in ... then ... | case.rb:91:18:91:19 | [ ..., * ] |
+| case.rb:90:5:90:13 | in ... then ... | case.rb:91:23:91:24 | { ..., ** } |
+| case.rb:91:5:91:25 | in ... then ... | case.rb:69:1:93:3 | exit case_match_various (abnormal) |
+| case.rb:91:5:91:25 | in ... then ... | case.rb:91:5:91:25 | in ... then ... |
+| case.rb:91:5:91:25 | in ... then ... | case.rb:91:13:91:14 | "" |
+| case.rb:91:5:91:25 | in ... then ... | case.rb:91:18:91:19 | [ ..., * ] |
+| case.rb:91:5:91:25 | in ... then ... | case.rb:91:23:91:24 | { ..., ** } |
+| case.rb:91:13:91:14 | "" | case.rb:69:1:93:3 | exit case_match_various (abnormal) |
+| case.rb:91:13:91:14 | "" | case.rb:91:13:91:14 | "" |
+| case.rb:91:13:91:14 | "" | case.rb:91:18:91:19 | [ ..., * ] |
+| case.rb:91:13:91:14 | "" | case.rb:91:23:91:24 | { ..., ** } |
+| case.rb:91:18:91:19 | [ ..., * ] | case.rb:69:1:93:3 | exit case_match_various (abnormal) |
+| case.rb:91:18:91:19 | [ ..., * ] | case.rb:91:18:91:19 | [ ..., * ] |
+| case.rb:91:18:91:19 | [ ..., * ] | case.rb:91:23:91:24 | { ..., ** } |
+| case.rb:91:23:91:24 | { ..., ** } | case.rb:69:1:93:3 | exit case_match_various (abnormal) |
+| case.rb:91:23:91:24 | { ..., ** } | case.rb:91:23:91:24 | { ..., ** } |
+| case.rb:95:1:99:3 | enter case_match_guard_no_else | case.rb:95:1:99:3 | enter case_match_guard_no_else |
+| case.rb:95:1:99:3 | enter case_match_guard_no_else | case.rb:95:1:99:3 | exit case_match_guard_no_else |
+| case.rb:95:1:99:3 | enter case_match_guard_no_else | case.rb:95:1:99:3 | exit case_match_guard_no_else (abnormal) |
+| case.rb:95:1:99:3 | enter case_match_guard_no_else | case.rb:97:13:97:13 | x |
+| case.rb:95:1:99:3 | enter case_match_guard_no_else | case.rb:97:25:97:25 | 6 |
+| case.rb:95:1:99:3 | exit case_match_guard_no_else | case.rb:95:1:99:3 | exit case_match_guard_no_else |
+| case.rb:95:1:99:3 | exit case_match_guard_no_else (abnormal) | case.rb:95:1:99:3 | exit case_match_guard_no_else (abnormal) |
+| case.rb:97:13:97:13 | x | case.rb:95:1:99:3 | exit case_match_guard_no_else |
+| case.rb:97:13:97:13 | x | case.rb:95:1:99:3 | exit case_match_guard_no_else (abnormal) |
+| case.rb:97:13:97:13 | x | case.rb:97:13:97:13 | x |
+| case.rb:97:13:97:13 | x | case.rb:97:25:97:25 | 6 |
+| case.rb:97:25:97:25 | 6 | case.rb:97:25:97:25 | 6 |
+| cfg.html.erb:5:16:31:12 | enter cfg.html.erb | cfg.html.erb:5:16:31:12 | enter cfg.html.erb |
+| cfg.html.erb:5:16:31:12 | enter cfg.html.erb | cfg.html.erb:18:14:22:16 | if ... |
+| cfg.html.erb:5:16:31:12 | enter cfg.html.erb | cfg.html.erb:19:19:19:32 | self |
+| cfg.html.erb:5:16:31:12 | enter cfg.html.erb | cfg.html.erb:21:19:21:32 | self |
+| cfg.html.erb:18:14:22:16 | if ... | cfg.html.erb:18:14:22:16 | if ... |
+| cfg.html.erb:19:19:19:32 | self | cfg.html.erb:19:19:19:32 | self |
+| cfg.html.erb:21:19:21:32 | self | cfg.html.erb:21:19:21:32 | self |
+| cfg.html.erb:29:24:31:10 | enter do ... end | cfg.html.erb:29:24:31:10 | enter do ... end |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:1:1:221:1 | enter cfg.rb |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:32:9:32:9 | 1 |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:35:1:37:3 | if ... |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:41:1:45:3 | case ... |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:42:3:42:24 | [match] when ... |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:42:3:42:24 | [no-match] when ... |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:42:15:42:24 | self |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:43:3:43:31 | [match] when ... |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:43:3:43:31 | [no-match] when ... |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:43:8:43:8 | 2 |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:43:11:43:11 | 3 |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:43:14:43:14 | 4 |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:43:21:43:31 | self |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:44:8:44:18 | self |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:47:1:50:3 | case ... |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:48:3:48:29 | [false] when ... |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:48:3:48:29 | [true] when ... |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:48:20:48:29 | self |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:49:3:49:37 | [false] when ... |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:49:3:49:37 | [true] when ... |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:49:8:49:8 | b |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:49:16:49:16 | b |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:49:27:49:37 | self |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:60:17:60:40 | ... ? ... : ... |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:60:27:60:31 | hello |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:60:37:60:39 | bye |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:75:1:75:47 | if ... |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:75:15:75:15 | 0 |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:75:17:75:43 | elsif ... |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:75:23:75:23 | x |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:75:35:75:36 | 10 |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:75:43:75:43 | x |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:90:5:90:5 | [false] ! ... |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:90:5:90:5 | [true] ! ... |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:90:5:90:5 | if ... |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:90:5:90:5 | x |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:113:1:113:9 | self |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:113:1:113:19 | ... if ... |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:136:1:136:29 | ... rescue ... |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:136:12:136:29 | self |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:172:1:172:49 | unless ... |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:172:21:172:29 | self |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:172:36:172:45 | self |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:174:1:174:9 | self |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:174:1:174:23 | ... unless ... |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:176:1:176:41 | until ... |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:176:7:176:7 | x |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:176:17:176:17 | x |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:179:1:179:36 | ... until ... |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:179:2:179:13 | self |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:179:30:179:30 | i |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:182:1:186:3 | while ... |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:182:7:182:7 | x |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:183:3:183:3 | x |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:184:3:184:25 | if ... |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:184:18:184:21 | redo |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:188:1:188:35 | ... while ... |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:188:2:188:13 | self |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:188:30:188:30 | i |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:205:1:205:3 | __synth__0__1 |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:205:1:205:3 | nil |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:205:4:205:5 | if ... |
+| cfg.rb:25:9:25:22 | enter { ... } | cfg.rb:25:9:25:22 | enter { ... } |
+| cfg.rb:29:10:29:24 | enter { ... } | cfg.rb:29:10:29:24 | enter { ... } |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:32:9:32:9 | 1 |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:35:1:37:3 | if ... |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:41:1:45:3 | case ... |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:42:3:42:24 | [match] when ... |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:42:3:42:24 | [no-match] when ... |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:42:15:42:24 | self |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:43:3:43:31 | [match] when ... |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:43:3:43:31 | [no-match] when ... |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:43:8:43:8 | 2 |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:43:11:43:11 | 3 |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:43:14:43:14 | 4 |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:43:21:43:31 | self |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:44:8:44:18 | self |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:47:1:50:3 | case ... |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:48:3:48:29 | [false] when ... |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:48:3:48:29 | [true] when ... |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:48:20:48:29 | self |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:49:3:49:37 | [false] when ... |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:49:3:49:37 | [true] when ... |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:49:8:49:8 | b |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:49:16:49:16 | b |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:49:27:49:37 | self |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:60:17:60:40 | ... ? ... : ... |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:60:27:60:31 | hello |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:60:37:60:39 | bye |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:75:1:75:47 | if ... |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:75:15:75:15 | 0 |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:75:17:75:43 | elsif ... |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:75:23:75:23 | x |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:75:35:75:36 | 10 |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:75:43:75:43 | x |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:90:5:90:5 | [false] ! ... |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:90:5:90:5 | [true] ! ... |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:90:5:90:5 | if ... |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:90:5:90:5 | x |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:113:1:113:9 | self |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:113:1:113:19 | ... if ... |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:136:1:136:29 | ... rescue ... |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:136:12:136:29 | self |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:172:1:172:49 | unless ... |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:172:21:172:29 | self |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:172:36:172:45 | self |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:174:1:174:9 | self |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:174:1:174:23 | ... unless ... |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:176:1:176:41 | until ... |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:176:7:176:7 | x |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:176:17:176:17 | x |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:179:1:179:36 | ... until ... |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:179:2:179:13 | self |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:179:30:179:30 | i |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:182:1:186:3 | while ... |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:182:7:182:7 | x |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:183:3:183:3 | x |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:184:3:184:25 | if ... |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:184:18:184:21 | redo |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:188:1:188:35 | ... while ... |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:188:2:188:13 | self |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:188:30:188:30 | i |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:205:1:205:3 | __synth__0__1 |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:205:1:205:3 | nil |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:205:4:205:5 | if ... |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:35:1:37:3 | if ... |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:41:1:45:3 | case ... |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:42:3:42:24 | [match] when ... |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:42:3:42:24 | [no-match] when ... |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:42:15:42:24 | self |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:43:3:43:31 | [match] when ... |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:43:3:43:31 | [no-match] when ... |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:43:8:43:8 | 2 |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:43:11:43:11 | 3 |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:43:14:43:14 | 4 |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:43:21:43:31 | self |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:44:8:44:18 | self |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:47:1:50:3 | case ... |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:48:3:48:29 | [false] when ... |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:48:3:48:29 | [true] when ... |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:48:20:48:29 | self |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:49:3:49:37 | [false] when ... |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:49:3:49:37 | [true] when ... |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:49:8:49:8 | b |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:49:16:49:16 | b |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:49:27:49:37 | self |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:60:17:60:40 | ... ? ... : ... |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:60:27:60:31 | hello |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:60:37:60:39 | bye |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:75:1:75:47 | if ... |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:75:15:75:15 | 0 |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:75:17:75:43 | elsif ... |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:75:23:75:23 | x |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:75:35:75:36 | 10 |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:75:43:75:43 | x |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:90:5:90:5 | [false] ! ... |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:90:5:90:5 | [true] ! ... |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:90:5:90:5 | if ... |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:90:5:90:5 | x |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:113:1:113:9 | self |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:113:1:113:19 | ... if ... |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:136:1:136:29 | ... rescue ... |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:136:12:136:29 | self |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:172:1:172:49 | unless ... |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:172:21:172:29 | self |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:172:36:172:45 | self |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:174:1:174:9 | self |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:174:1:174:23 | ... unless ... |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:176:1:176:41 | until ... |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:176:7:176:7 | x |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:176:17:176:17 | x |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:179:1:179:36 | ... until ... |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:179:2:179:13 | self |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:179:30:179:30 | i |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:182:1:186:3 | while ... |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:182:7:182:7 | x |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:183:3:183:3 | x |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:184:3:184:25 | if ... |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:184:18:184:21 | redo |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:188:1:188:35 | ... while ... |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:188:2:188:13 | self |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:188:30:188:30 | i |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:205:1:205:3 | __synth__0__1 |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:205:1:205:3 | nil |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:205:4:205:5 | if ... |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:41:1:45:3 | case ... |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:47:1:50:3 | case ... |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:48:3:48:29 | [false] when ... |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:48:3:48:29 | [true] when ... |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:48:20:48:29 | self |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:49:3:49:37 | [false] when ... |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:49:3:49:37 | [true] when ... |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:49:8:49:8 | b |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:49:16:49:16 | b |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:49:27:49:37 | self |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:60:17:60:40 | ... ? ... : ... |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:60:27:60:31 | hello |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:60:37:60:39 | bye |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:75:1:75:47 | if ... |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:75:15:75:15 | 0 |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:75:17:75:43 | elsif ... |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:75:23:75:23 | x |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:75:35:75:36 | 10 |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:75:43:75:43 | x |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:90:5:90:5 | [false] ! ... |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:90:5:90:5 | [true] ! ... |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:90:5:90:5 | if ... |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:90:5:90:5 | x |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:113:1:113:9 | self |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:113:1:113:19 | ... if ... |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:136:1:136:29 | ... rescue ... |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:136:12:136:29 | self |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:172:1:172:49 | unless ... |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:172:21:172:29 | self |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:172:36:172:45 | self |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:174:1:174:9 | self |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:174:1:174:23 | ... unless ... |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:176:1:176:41 | until ... |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:176:7:176:7 | x |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:176:17:176:17 | x |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:179:1:179:36 | ... until ... |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:179:2:179:13 | self |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:179:30:179:30 | i |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:182:1:186:3 | while ... |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:182:7:182:7 | x |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:183:3:183:3 | x |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:184:3:184:25 | if ... |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:184:18:184:21 | redo |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:188:1:188:35 | ... while ... |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:188:2:188:13 | self |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:188:30:188:30 | i |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:205:1:205:3 | __synth__0__1 |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:205:1:205:3 | nil |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:205:4:205:5 | if ... |
+| cfg.rb:42:3:42:24 | [match] when ... | cfg.rb:42:3:42:24 | [match] when ... |
+| cfg.rb:42:3:42:24 | [match] when ... | cfg.rb:42:15:42:24 | self |
+| cfg.rb:42:3:42:24 | [no-match] when ... | cfg.rb:42:3:42:24 | [no-match] when ... |
+| cfg.rb:42:3:42:24 | [no-match] when ... | cfg.rb:43:3:43:31 | [match] when ... |
+| cfg.rb:42:3:42:24 | [no-match] when ... | cfg.rb:43:3:43:31 | [no-match] when ... |
+| cfg.rb:42:3:42:24 | [no-match] when ... | cfg.rb:43:8:43:8 | 2 |
+| cfg.rb:42:3:42:24 | [no-match] when ... | cfg.rb:43:11:43:11 | 3 |
+| cfg.rb:42:3:42:24 | [no-match] when ... | cfg.rb:43:14:43:14 | 4 |
+| cfg.rb:42:3:42:24 | [no-match] when ... | cfg.rb:43:21:43:31 | self |
+| cfg.rb:42:3:42:24 | [no-match] when ... | cfg.rb:44:8:44:18 | self |
+| cfg.rb:42:15:42:24 | self | cfg.rb:42:15:42:24 | self |
+| cfg.rb:43:3:43:31 | [match] when ... | cfg.rb:43:3:43:31 | [match] when ... |
+| cfg.rb:43:3:43:31 | [match] when ... | cfg.rb:43:21:43:31 | self |
+| cfg.rb:43:3:43:31 | [no-match] when ... | cfg.rb:43:3:43:31 | [no-match] when ... |
+| cfg.rb:43:3:43:31 | [no-match] when ... | cfg.rb:44:8:44:18 | self |
+| cfg.rb:43:8:43:8 | 2 | cfg.rb:43:3:43:31 | [match] when ... |
+| cfg.rb:43:8:43:8 | 2 | cfg.rb:43:3:43:31 | [no-match] when ... |
+| cfg.rb:43:8:43:8 | 2 | cfg.rb:43:8:43:8 | 2 |
+| cfg.rb:43:8:43:8 | 2 | cfg.rb:43:11:43:11 | 3 |
+| cfg.rb:43:8:43:8 | 2 | cfg.rb:43:14:43:14 | 4 |
+| cfg.rb:43:8:43:8 | 2 | cfg.rb:43:21:43:31 | self |
+| cfg.rb:43:8:43:8 | 2 | cfg.rb:44:8:44:18 | self |
+| cfg.rb:43:11:43:11 | 3 | cfg.rb:43:3:43:31 | [no-match] when ... |
+| cfg.rb:43:11:43:11 | 3 | cfg.rb:43:11:43:11 | 3 |
+| cfg.rb:43:11:43:11 | 3 | cfg.rb:43:14:43:14 | 4 |
+| cfg.rb:43:11:43:11 | 3 | cfg.rb:44:8:44:18 | self |
+| cfg.rb:43:14:43:14 | 4 | cfg.rb:43:3:43:31 | [no-match] when ... |
+| cfg.rb:43:14:43:14 | 4 | cfg.rb:43:14:43:14 | 4 |
+| cfg.rb:43:14:43:14 | 4 | cfg.rb:44:8:44:18 | self |
+| cfg.rb:43:21:43:31 | self | cfg.rb:43:21:43:31 | self |
+| cfg.rb:44:8:44:18 | self | cfg.rb:44:8:44:18 | self |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:47:1:50:3 | case ... |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:60:17:60:40 | ... ? ... : ... |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:60:27:60:31 | hello |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:60:37:60:39 | bye |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:75:1:75:47 | if ... |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:75:15:75:15 | 0 |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:75:17:75:43 | elsif ... |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:75:23:75:23 | x |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:75:35:75:36 | 10 |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:75:43:75:43 | x |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:90:5:90:5 | [false] ! ... |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:90:5:90:5 | [true] ! ... |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:90:5:90:5 | if ... |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:90:5:90:5 | x |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:113:1:113:9 | self |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:113:1:113:19 | ... if ... |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:136:1:136:29 | ... rescue ... |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:136:12:136:29 | self |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:172:1:172:49 | unless ... |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:172:21:172:29 | self |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:172:36:172:45 | self |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:174:1:174:9 | self |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:174:1:174:23 | ... unless ... |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:176:1:176:41 | until ... |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:176:7:176:7 | x |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:176:17:176:17 | x |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:179:1:179:36 | ... until ... |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:179:2:179:13 | self |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:179:30:179:30 | i |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:182:1:186:3 | while ... |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:182:7:182:7 | x |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:183:3:183:3 | x |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:184:3:184:25 | if ... |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:184:18:184:21 | redo |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:188:1:188:35 | ... while ... |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:188:2:188:13 | self |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:188:30:188:30 | i |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:205:1:205:3 | __synth__0__1 |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:205:1:205:3 | nil |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:205:4:205:5 | if ... |
+| cfg.rb:48:3:48:29 | [false] when ... | cfg.rb:48:3:48:29 | [false] when ... |
+| cfg.rb:48:3:48:29 | [false] when ... | cfg.rb:49:3:49:37 | [false] when ... |
+| cfg.rb:48:3:48:29 | [false] when ... | cfg.rb:49:3:49:37 | [true] when ... |
+| cfg.rb:48:3:48:29 | [false] when ... | cfg.rb:49:8:49:8 | b |
+| cfg.rb:48:3:48:29 | [false] when ... | cfg.rb:49:16:49:16 | b |
+| cfg.rb:48:3:48:29 | [false] when ... | cfg.rb:49:27:49:37 | self |
+| cfg.rb:48:3:48:29 | [true] when ... | cfg.rb:48:3:48:29 | [true] when ... |
+| cfg.rb:48:3:48:29 | [true] when ... | cfg.rb:48:20:48:29 | self |
+| cfg.rb:48:20:48:29 | self | cfg.rb:48:20:48:29 | self |
+| cfg.rb:49:3:49:37 | [false] when ... | cfg.rb:49:3:49:37 | [false] when ... |
+| cfg.rb:49:3:49:37 | [true] when ... | cfg.rb:49:3:49:37 | [true] when ... |
+| cfg.rb:49:3:49:37 | [true] when ... | cfg.rb:49:27:49:37 | self |
+| cfg.rb:49:8:49:8 | b | cfg.rb:49:3:49:37 | [false] when ... |
+| cfg.rb:49:8:49:8 | b | cfg.rb:49:3:49:37 | [true] when ... |
+| cfg.rb:49:8:49:8 | b | cfg.rb:49:8:49:8 | b |
+| cfg.rb:49:8:49:8 | b | cfg.rb:49:16:49:16 | b |
+| cfg.rb:49:8:49:8 | b | cfg.rb:49:27:49:37 | self |
+| cfg.rb:49:16:49:16 | b | cfg.rb:49:3:49:37 | [false] when ... |
+| cfg.rb:49:16:49:16 | b | cfg.rb:49:16:49:16 | b |
+| cfg.rb:49:27:49:37 | self | cfg.rb:49:27:49:37 | self |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:60:17:60:40 | ... ? ... : ... |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:75:1:75:47 | if ... |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:75:15:75:15 | 0 |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:75:17:75:43 | elsif ... |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:75:23:75:23 | x |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:75:35:75:36 | 10 |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:75:43:75:43 | x |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:90:5:90:5 | [false] ! ... |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:90:5:90:5 | [true] ! ... |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:90:5:90:5 | if ... |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:90:5:90:5 | x |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:113:1:113:9 | self |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:113:1:113:19 | ... if ... |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:136:1:136:29 | ... rescue ... |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:136:12:136:29 | self |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:172:1:172:49 | unless ... |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:172:21:172:29 | self |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:172:36:172:45 | self |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:174:1:174:9 | self |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:174:1:174:23 | ... unless ... |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:176:1:176:41 | until ... |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:176:7:176:7 | x |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:176:17:176:17 | x |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:179:1:179:36 | ... until ... |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:179:2:179:13 | self |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:179:30:179:30 | i |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:182:1:186:3 | while ... |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:182:7:182:7 | x |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:183:3:183:3 | x |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:184:3:184:25 | if ... |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:184:18:184:21 | redo |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:188:1:188:35 | ... while ... |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:188:2:188:13 | self |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:188:30:188:30 | i |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:205:1:205:3 | __synth__0__1 |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:205:1:205:3 | nil |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:205:4:205:5 | if ... |
+| cfg.rb:60:27:60:31 | hello | cfg.rb:60:27:60:31 | hello |
+| cfg.rb:60:37:60:39 | bye | cfg.rb:60:37:60:39 | bye |
+| cfg.rb:63:3:66:5 | enter pattern | cfg.rb:63:3:66:5 | enter pattern |
+| cfg.rb:69:3:71:5 | enter print | cfg.rb:69:3:71:5 | enter print |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:75:1:75:47 | if ... |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:90:5:90:5 | [false] ! ... |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:90:5:90:5 | [true] ! ... |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:90:5:90:5 | if ... |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:90:5:90:5 | x |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:113:1:113:9 | self |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:113:1:113:19 | ... if ... |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:136:1:136:29 | ... rescue ... |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:136:12:136:29 | self |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:172:1:172:49 | unless ... |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:172:21:172:29 | self |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:172:36:172:45 | self |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:174:1:174:9 | self |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:174:1:174:23 | ... unless ... |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:176:1:176:41 | until ... |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:176:7:176:7 | x |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:176:17:176:17 | x |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:179:1:179:36 | ... until ... |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:179:2:179:13 | self |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:179:30:179:30 | i |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:182:1:186:3 | while ... |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:182:7:182:7 | x |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:183:3:183:3 | x |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:184:3:184:25 | if ... |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:184:18:184:21 | redo |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:188:1:188:35 | ... while ... |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:188:2:188:13 | self |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:188:30:188:30 | i |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:205:1:205:3 | __synth__0__1 |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:205:1:205:3 | nil |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:205:4:205:5 | if ... |
+| cfg.rb:75:15:75:15 | 0 | cfg.rb:75:15:75:15 | 0 |
+| cfg.rb:75:17:75:43 | elsif ... | cfg.rb:75:17:75:43 | elsif ... |
+| cfg.rb:75:23:75:23 | x | cfg.rb:75:17:75:43 | elsif ... |
+| cfg.rb:75:23:75:23 | x | cfg.rb:75:23:75:23 | x |
+| cfg.rb:75:23:75:23 | x | cfg.rb:75:35:75:36 | 10 |
+| cfg.rb:75:23:75:23 | x | cfg.rb:75:43:75:43 | x |
+| cfg.rb:75:35:75:36 | 10 | cfg.rb:75:35:75:36 | 10 |
+| cfg.rb:75:43:75:43 | x | cfg.rb:75:43:75:43 | x |
+| cfg.rb:90:1:93:3 | enter { ... } | cfg.rb:90:1:93:3 | enter { ... } |
+| cfg.rb:90:1:93:3 | enter { ... } | cfg.rb:90:1:93:3 | exit { ... } (normal) |
+| cfg.rb:90:1:93:3 | enter { ... } | cfg.rb:91:3:91:24 | if ... |
+| cfg.rb:90:1:93:3 | enter { ... } | cfg.rb:91:17:91:20 | next |
+| cfg.rb:90:1:93:3 | exit { ... } (normal) | cfg.rb:90:1:93:3 | exit { ... } (normal) |
+| cfg.rb:90:5:90:5 | [false] ! ... | cfg.rb:90:5:90:5 | [false] ! ... |
+| cfg.rb:90:5:90:5 | [true] ! ... | cfg.rb:90:5:90:5 | [true] ! ... |
+| cfg.rb:90:5:90:5 | [true] ! ... | cfg.rb:90:5:90:5 | x |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:90:5:90:5 | if ... |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:113:1:113:9 | self |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:113:1:113:19 | ... if ... |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:136:1:136:29 | ... rescue ... |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:136:12:136:29 | self |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:172:1:172:49 | unless ... |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:172:21:172:29 | self |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:172:36:172:45 | self |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:174:1:174:9 | self |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:174:1:174:23 | ... unless ... |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:176:1:176:41 | until ... |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:176:7:176:7 | x |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:176:17:176:17 | x |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:179:1:179:36 | ... until ... |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:179:2:179:13 | self |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:179:30:179:30 | i |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:182:1:186:3 | while ... |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:182:7:182:7 | x |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:183:3:183:3 | x |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:184:3:184:25 | if ... |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:184:18:184:21 | redo |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:188:1:188:35 | ... while ... |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:188:2:188:13 | self |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:188:30:188:30 | i |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:205:1:205:3 | __synth__0__1 |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:205:1:205:3 | nil |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:205:4:205:5 | if ... |
+| cfg.rb:90:5:90:5 | x | cfg.rb:90:5:90:5 | x |
+| cfg.rb:91:3:91:24 | if ... | cfg.rb:91:3:91:24 | if ... |
+| cfg.rb:91:17:91:20 | next | cfg.rb:91:17:91:20 | next |
+| cfg.rb:101:1:104:3 | enter parameters | cfg.rb:101:1:104:3 | enter parameters |
+| cfg.rb:101:1:104:3 | enter parameters | cfg.rb:101:24:101:25 | 42 |
+| cfg.rb:101:1:104:3 | enter parameters | cfg.rb:101:28:101:30 | key |
+| cfg.rb:101:24:101:25 | 42 | cfg.rb:101:24:101:25 | 42 |
+| cfg.rb:101:28:101:30 | key | cfg.rb:101:28:101:30 | key |
+| cfg.rb:113:1:113:9 | self | cfg.rb:113:1:113:9 | self |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:113:1:113:19 | ... if ... |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:136:1:136:29 | ... rescue ... |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:136:12:136:29 | self |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:172:1:172:49 | unless ... |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:172:21:172:29 | self |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:172:36:172:45 | self |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:174:1:174:9 | self |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:174:1:174:23 | ... unless ... |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:176:1:176:41 | until ... |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:176:7:176:7 | x |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:176:17:176:17 | x |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:179:1:179:36 | ... until ... |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:179:2:179:13 | self |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:179:30:179:30 | i |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:182:1:186:3 | while ... |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:182:7:182:7 | x |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:183:3:183:3 | x |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:184:3:184:25 | if ... |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:184:18:184:21 | redo |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:188:1:188:35 | ... while ... |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:188:2:188:13 | self |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:188:30:188:30 | i |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:205:1:205:3 | __synth__0__1 |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:205:1:205:3 | nil |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:205:4:205:5 | if ... |
+| cfg.rb:120:8:120:28 | enter -> { ... } | cfg.rb:120:8:120:28 | enter -> { ... } |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:136:1:136:29 | ... rescue ... |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:172:1:172:49 | unless ... |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:172:21:172:29 | self |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:172:36:172:45 | self |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:174:1:174:9 | self |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:174:1:174:23 | ... unless ... |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:176:1:176:41 | until ... |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:176:7:176:7 | x |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:176:17:176:17 | x |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:179:1:179:36 | ... until ... |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:179:2:179:13 | self |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:179:30:179:30 | i |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:182:1:186:3 | while ... |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:182:7:182:7 | x |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:183:3:183:3 | x |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:184:3:184:25 | if ... |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:184:18:184:21 | redo |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:188:1:188:35 | ... while ... |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:188:2:188:13 | self |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:188:30:188:30 | i |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:205:1:205:3 | __synth__0__1 |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:205:1:205:3 | nil |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:205:4:205:5 | if ... |
+| cfg.rb:136:12:136:29 | self | cfg.rb:136:12:136:29 | self |
+| cfg.rb:145:3:148:5 | enter print | cfg.rb:145:3:148:5 | enter print |
+| cfg.rb:152:1:154:3 | enter method | cfg.rb:152:1:154:3 | enter method |
+| cfg.rb:156:1:156:28 | enter two_parameters | cfg.rb:156:1:156:28 | enter two_parameters |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:172:1:172:49 | unless ... |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:174:1:174:9 | self |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:174:1:174:23 | ... unless ... |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:176:1:176:41 | until ... |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:176:7:176:7 | x |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:176:17:176:17 | x |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:179:1:179:36 | ... until ... |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:179:2:179:13 | self |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:179:30:179:30 | i |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:182:1:186:3 | while ... |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:182:7:182:7 | x |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:183:3:183:3 | x |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:184:3:184:25 | if ... |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:184:18:184:21 | redo |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:188:1:188:35 | ... while ... |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:188:2:188:13 | self |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:188:30:188:30 | i |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:205:1:205:3 | __synth__0__1 |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:205:1:205:3 | nil |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:205:4:205:5 | if ... |
+| cfg.rb:172:21:172:29 | self | cfg.rb:172:21:172:29 | self |
+| cfg.rb:172:36:172:45 | self | cfg.rb:172:36:172:45 | self |
+| cfg.rb:174:1:174:9 | self | cfg.rb:174:1:174:9 | self |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:174:1:174:23 | ... unless ... |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:176:1:176:41 | until ... |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:176:7:176:7 | x |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:176:17:176:17 | x |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:179:1:179:36 | ... until ... |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:179:2:179:13 | self |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:179:30:179:30 | i |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:182:1:186:3 | while ... |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:182:7:182:7 | x |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:183:3:183:3 | x |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:184:3:184:25 | if ... |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:184:18:184:21 | redo |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:188:1:188:35 | ... while ... |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:188:2:188:13 | self |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:188:30:188:30 | i |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:205:1:205:3 | __synth__0__1 |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:205:1:205:3 | nil |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:205:4:205:5 | if ... |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:176:1:176:41 | until ... |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:179:1:179:36 | ... until ... |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:179:2:179:13 | self |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:179:30:179:30 | i |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:182:1:186:3 | while ... |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:182:7:182:7 | x |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:183:3:183:3 | x |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:184:3:184:25 | if ... |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:184:18:184:21 | redo |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:188:1:188:35 | ... while ... |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:188:2:188:13 | self |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:188:30:188:30 | i |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:205:1:205:3 | __synth__0__1 |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:205:1:205:3 | nil |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:205:4:205:5 | if ... |
+| cfg.rb:176:7:176:7 | x | cfg.rb:176:1:176:41 | until ... |
+| cfg.rb:176:7:176:7 | x | cfg.rb:176:7:176:7 | x |
+| cfg.rb:176:7:176:7 | x | cfg.rb:176:17:176:17 | x |
+| cfg.rb:176:7:176:7 | x | cfg.rb:179:1:179:36 | ... until ... |
+| cfg.rb:176:7:176:7 | x | cfg.rb:179:2:179:13 | self |
+| cfg.rb:176:7:176:7 | x | cfg.rb:179:30:179:30 | i |
+| cfg.rb:176:7:176:7 | x | cfg.rb:182:1:186:3 | while ... |
+| cfg.rb:176:7:176:7 | x | cfg.rb:182:7:182:7 | x |
+| cfg.rb:176:7:176:7 | x | cfg.rb:183:3:183:3 | x |
+| cfg.rb:176:7:176:7 | x | cfg.rb:184:3:184:25 | if ... |
+| cfg.rb:176:7:176:7 | x | cfg.rb:184:18:184:21 | redo |
+| cfg.rb:176:7:176:7 | x | cfg.rb:188:1:188:35 | ... while ... |
+| cfg.rb:176:7:176:7 | x | cfg.rb:188:2:188:13 | self |
+| cfg.rb:176:7:176:7 | x | cfg.rb:188:30:188:30 | i |
+| cfg.rb:176:7:176:7 | x | cfg.rb:205:1:205:3 | __synth__0__1 |
+| cfg.rb:176:7:176:7 | x | cfg.rb:205:1:205:3 | nil |
+| cfg.rb:176:7:176:7 | x | cfg.rb:205:4:205:5 | if ... |
+| cfg.rb:176:17:176:17 | x | cfg.rb:176:17:176:17 | x |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:179:1:179:36 | ... until ... |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:182:1:186:3 | while ... |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:182:7:182:7 | x |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:183:3:183:3 | x |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:184:3:184:25 | if ... |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:184:18:184:21 | redo |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:188:1:188:35 | ... while ... |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:188:2:188:13 | self |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:188:30:188:30 | i |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:205:1:205:3 | __synth__0__1 |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:205:1:205:3 | nil |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:205:4:205:5 | if ... |
+| cfg.rb:179:2:179:13 | self | cfg.rb:179:2:179:13 | self |
+| cfg.rb:179:30:179:30 | i | cfg.rb:179:1:179:36 | ... until ... |
+| cfg.rb:179:30:179:30 | i | cfg.rb:179:2:179:13 | self |
+| cfg.rb:179:30:179:30 | i | cfg.rb:179:30:179:30 | i |
+| cfg.rb:179:30:179:30 | i | cfg.rb:182:1:186:3 | while ... |
+| cfg.rb:179:30:179:30 | i | cfg.rb:182:7:182:7 | x |
+| cfg.rb:179:30:179:30 | i | cfg.rb:183:3:183:3 | x |
+| cfg.rb:179:30:179:30 | i | cfg.rb:184:3:184:25 | if ... |
+| cfg.rb:179:30:179:30 | i | cfg.rb:184:18:184:21 | redo |
+| cfg.rb:179:30:179:30 | i | cfg.rb:188:1:188:35 | ... while ... |
+| cfg.rb:179:30:179:30 | i | cfg.rb:188:2:188:13 | self |
+| cfg.rb:179:30:179:30 | i | cfg.rb:188:30:188:30 | i |
+| cfg.rb:179:30:179:30 | i | cfg.rb:205:1:205:3 | __synth__0__1 |
+| cfg.rb:179:30:179:30 | i | cfg.rb:205:1:205:3 | nil |
+| cfg.rb:179:30:179:30 | i | cfg.rb:205:4:205:5 | if ... |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:182:1:186:3 | while ... |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:188:1:188:35 | ... while ... |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:188:2:188:13 | self |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:188:30:188:30 | i |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:205:1:205:3 | __synth__0__1 |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:205:1:205:3 | nil |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:205:4:205:5 | if ... |
+| cfg.rb:182:7:182:7 | x | cfg.rb:182:1:186:3 | while ... |
+| cfg.rb:182:7:182:7 | x | cfg.rb:182:7:182:7 | x |
+| cfg.rb:182:7:182:7 | x | cfg.rb:183:3:183:3 | x |
+| cfg.rb:182:7:182:7 | x | cfg.rb:184:3:184:25 | if ... |
+| cfg.rb:182:7:182:7 | x | cfg.rb:184:18:184:21 | redo |
+| cfg.rb:182:7:182:7 | x | cfg.rb:188:1:188:35 | ... while ... |
+| cfg.rb:182:7:182:7 | x | cfg.rb:188:2:188:13 | self |
+| cfg.rb:182:7:182:7 | x | cfg.rb:188:30:188:30 | i |
+| cfg.rb:182:7:182:7 | x | cfg.rb:205:1:205:3 | __synth__0__1 |
+| cfg.rb:182:7:182:7 | x | cfg.rb:205:1:205:3 | nil |
+| cfg.rb:182:7:182:7 | x | cfg.rb:205:4:205:5 | if ... |
+| cfg.rb:183:3:183:3 | x | cfg.rb:183:3:183:3 | x |
+| cfg.rb:183:3:183:3 | x | cfg.rb:184:3:184:25 | if ... |
+| cfg.rb:183:3:183:3 | x | cfg.rb:184:18:184:21 | redo |
+| cfg.rb:184:3:184:25 | if ... | cfg.rb:184:3:184:25 | if ... |
+| cfg.rb:184:18:184:21 | redo | cfg.rb:184:18:184:21 | redo |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:188:1:188:35 | ... while ... |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:205:1:205:3 | __synth__0__1 |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:205:1:205:3 | nil |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:205:4:205:5 | if ... |
+| cfg.rb:188:2:188:13 | self | cfg.rb:188:2:188:13 | self |
+| cfg.rb:188:30:188:30 | i | cfg.rb:188:1:188:35 | ... while ... |
+| cfg.rb:188:30:188:30 | i | cfg.rb:188:2:188:13 | self |
+| cfg.rb:188:30:188:30 | i | cfg.rb:188:30:188:30 | i |
+| cfg.rb:188:30:188:30 | i | cfg.rb:205:1:205:3 | __synth__0__1 |
+| cfg.rb:188:30:188:30 | i | cfg.rb:205:1:205:3 | nil |
+| cfg.rb:188:30:188:30 | i | cfg.rb:205:4:205:5 | if ... |
+| cfg.rb:190:1:192:3 | enter run_block | cfg.rb:190:1:192:3 | enter run_block |
+| cfg.rb:194:11:194:23 | enter { ... } | cfg.rb:194:11:194:23 | enter { ... } |
+| cfg.rb:196:1:198:3 | enter forward_param | cfg.rb:196:1:198:3 | enter forward_param |
+| cfg.rb:200:9:200:32 | enter { ... } | cfg.rb:200:9:200:32 | enter { ... } |
+| cfg.rb:202:9:202:35 | enter do ... end | cfg.rb:202:9:202:35 | enter do ... end |
+| cfg.rb:205:1:205:3 | __synth__0__1 | cfg.rb:205:1:205:3 | __synth__0__1 |
+| cfg.rb:205:1:205:3 | nil | cfg.rb:205:1:205:3 | nil |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:205:4:205:5 | if ... |
+| cfg.rb:205:15:205:23 | enter { ... } | cfg.rb:205:15:205:23 | enter { ... } |
+| cfg.rb:207:1:211:3 | enter filter_nil | cfg.rb:207:1:211:3 | enter filter_nil |
+| cfg.rb:208:15:210:5 | enter do ... end | cfg.rb:208:15:210:5 | enter do ... end |
+| cfg.rb:213:14:216:3 | enter do ... end | cfg.rb:213:14:216:3 | enter do ... end |
+| constant_compound_assign.rb:1:1:22:4 | enter constant_compound_assign.rb | constant_compound_assign.rb:1:1:22:4 | enter constant_compound_assign.rb |
+| constant_compound_assign.rb:1:1:22:4 | enter constant_compound_assign.rb | constant_compound_assign.rb:5:18:5:20 | ... \|\| ... |
+| constant_compound_assign.rb:1:1:22:4 | enter constant_compound_assign.rb | constant_compound_assign.rb:5:22:5:24 | 123 |
+| constant_compound_assign.rb:1:1:22:4 | enter constant_compound_assign.rb | constant_compound_assign.rb:14:14:14:16 | ... \|\| ... |
+| constant_compound_assign.rb:1:1:22:4 | enter constant_compound_assign.rb | constant_compound_assign.rb:14:18:14:20 | 123 |
+| constant_compound_assign.rb:1:1:22:4 | enter constant_compound_assign.rb | constant_compound_assign.rb:19:17:19:19 | ... \|\| ... |
+| constant_compound_assign.rb:1:1:22:4 | enter constant_compound_assign.rb | constant_compound_assign.rb:19:21:19:23 | 123 |
+| constant_compound_assign.rb:5:18:5:20 | ... \|\| ... | constant_compound_assign.rb:5:18:5:20 | ... \|\| ... |
+| constant_compound_assign.rb:5:18:5:20 | ... \|\| ... | constant_compound_assign.rb:14:14:14:16 | ... \|\| ... |
+| constant_compound_assign.rb:5:18:5:20 | ... \|\| ... | constant_compound_assign.rb:14:18:14:20 | 123 |
+| constant_compound_assign.rb:5:18:5:20 | ... \|\| ... | constant_compound_assign.rb:19:17:19:19 | ... \|\| ... |
+| constant_compound_assign.rb:5:18:5:20 | ... \|\| ... | constant_compound_assign.rb:19:21:19:23 | 123 |
+| constant_compound_assign.rb:5:22:5:24 | 123 | constant_compound_assign.rb:5:22:5:24 | 123 |
+| constant_compound_assign.rb:14:14:14:16 | ... \|\| ... | constant_compound_assign.rb:14:14:14:16 | ... \|\| ... |
+| constant_compound_assign.rb:14:14:14:16 | ... \|\| ... | constant_compound_assign.rb:19:17:19:19 | ... \|\| ... |
+| constant_compound_assign.rb:14:14:14:16 | ... \|\| ... | constant_compound_assign.rb:19:21:19:23 | 123 |
+| constant_compound_assign.rb:14:18:14:20 | 123 | constant_compound_assign.rb:14:18:14:20 | 123 |
+| constant_compound_assign.rb:19:17:19:19 | ... \|\| ... | constant_compound_assign.rb:19:17:19:19 | ... \|\| ... |
+| constant_compound_assign.rb:19:21:19:23 | 123 | constant_compound_assign.rb:19:21:19:23 | 123 |
+| desugar.rb:1:1:3:3 | enter m1 | desugar.rb:1:1:3:3 | enter m1 |
+| desugar.rb:1:1:38:17 | enter desugar.rb | desugar.rb:1:1:38:17 | enter desugar.rb |
+| desugar.rb:5:1:7:3 | enter m2 | desugar.rb:5:1:7:3 | enter m2 |
+| desugar.rb:9:1:11:3 | enter m3 | desugar.rb:9:1:11:3 | enter m3 |
+| desugar.rb:13:1:15:3 | enter m4 | desugar.rb:13:1:15:3 | enter m4 |
+| desugar.rb:17:1:19:3 | enter m5 | desugar.rb:17:1:19:3 | enter m5 |
+| desugar.rb:21:1:23:3 | enter m6 | desugar.rb:21:1:23:3 | enter m6 |
+| desugar.rb:25:1:27:3 | enter m7 | desugar.rb:25:1:27:3 | enter m7 |
+| exit.rb:1:1:6:3 | enter m1 | exit.rb:1:1:6:3 | enter m1 |
+| exit.rb:1:1:6:3 | enter m1 | exit.rb:1:1:6:3 | exit m1 |
+| exit.rb:1:1:6:3 | enter m1 | exit.rb:2:3:4:5 | if ... |
+| exit.rb:1:1:6:3 | enter m1 | exit.rb:3:5:3:10 | self |
+| exit.rb:1:1:6:3 | exit m1 | exit.rb:1:1:6:3 | exit m1 |
+| exit.rb:1:1:13:4 | enter exit.rb | exit.rb:1:1:13:4 | enter exit.rb |
+| exit.rb:2:3:4:5 | if ... | exit.rb:2:3:4:5 | if ... |
+| exit.rb:3:5:3:10 | self | exit.rb:3:5:3:10 | self |
+| exit.rb:8:1:13:3 | enter m2 | exit.rb:8:1:13:3 | enter m2 |
+| exit.rb:8:1:13:3 | enter m2 | exit.rb:8:1:13:3 | exit m2 |
+| exit.rb:8:1:13:3 | enter m2 | exit.rb:9:3:11:5 | if ... |
+| exit.rb:8:1:13:3 | enter m2 | exit.rb:10:5:10:18 | self |
+| exit.rb:8:1:13:3 | exit m2 | exit.rb:8:1:13:3 | exit m2 |
+| exit.rb:9:3:11:5 | if ... | exit.rb:9:3:11:5 | if ... |
+| exit.rb:10:5:10:18 | self | exit.rb:10:5:10:18 | self |
+| heredoc.rb:1:1:7:3 | enter double_heredoc | heredoc.rb:1:1:7:3 | enter double_heredoc |
+| heredoc.rb:1:1:7:4 | enter heredoc.rb | heredoc.rb:1:1:7:4 | enter heredoc.rb |
+| ifs.rb:1:1:9:3 | enter m1 | ifs.rb:1:1:9:3 | enter m1 |
+| ifs.rb:1:1:9:3 | enter m1 | ifs.rb:2:3:8:5 | if ... |
+| ifs.rb:1:1:9:3 | enter m1 | ifs.rb:3:5:3:30 | self |
+| ifs.rb:1:1:9:3 | enter m1 | ifs.rb:4:3:7:35 | elsif ... |
+| ifs.rb:1:1:9:3 | enter m1 | ifs.rb:4:9:4:9 | x |
+| ifs.rb:1:1:9:3 | enter m1 | ifs.rb:4:9:4:24 | [false] ... and ... |
+| ifs.rb:1:1:9:3 | enter m1 | ifs.rb:4:9:4:24 | [true] ... and ... |
+| ifs.rb:1:1:9:3 | enter m1 | ifs.rb:4:9:4:38 | [false] ... and ... |
+| ifs.rb:1:1:9:3 | enter m1 | ifs.rb:4:9:4:38 | [true] ... and ... |
+| ifs.rb:1:1:9:3 | enter m1 | ifs.rb:4:20:4:20 | x |
+| ifs.rb:1:1:9:3 | enter m1 | ifs.rb:4:30:4:38 | [false] ! ... |
+| ifs.rb:1:1:9:3 | enter m1 | ifs.rb:4:30:4:38 | [true] ! ... |
+| ifs.rb:1:1:9:3 | enter m1 | ifs.rb:4:31:4:38 | [false] ( ... ) |
+| ifs.rb:1:1:9:3 | enter m1 | ifs.rb:4:31:4:38 | [true] ( ... ) |
+| ifs.rb:1:1:9:3 | enter m1 | ifs.rb:4:32:4:32 | x |
+| ifs.rb:1:1:9:3 | enter m1 | ifs.rb:5:5:5:17 | self |
+| ifs.rb:1:1:9:3 | enter m1 | ifs.rb:7:5:7:35 | self |
+| ifs.rb:1:1:58:4 | enter ifs.rb | ifs.rb:1:1:58:4 | enter ifs.rb |
+| ifs.rb:1:1:58:4 | enter ifs.rb | ifs.rb:36:1:38:3 | conditional_method_def |
+| ifs.rb:1:1:58:4 | enter ifs.rb | ifs.rb:36:1:38:17 | ... unless ... |
+| ifs.rb:2:3:8:5 | if ... | ifs.rb:2:3:8:5 | if ... |
+| ifs.rb:3:5:3:30 | self | ifs.rb:3:5:3:30 | self |
+| ifs.rb:4:3:7:35 | elsif ... | ifs.rb:4:3:7:35 | elsif ... |
+| ifs.rb:4:9:4:9 | x | ifs.rb:4:3:7:35 | elsif ... |
+| ifs.rb:4:9:4:9 | x | ifs.rb:4:9:4:9 | x |
+| ifs.rb:4:9:4:9 | x | ifs.rb:4:9:4:24 | [false] ... and ... |
+| ifs.rb:4:9:4:9 | x | ifs.rb:4:9:4:24 | [true] ... and ... |
+| ifs.rb:4:9:4:9 | x | ifs.rb:4:9:4:38 | [false] ... and ... |
+| ifs.rb:4:9:4:9 | x | ifs.rb:4:9:4:38 | [true] ... and ... |
+| ifs.rb:4:9:4:9 | x | ifs.rb:4:20:4:20 | x |
+| ifs.rb:4:9:4:9 | x | ifs.rb:4:30:4:38 | [false] ! ... |
+| ifs.rb:4:9:4:9 | x | ifs.rb:4:30:4:38 | [true] ! ... |
+| ifs.rb:4:9:4:9 | x | ifs.rb:4:31:4:38 | [false] ( ... ) |
+| ifs.rb:4:9:4:9 | x | ifs.rb:4:31:4:38 | [true] ( ... ) |
+| ifs.rb:4:9:4:9 | x | ifs.rb:4:32:4:32 | x |
+| ifs.rb:4:9:4:9 | x | ifs.rb:5:5:5:17 | self |
+| ifs.rb:4:9:4:9 | x | ifs.rb:7:5:7:35 | self |
+| ifs.rb:4:9:4:24 | [false] ... and ... | ifs.rb:4:9:4:24 | [false] ... and ... |
+| ifs.rb:4:9:4:24 | [true] ... and ... | ifs.rb:4:9:4:24 | [true] ... and ... |
+| ifs.rb:4:9:4:24 | [true] ... and ... | ifs.rb:4:9:4:38 | [true] ... and ... |
+| ifs.rb:4:9:4:24 | [true] ... and ... | ifs.rb:4:30:4:38 | [false] ! ... |
+| ifs.rb:4:9:4:24 | [true] ... and ... | ifs.rb:4:30:4:38 | [true] ! ... |
+| ifs.rb:4:9:4:24 | [true] ... and ... | ifs.rb:4:31:4:38 | [false] ( ... ) |
+| ifs.rb:4:9:4:24 | [true] ... and ... | ifs.rb:4:31:4:38 | [true] ( ... ) |
+| ifs.rb:4:9:4:24 | [true] ... and ... | ifs.rb:4:32:4:32 | x |
+| ifs.rb:4:9:4:24 | [true] ... and ... | ifs.rb:5:5:5:17 | self |
+| ifs.rb:4:9:4:38 | [false] ... and ... | ifs.rb:4:9:4:38 | [false] ... and ... |
+| ifs.rb:4:9:4:38 | [false] ... and ... | ifs.rb:7:5:7:35 | self |
+| ifs.rb:4:9:4:38 | [true] ... and ... | ifs.rb:4:9:4:38 | [true] ... and ... |
+| ifs.rb:4:9:4:38 | [true] ... and ... | ifs.rb:5:5:5:17 | self |
+| ifs.rb:4:20:4:20 | x | ifs.rb:4:9:4:24 | [true] ... and ... |
+| ifs.rb:4:20:4:20 | x | ifs.rb:4:9:4:38 | [true] ... and ... |
+| ifs.rb:4:20:4:20 | x | ifs.rb:4:20:4:20 | x |
+| ifs.rb:4:20:4:20 | x | ifs.rb:4:30:4:38 | [false] ! ... |
+| ifs.rb:4:20:4:20 | x | ifs.rb:4:30:4:38 | [true] ! ... |
+| ifs.rb:4:20:4:20 | x | ifs.rb:4:31:4:38 | [false] ( ... ) |
+| ifs.rb:4:20:4:20 | x | ifs.rb:4:31:4:38 | [true] ( ... ) |
+| ifs.rb:4:20:4:20 | x | ifs.rb:4:32:4:32 | x |
+| ifs.rb:4:20:4:20 | x | ifs.rb:5:5:5:17 | self |
+| ifs.rb:4:30:4:38 | [false] ! ... | ifs.rb:4:30:4:38 | [false] ! ... |
+| ifs.rb:4:30:4:38 | [true] ! ... | ifs.rb:4:9:4:38 | [true] ... and ... |
+| ifs.rb:4:30:4:38 | [true] ! ... | ifs.rb:4:30:4:38 | [true] ! ... |
+| ifs.rb:4:30:4:38 | [true] ! ... | ifs.rb:5:5:5:17 | self |
+| ifs.rb:4:31:4:38 | [false] ( ... ) | ifs.rb:4:9:4:38 | [true] ... and ... |
+| ifs.rb:4:31:4:38 | [false] ( ... ) | ifs.rb:4:30:4:38 | [true] ! ... |
+| ifs.rb:4:31:4:38 | [false] ( ... ) | ifs.rb:4:31:4:38 | [false] ( ... ) |
+| ifs.rb:4:31:4:38 | [false] ( ... ) | ifs.rb:5:5:5:17 | self |
+| ifs.rb:4:31:4:38 | [true] ( ... ) | ifs.rb:4:30:4:38 | [false] ! ... |
+| ifs.rb:4:31:4:38 | [true] ( ... ) | ifs.rb:4:31:4:38 | [true] ( ... ) |
+| ifs.rb:4:32:4:32 | x | ifs.rb:4:9:4:38 | [true] ... and ... |
+| ifs.rb:4:32:4:32 | x | ifs.rb:4:30:4:38 | [false] ! ... |
+| ifs.rb:4:32:4:32 | x | ifs.rb:4:30:4:38 | [true] ! ... |
+| ifs.rb:4:32:4:32 | x | ifs.rb:4:31:4:38 | [false] ( ... ) |
+| ifs.rb:4:32:4:32 | x | ifs.rb:4:31:4:38 | [true] ( ... ) |
+| ifs.rb:4:32:4:32 | x | ifs.rb:4:32:4:32 | x |
+| ifs.rb:4:32:4:32 | x | ifs.rb:5:5:5:17 | self |
+| ifs.rb:5:5:5:17 | self | ifs.rb:5:5:5:17 | self |
+| ifs.rb:7:5:7:35 | self | ifs.rb:7:5:7:35 | self |
+| ifs.rb:11:1:16:3 | enter m2 | ifs.rb:11:1:16:3 | enter m2 |
+| ifs.rb:11:1:16:3 | enter m2 | ifs.rb:11:1:16:3 | exit m2 (normal) |
+| ifs.rb:11:1:16:3 | enter m2 | ifs.rb:12:3:14:5 | if ... |
+| ifs.rb:11:1:16:3 | enter m2 | ifs.rb:13:12:13:12 | 0 |
+| ifs.rb:11:1:16:3 | exit m2 (normal) | ifs.rb:11:1:16:3 | exit m2 (normal) |
+| ifs.rb:12:3:14:5 | if ... | ifs.rb:12:3:14:5 | if ... |
+| ifs.rb:13:12:13:12 | 0 | ifs.rb:13:12:13:12 | 0 |
+| ifs.rb:18:1:26:3 | enter m3 | ifs.rb:18:1:26:3 | enter m3 |
+| ifs.rb:18:1:26:3 | enter m3 | ifs.rb:19:3:24:5 | if ... |
+| ifs.rb:18:1:26:3 | enter m3 | ifs.rb:20:5:20:5 | x |
+| ifs.rb:18:1:26:3 | enter m3 | ifs.rb:21:5:23:7 | if ... |
+| ifs.rb:18:1:26:3 | enter m3 | ifs.rb:22:7:22:7 | x |
+| ifs.rb:19:3:24:5 | if ... | ifs.rb:19:3:24:5 | if ... |
+| ifs.rb:20:5:20:5 | x | ifs.rb:20:5:20:5 | x |
+| ifs.rb:20:5:20:5 | x | ifs.rb:21:5:23:7 | if ... |
+| ifs.rb:20:5:20:5 | x | ifs.rb:22:7:22:7 | x |
+| ifs.rb:21:5:23:7 | if ... | ifs.rb:21:5:23:7 | if ... |
+| ifs.rb:22:7:22:7 | x | ifs.rb:22:7:22:7 | x |
+| ifs.rb:28:1:30:3 | enter m4 | ifs.rb:28:1:30:3 | enter m4 |
+| ifs.rb:28:1:30:3 | enter m4 | ifs.rb:29:10:29:23 | [false] ( ... ) |
+| ifs.rb:28:1:30:3 | enter m4 | ifs.rb:29:10:29:23 | [true] ( ... ) |
+| ifs.rb:28:1:30:3 | enter m4 | ifs.rb:29:10:29:51 | ... ? ... : ... |
+| ifs.rb:28:1:30:3 | enter m4 | ifs.rb:29:11:29:22 | [false] ... ? ... : ... |
+| ifs.rb:28:1:30:3 | enter m4 | ifs.rb:29:11:29:22 | [true] ... ? ... : ... |
+| ifs.rb:28:1:30:3 | enter m4 | ifs.rb:29:16:29:17 | b2 |
+| ifs.rb:28:1:30:3 | enter m4 | ifs.rb:29:21:29:22 | b3 |
+| ifs.rb:28:1:30:3 | enter m4 | ifs.rb:29:28:29:35 | b2 \|\| b3 |
+| ifs.rb:28:1:30:3 | enter m4 | ifs.rb:29:41:29:50 | !b2 \|\| !b3 |
+| ifs.rb:29:10:29:23 | [false] ( ... ) | ifs.rb:29:10:29:23 | [false] ( ... ) |
+| ifs.rb:29:10:29:23 | [false] ( ... ) | ifs.rb:29:41:29:50 | !b2 \|\| !b3 |
+| ifs.rb:29:10:29:23 | [true] ( ... ) | ifs.rb:29:10:29:23 | [true] ( ... ) |
+| ifs.rb:29:10:29:23 | [true] ( ... ) | ifs.rb:29:28:29:35 | b2 \|\| b3 |
+| ifs.rb:29:10:29:51 | ... ? ... : ... | ifs.rb:29:10:29:51 | ... ? ... : ... |
+| ifs.rb:29:11:29:22 | [false] ... ? ... : ... | ifs.rb:29:10:29:23 | [false] ( ... ) |
+| ifs.rb:29:11:29:22 | [false] ... ? ... : ... | ifs.rb:29:11:29:22 | [false] ... ? ... : ... |
+| ifs.rb:29:11:29:22 | [false] ... ? ... : ... | ifs.rb:29:41:29:50 | !b2 \|\| !b3 |
+| ifs.rb:29:11:29:22 | [true] ... ? ... : ... | ifs.rb:29:10:29:23 | [true] ( ... ) |
+| ifs.rb:29:11:29:22 | [true] ... ? ... : ... | ifs.rb:29:11:29:22 | [true] ... ? ... : ... |
+| ifs.rb:29:11:29:22 | [true] ... ? ... : ... | ifs.rb:29:28:29:35 | b2 \|\| b3 |
+| ifs.rb:29:16:29:17 | b2 | ifs.rb:29:16:29:17 | b2 |
+| ifs.rb:29:21:29:22 | b3 | ifs.rb:29:21:29:22 | b3 |
+| ifs.rb:29:28:29:35 | b2 \|\| b3 | ifs.rb:29:28:29:35 | b2 \|\| b3 |
+| ifs.rb:29:41:29:50 | !b2 \|\| !b3 | ifs.rb:29:41:29:50 | !b2 \|\| !b3 |
+| ifs.rb:32:1:34:3 | enter m5 | ifs.rb:32:1:34:3 | enter m5 |
+| ifs.rb:32:1:34:3 | enter m5 | ifs.rb:33:3:33:100 | if ... |
+| ifs.rb:32:1:34:3 | enter m5 | ifs.rb:33:6:33:49 | [false] ( ... ) |
+| ifs.rb:32:1:34:3 | enter m5 | ifs.rb:33:6:33:49 | [true] ( ... ) |
+| ifs.rb:32:1:34:3 | enter m5 | ifs.rb:33:7:33:48 | [false] if ... |
+| ifs.rb:32:1:34:3 | enter m5 | ifs.rb:33:7:33:48 | [true] if ... |
+| ifs.rb:32:1:34:3 | enter m5 | ifs.rb:33:13:33:19 | [false] then ... |
+| ifs.rb:32:1:34:3 | enter m5 | ifs.rb:33:13:33:19 | [true] then ... |
+| ifs.rb:32:1:34:3 | enter m5 | ifs.rb:33:18:33:19 | b2 |
+| ifs.rb:32:1:34:3 | enter m5 | ifs.rb:33:21:33:44 | [false] elsif ... |
+| ifs.rb:32:1:34:3 | enter m5 | ifs.rb:33:21:33:44 | [true] elsif ... |
+| ifs.rb:32:1:34:3 | enter m5 | ifs.rb:33:27:33:28 | b3 |
+| ifs.rb:32:1:34:3 | enter m5 | ifs.rb:33:30:33:36 | [false] then ... |
+| ifs.rb:32:1:34:3 | enter m5 | ifs.rb:33:30:33:36 | [true] then ... |
+| ifs.rb:32:1:34:3 | enter m5 | ifs.rb:33:35:33:36 | b4 |
+| ifs.rb:32:1:34:3 | enter m5 | ifs.rb:33:38:33:44 | [false] else ... |
+| ifs.rb:32:1:34:3 | enter m5 | ifs.rb:33:38:33:44 | [true] else ... |
+| ifs.rb:32:1:34:3 | enter m5 | ifs.rb:33:43:33:44 | b5 |
+| ifs.rb:32:1:34:3 | enter m5 | ifs.rb:33:57:33:70 | b2 \|\| b4 \|\| b5 |
+| ifs.rb:32:1:34:3 | enter m5 | ifs.rb:33:79:33:95 | !b2 \|\| !b4 \|\| !b5 |
+| ifs.rb:33:3:33:100 | if ... | ifs.rb:33:3:33:100 | if ... |
+| ifs.rb:33:6:33:49 | [false] ( ... ) | ifs.rb:33:6:33:49 | [false] ( ... ) |
+| ifs.rb:33:6:33:49 | [false] ( ... ) | ifs.rb:33:79:33:95 | !b2 \|\| !b4 \|\| !b5 |
+| ifs.rb:33:6:33:49 | [true] ( ... ) | ifs.rb:33:6:33:49 | [true] ( ... ) |
+| ifs.rb:33:6:33:49 | [true] ( ... ) | ifs.rb:33:57:33:70 | b2 \|\| b4 \|\| b5 |
+| ifs.rb:33:7:33:48 | [false] if ... | ifs.rb:33:6:33:49 | [false] ( ... ) |
+| ifs.rb:33:7:33:48 | [false] if ... | ifs.rb:33:7:33:48 | [false] if ... |
+| ifs.rb:33:7:33:48 | [false] if ... | ifs.rb:33:79:33:95 | !b2 \|\| !b4 \|\| !b5 |
+| ifs.rb:33:7:33:48 | [true] if ... | ifs.rb:33:6:33:49 | [true] ( ... ) |
+| ifs.rb:33:7:33:48 | [true] if ... | ifs.rb:33:7:33:48 | [true] if ... |
+| ifs.rb:33:7:33:48 | [true] if ... | ifs.rb:33:57:33:70 | b2 \|\| b4 \|\| b5 |
+| ifs.rb:33:13:33:19 | [false] then ... | ifs.rb:33:13:33:19 | [false] then ... |
+| ifs.rb:33:13:33:19 | [true] then ... | ifs.rb:33:13:33:19 | [true] then ... |
+| ifs.rb:33:18:33:19 | b2 | ifs.rb:33:13:33:19 | [false] then ... |
+| ifs.rb:33:18:33:19 | b2 | ifs.rb:33:13:33:19 | [true] then ... |
+| ifs.rb:33:18:33:19 | b2 | ifs.rb:33:18:33:19 | b2 |
+| ifs.rb:33:21:33:44 | [false] elsif ... | ifs.rb:33:21:33:44 | [false] elsif ... |
+| ifs.rb:33:21:33:44 | [true] elsif ... | ifs.rb:33:21:33:44 | [true] elsif ... |
+| ifs.rb:33:27:33:28 | b3 | ifs.rb:33:21:33:44 | [false] elsif ... |
+| ifs.rb:33:27:33:28 | b3 | ifs.rb:33:21:33:44 | [true] elsif ... |
+| ifs.rb:33:27:33:28 | b3 | ifs.rb:33:27:33:28 | b3 |
+| ifs.rb:33:27:33:28 | b3 | ifs.rb:33:30:33:36 | [false] then ... |
+| ifs.rb:33:27:33:28 | b3 | ifs.rb:33:30:33:36 | [true] then ... |
+| ifs.rb:33:27:33:28 | b3 | ifs.rb:33:35:33:36 | b4 |
+| ifs.rb:33:27:33:28 | b3 | ifs.rb:33:38:33:44 | [false] else ... |
+| ifs.rb:33:27:33:28 | b3 | ifs.rb:33:38:33:44 | [true] else ... |
+| ifs.rb:33:27:33:28 | b3 | ifs.rb:33:43:33:44 | b5 |
+| ifs.rb:33:30:33:36 | [false] then ... | ifs.rb:33:30:33:36 | [false] then ... |
+| ifs.rb:33:30:33:36 | [true] then ... | ifs.rb:33:30:33:36 | [true] then ... |
+| ifs.rb:33:35:33:36 | b4 | ifs.rb:33:30:33:36 | [false] then ... |
+| ifs.rb:33:35:33:36 | b4 | ifs.rb:33:30:33:36 | [true] then ... |
+| ifs.rb:33:35:33:36 | b4 | ifs.rb:33:35:33:36 | b4 |
+| ifs.rb:33:38:33:44 | [false] else ... | ifs.rb:33:38:33:44 | [false] else ... |
+| ifs.rb:33:38:33:44 | [true] else ... | ifs.rb:33:38:33:44 | [true] else ... |
+| ifs.rb:33:43:33:44 | b5 | ifs.rb:33:38:33:44 | [false] else ... |
+| ifs.rb:33:43:33:44 | b5 | ifs.rb:33:38:33:44 | [true] else ... |
+| ifs.rb:33:43:33:44 | b5 | ifs.rb:33:43:33:44 | b5 |
+| ifs.rb:33:57:33:70 | b2 \|\| b4 \|\| b5 | ifs.rb:33:57:33:70 | b2 \|\| b4 \|\| b5 |
+| ifs.rb:33:79:33:95 | !b2 \|\| !b4 \|\| !b5 | ifs.rb:33:79:33:95 | !b2 \|\| !b4 \|\| !b5 |
+| ifs.rb:36:1:38:3 | conditional_method_def | ifs.rb:36:1:38:3 | conditional_method_def |
+| ifs.rb:36:1:38:3 | enter conditional_method_def | ifs.rb:36:1:38:3 | enter conditional_method_def |
+| ifs.rb:36:1:38:17 | ... unless ... | ifs.rb:36:1:38:17 | ... unless ... |
+| ifs.rb:40:1:44:3 | enter constant_condition | ifs.rb:40:1:44:3 | enter constant_condition |
+| ifs.rb:40:1:44:3 | enter constant_condition | ifs.rb:41:3:43:5 | if ... |
+| ifs.rb:40:1:44:3 | enter constant_condition | ifs.rb:41:6:41:10 | [false] ! ... |
+| ifs.rb:41:3:43:5 | if ... | ifs.rb:41:3:43:5 | if ... |
+| ifs.rb:41:6:41:10 | [false] ! ... | ifs.rb:41:3:43:5 | if ... |
+| ifs.rb:41:6:41:10 | [false] ! ... | ifs.rb:41:6:41:10 | [false] ! ... |
+| ifs.rb:46:1:52:3 | enter empty_else | ifs.rb:46:1:52:3 | enter empty_else |
+| ifs.rb:46:1:52:3 | enter empty_else | ifs.rb:47:3:50:5 | if ... |
+| ifs.rb:46:1:52:3 | enter empty_else | ifs.rb:48:5:48:15 | self |
+| ifs.rb:46:1:52:3 | enter empty_else | ifs.rb:49:3:49:6 | else ... |
+| ifs.rb:47:3:50:5 | if ... | ifs.rb:47:3:50:5 | if ... |
+| ifs.rb:48:5:48:15 | self | ifs.rb:48:5:48:15 | self |
+| ifs.rb:49:3:49:6 | else ... | ifs.rb:49:3:49:6 | else ... |
+| ifs.rb:54:1:58:3 | enter disjunct | ifs.rb:54:1:58:3 | enter disjunct |
+| ifs.rb:54:1:58:3 | enter disjunct | ifs.rb:55:3:57:5 | if ... |
+| ifs.rb:54:1:58:3 | enter disjunct | ifs.rb:55:6:55:15 | [false] ( ... ) |
+| ifs.rb:54:1:58:3 | enter disjunct | ifs.rb:55:6:55:15 | [true] ( ... ) |
+| ifs.rb:54:1:58:3 | enter disjunct | ifs.rb:55:7:55:14 | [false] ... \|\| ... |
+| ifs.rb:54:1:58:3 | enter disjunct | ifs.rb:55:7:55:14 | [true] ... \|\| ... |
+| ifs.rb:54:1:58:3 | enter disjunct | ifs.rb:55:13:55:14 | b2 |
+| ifs.rb:54:1:58:3 | enter disjunct | ifs.rb:56:5:56:19 | self |
+| ifs.rb:55:3:57:5 | if ... | ifs.rb:55:3:57:5 | if ... |
+| ifs.rb:55:6:55:15 | [false] ( ... ) | ifs.rb:55:6:55:15 | [false] ( ... ) |
+| ifs.rb:55:6:55:15 | [true] ( ... ) | ifs.rb:55:6:55:15 | [true] ( ... ) |
+| ifs.rb:55:6:55:15 | [true] ( ... ) | ifs.rb:56:5:56:19 | self |
+| ifs.rb:55:7:55:14 | [false] ... \|\| ... | ifs.rb:55:6:55:15 | [false] ( ... ) |
+| ifs.rb:55:7:55:14 | [false] ... \|\| ... | ifs.rb:55:7:55:14 | [false] ... \|\| ... |
+| ifs.rb:55:7:55:14 | [true] ... \|\| ... | ifs.rb:55:6:55:15 | [true] ( ... ) |
+| ifs.rb:55:7:55:14 | [true] ... \|\| ... | ifs.rb:55:7:55:14 | [true] ... \|\| ... |
+| ifs.rb:55:7:55:14 | [true] ... \|\| ... | ifs.rb:56:5:56:19 | self |
+| ifs.rb:55:13:55:14 | b2 | ifs.rb:55:6:55:15 | [false] ( ... ) |
+| ifs.rb:55:13:55:14 | b2 | ifs.rb:55:7:55:14 | [false] ... \|\| ... |
+| ifs.rb:55:13:55:14 | b2 | ifs.rb:55:13:55:14 | b2 |
+| ifs.rb:56:5:56:19 | self | ifs.rb:56:5:56:19 | self |
+| loops.rb:1:1:6:3 | enter m1 | loops.rb:1:1:6:3 | enter m1 |
+| loops.rb:1:1:6:3 | enter m1 | loops.rb:2:3:5:5 | while ... |
+| loops.rb:1:1:6:3 | enter m1 | loops.rb:2:9:2:9 | x |
+| loops.rb:1:1:6:3 | enter m1 | loops.rb:3:5:3:10 | self |
+| loops.rb:1:1:33:4 | enter loops.rb | loops.rb:1:1:33:4 | enter loops.rb |
+| loops.rb:2:3:5:5 | while ... | loops.rb:2:3:5:5 | while ... |
+| loops.rb:2:9:2:9 | x | loops.rb:2:3:5:5 | while ... |
+| loops.rb:2:9:2:9 | x | loops.rb:2:9:2:9 | x |
+| loops.rb:2:9:2:9 | x | loops.rb:3:5:3:10 | self |
+| loops.rb:3:5:3:10 | self | loops.rb:3:5:3:10 | self |
+| loops.rb:8:1:22:3 | enter m2 | loops.rb:8:1:22:3 | enter m2 |
+| loops.rb:8:1:22:3 | enter m2 | loops.rb:9:3:20:5 | while ... |
+| loops.rb:8:1:22:3 | enter m2 | loops.rb:9:9:9:9 | x |
+| loops.rb:8:1:22:3 | enter m2 | loops.rb:10:5:10:10 | self |
+| loops.rb:8:1:22:3 | enter m2 | loops.rb:13:7:13:11 | break |
+| loops.rb:8:1:22:3 | enter m2 | loops.rb:14:11:14:11 | x |
+| loops.rb:8:1:22:3 | enter m2 | loops.rb:15:7:15:10 | next |
+| loops.rb:8:1:22:3 | enter m2 | loops.rb:16:5:17:10 | elsif ... |
+| loops.rb:8:1:22:3 | enter m2 | loops.rb:16:11:16:11 | x |
+| loops.rb:8:1:22:3 | enter m2 | loops.rb:17:7:17:10 | redo |
+| loops.rb:9:3:20:5 | while ... | loops.rb:9:3:20:5 | while ... |
+| loops.rb:9:9:9:9 | x | loops.rb:9:3:20:5 | while ... |
+| loops.rb:9:9:9:9 | x | loops.rb:9:9:9:9 | x |
+| loops.rb:9:9:9:9 | x | loops.rb:10:5:10:10 | self |
+| loops.rb:9:9:9:9 | x | loops.rb:13:7:13:11 | break |
+| loops.rb:9:9:9:9 | x | loops.rb:14:11:14:11 | x |
+| loops.rb:9:9:9:9 | x | loops.rb:15:7:15:10 | next |
+| loops.rb:9:9:9:9 | x | loops.rb:16:5:17:10 | elsif ... |
+| loops.rb:9:9:9:9 | x | loops.rb:16:11:16:11 | x |
+| loops.rb:9:9:9:9 | x | loops.rb:17:7:17:10 | redo |
+| loops.rb:10:5:10:10 | self | loops.rb:10:5:10:10 | self |
+| loops.rb:10:5:10:10 | self | loops.rb:13:7:13:11 | break |
+| loops.rb:10:5:10:10 | self | loops.rb:14:11:14:11 | x |
+| loops.rb:10:5:10:10 | self | loops.rb:15:7:15:10 | next |
+| loops.rb:10:5:10:10 | self | loops.rb:16:5:17:10 | elsif ... |
+| loops.rb:10:5:10:10 | self | loops.rb:16:11:16:11 | x |
+| loops.rb:10:5:10:10 | self | loops.rb:17:7:17:10 | redo |
+| loops.rb:13:7:13:11 | break | loops.rb:13:7:13:11 | break |
+| loops.rb:14:11:14:11 | x | loops.rb:14:11:14:11 | x |
+| loops.rb:14:11:14:11 | x | loops.rb:15:7:15:10 | next |
+| loops.rb:14:11:14:11 | x | loops.rb:16:5:17:10 | elsif ... |
+| loops.rb:14:11:14:11 | x | loops.rb:16:11:16:11 | x |
+| loops.rb:14:11:14:11 | x | loops.rb:17:7:17:10 | redo |
+| loops.rb:15:7:15:10 | next | loops.rb:15:7:15:10 | next |
+| loops.rb:16:5:17:10 | elsif ... | loops.rb:16:5:17:10 | elsif ... |
+| loops.rb:16:11:16:11 | x | loops.rb:16:5:17:10 | elsif ... |
+| loops.rb:16:11:16:11 | x | loops.rb:16:11:16:11 | x |
+| loops.rb:16:11:16:11 | x | loops.rb:17:7:17:10 | redo |
+| loops.rb:17:7:17:10 | redo | loops.rb:17:7:17:10 | redo |
+| loops.rb:24:1:28:3 | enter m3 | loops.rb:24:1:28:3 | enter m3 |
+| loops.rb:25:16:27:5 | enter do ... end | loops.rb:25:16:27:5 | enter do ... end |
+| loops.rb:30:1:33:3 | enter m4 | loops.rb:30:1:33:3 | enter m4 |
+| loops.rb:30:1:33:3 | enter m4 | loops.rb:31:3:32:5 | while ... |
+| loops.rb:30:1:33:3 | enter m4 | loops.rb:31:9:31:9 | x |
+| loops.rb:30:1:33:3 | enter m4 | loops.rb:31:15:32:5 | do ... |
+| loops.rb:31:3:32:5 | while ... | loops.rb:31:3:32:5 | while ... |
+| loops.rb:31:9:31:9 | x | loops.rb:31:3:32:5 | while ... |
+| loops.rb:31:9:31:9 | x | loops.rb:31:9:31:9 | x |
+| loops.rb:31:9:31:9 | x | loops.rb:31:15:32:5 | do ... |
+| loops.rb:31:15:32:5 | do ... | loops.rb:31:15:32:5 | do ... |
+| raise.rb:1:1:182:4 | enter raise.rb | raise.rb:1:1:182:4 | enter raise.rb |
+| raise.rb:7:1:12:3 | enter m1 | raise.rb:7:1:12:3 | enter m1 |
+| raise.rb:7:1:12:3 | enter m1 | raise.rb:7:1:12:3 | exit m1 |
+| raise.rb:7:1:12:3 | enter m1 | raise.rb:8:3:10:5 | if ... |
+| raise.rb:7:1:12:3 | enter m1 | raise.rb:9:5:9:17 | self |
+| raise.rb:7:1:12:3 | exit m1 | raise.rb:7:1:12:3 | exit m1 |
+| raise.rb:8:3:10:5 | if ... | raise.rb:8:3:10:5 | if ... |
+| raise.rb:9:5:9:17 | self | raise.rb:9:5:9:17 | self |
+| raise.rb:14:1:23:3 | enter m2 | raise.rb:14:1:23:3 | enter m2 |
+| raise.rb:14:1:23:3 | enter m2 | raise.rb:14:1:23:3 | exit m2 |
+| raise.rb:14:1:23:3 | enter m2 | raise.rb:14:1:23:3 | exit m2 (abnormal) |
+| raise.rb:14:1:23:3 | enter m2 | raise.rb:16:5:18:7 | if ... |
+| raise.rb:14:1:23:3 | enter m2 | raise.rb:17:7:17:22 | self |
+| raise.rb:14:1:23:3 | enter m2 | raise.rb:20:5:20:18 | self |
+| raise.rb:14:1:23:3 | enter m2 | raise.rb:22:3:22:15 | self |
+| raise.rb:14:1:23:3 | exit m2 | raise.rb:14:1:23:3 | exit m2 |
+| raise.rb:14:1:23:3 | exit m2 (abnormal) | raise.rb:14:1:23:3 | exit m2 (abnormal) |
+| raise.rb:16:5:18:7 | if ... | raise.rb:16:5:18:7 | if ... |
+| raise.rb:17:7:17:22 | self | raise.rb:14:1:23:3 | exit m2 (abnormal) |
+| raise.rb:17:7:17:22 | self | raise.rb:17:7:17:22 | self |
+| raise.rb:17:7:17:22 | self | raise.rb:20:5:20:18 | self |
+| raise.rb:20:5:20:18 | self | raise.rb:20:5:20:18 | self |
+| raise.rb:22:3:22:15 | self | raise.rb:22:3:22:15 | self |
+| raise.rb:25:1:34:3 | enter m3 | raise.rb:25:1:34:3 | enter m3 |
+| raise.rb:25:1:34:3 | enter m3 | raise.rb:27:5:29:7 | if ... |
+| raise.rb:25:1:34:3 | enter m3 | raise.rb:28:7:28:22 | self |
+| raise.rb:25:1:34:3 | enter m3 | raise.rb:33:3:33:15 | self |
+| raise.rb:27:5:29:7 | if ... | raise.rb:27:5:29:7 | if ... |
+| raise.rb:28:7:28:22 | self | raise.rb:28:7:28:22 | self |
+| raise.rb:33:3:33:15 | self | raise.rb:33:3:33:15 | self |
+| raise.rb:36:1:45:3 | enter m4 | raise.rb:36:1:45:3 | enter m4 |
+| raise.rb:36:1:45:3 | enter m4 | raise.rb:38:5:40:7 | if ... |
+| raise.rb:36:1:45:3 | enter m4 | raise.rb:39:7:39:22 | self |
+| raise.rb:36:1:45:3 | enter m4 | raise.rb:44:3:44:15 | self |
+| raise.rb:38:5:40:7 | if ... | raise.rb:38:5:40:7 | if ... |
+| raise.rb:39:7:39:22 | self | raise.rb:39:7:39:22 | self |
+| raise.rb:44:3:44:15 | self | raise.rb:44:3:44:15 | self |
+| raise.rb:47:1:55:3 | enter m5 | raise.rb:47:1:55:3 | enter m5 |
+| raise.rb:47:1:55:3 | enter m5 | raise.rb:49:5:51:7 | if ... |
+| raise.rb:47:1:55:3 | enter m5 | raise.rb:50:7:50:22 | self |
+| raise.rb:47:1:55:3 | enter m5 | raise.rb:54:3:54:15 | self |
+| raise.rb:49:5:51:7 | if ... | raise.rb:49:5:51:7 | if ... |
+| raise.rb:50:7:50:22 | self | raise.rb:50:7:50:22 | self |
+| raise.rb:54:3:54:15 | self | raise.rb:54:3:54:15 | self |
+| raise.rb:57:1:66:3 | enter m6 | raise.rb:57:1:66:3 | enter m6 |
+| raise.rb:57:1:66:3 | enter m6 | raise.rb:57:1:66:3 | exit m6 |
+| raise.rb:57:1:66:3 | enter m6 | raise.rb:57:1:66:3 | exit m6 (abnormal) |
+| raise.rb:57:1:66:3 | enter m6 | raise.rb:59:5:61:7 | if ... |
+| raise.rb:57:1:66:3 | enter m6 | raise.rb:60:7:60:22 | self |
+| raise.rb:57:1:66:3 | enter m6 | raise.rb:62:22:62:31 | ExceptionB |
+| raise.rb:57:1:66:3 | enter m6 | raise.rb:62:36:62:36 | e |
+| raise.rb:57:1:66:3 | enter m6 | raise.rb:65:3:65:15 | self |
+| raise.rb:57:1:66:3 | exit m6 | raise.rb:57:1:66:3 | exit m6 |
+| raise.rb:57:1:66:3 | exit m6 (abnormal) | raise.rb:57:1:66:3 | exit m6 (abnormal) |
+| raise.rb:59:5:61:7 | if ... | raise.rb:59:5:61:7 | if ... |
+| raise.rb:60:7:60:22 | self | raise.rb:57:1:66:3 | exit m6 (abnormal) |
+| raise.rb:60:7:60:22 | self | raise.rb:60:7:60:22 | self |
+| raise.rb:60:7:60:22 | self | raise.rb:62:22:62:31 | ExceptionB |
+| raise.rb:60:7:60:22 | self | raise.rb:62:36:62:36 | e |
+| raise.rb:62:22:62:31 | ExceptionB | raise.rb:57:1:66:3 | exit m6 (abnormal) |
+| raise.rb:62:22:62:31 | ExceptionB | raise.rb:62:22:62:31 | ExceptionB |
+| raise.rb:62:36:62:36 | e | raise.rb:62:36:62:36 | e |
+| raise.rb:65:3:65:15 | self | raise.rb:65:3:65:15 | self |
+| raise.rb:68:1:77:3 | enter m7 | raise.rb:68:1:77:3 | enter m7 |
+| raise.rb:68:1:77:3 | enter m7 | raise.rb:68:1:77:3 | exit m7 |
+| raise.rb:68:1:77:3 | enter m7 | raise.rb:68:1:77:3 | exit m7 (normal) |
+| raise.rb:68:1:77:3 | enter m7 | raise.rb:70:5:70:17 | self |
+| raise.rb:68:1:77:3 | enter m7 | raise.rb:71:3:72:18 | elsif ... |
+| raise.rb:68:1:77:3 | enter m7 | raise.rb:71:9:71:9 | x |
+| raise.rb:68:1:77:3 | enter m7 | raise.rb:72:13:72:17 | x < 0 |
+| raise.rb:68:1:77:3 | enter m7 | raise.rb:76:3:76:15 | [ensure: raise] self |
+| raise.rb:68:1:77:3 | enter m7 | raise.rb:76:3:76:15 | self |
+| raise.rb:68:1:77:3 | exit m7 | raise.rb:68:1:77:3 | exit m7 |
+| raise.rb:68:1:77:3 | exit m7 (normal) | raise.rb:68:1:77:3 | exit m7 (normal) |
+| raise.rb:70:5:70:17 | self | raise.rb:70:5:70:17 | self |
+| raise.rb:71:3:72:18 | elsif ... | raise.rb:71:3:72:18 | elsif ... |
+| raise.rb:71:3:72:18 | elsif ... | raise.rb:76:3:76:15 | self |
+| raise.rb:71:9:71:9 | x | raise.rb:68:1:77:3 | exit m7 (normal) |
+| raise.rb:71:9:71:9 | x | raise.rb:71:3:72:18 | elsif ... |
+| raise.rb:71:9:71:9 | x | raise.rb:71:9:71:9 | x |
+| raise.rb:71:9:71:9 | x | raise.rb:72:13:72:17 | x < 0 |
+| raise.rb:71:9:71:9 | x | raise.rb:76:3:76:15 | self |
+| raise.rb:72:13:72:17 | x < 0 | raise.rb:72:13:72:17 | x < 0 |
+| raise.rb:76:3:76:15 | [ensure: raise] self | raise.rb:76:3:76:15 | [ensure: raise] self |
+| raise.rb:76:3:76:15 | self | raise.rb:76:3:76:15 | self |
+| raise.rb:79:1:92:3 | enter m8 | raise.rb:79:1:92:3 | enter m8 |
+| raise.rb:79:1:92:3 | enter m8 | raise.rb:79:1:92:3 | exit m8 |
+| raise.rb:79:1:92:3 | enter m8 | raise.rb:79:1:92:3 | exit m8 (normal) |
+| raise.rb:79:1:92:3 | enter m8 | raise.rb:83:7:83:19 | self |
+| raise.rb:79:1:92:3 | enter m8 | raise.rb:84:5:85:20 | elsif ... |
+| raise.rb:79:1:92:3 | enter m8 | raise.rb:84:11:84:11 | x |
+| raise.rb:79:1:92:3 | enter m8 | raise.rb:85:15:85:19 | x < 0 |
+| raise.rb:79:1:92:3 | enter m8 | raise.rb:89:5:89:17 | [ensure: raise] self |
+| raise.rb:79:1:92:3 | enter m8 | raise.rb:89:5:89:17 | self |
+| raise.rb:79:1:92:3 | exit m8 | raise.rb:79:1:92:3 | exit m8 |
+| raise.rb:79:1:92:3 | exit m8 (normal) | raise.rb:79:1:92:3 | exit m8 (normal) |
+| raise.rb:83:7:83:19 | self | raise.rb:83:7:83:19 | self |
+| raise.rb:84:5:85:20 | elsif ... | raise.rb:84:5:85:20 | elsif ... |
+| raise.rb:84:5:85:20 | elsif ... | raise.rb:89:5:89:17 | self |
+| raise.rb:84:11:84:11 | x | raise.rb:79:1:92:3 | exit m8 (normal) |
+| raise.rb:84:11:84:11 | x | raise.rb:84:5:85:20 | elsif ... |
+| raise.rb:84:11:84:11 | x | raise.rb:84:11:84:11 | x |
+| raise.rb:84:11:84:11 | x | raise.rb:85:15:85:19 | x < 0 |
+| raise.rb:84:11:84:11 | x | raise.rb:89:5:89:17 | self |
+| raise.rb:85:15:85:19 | x < 0 | raise.rb:85:15:85:19 | x < 0 |
+| raise.rb:89:5:89:17 | [ensure: raise] self | raise.rb:89:5:89:17 | [ensure: raise] self |
+| raise.rb:89:5:89:17 | self | raise.rb:89:5:89:17 | self |
+| raise.rb:94:1:119:3 | enter m9 | raise.rb:94:1:119:3 | enter m9 |
+| raise.rb:94:1:119:3 | enter m9 | raise.rb:94:1:119:3 | exit m9 |
+| raise.rb:94:1:119:3 | enter m9 | raise.rb:94:1:119:3 | exit m9 (abnormal) |
+| raise.rb:94:1:119:3 | enter m9 | raise.rb:94:1:119:3 | exit m9 (normal) |
+| raise.rb:94:1:119:3 | enter m9 | raise.rb:97:8:97:8 | x |
+| raise.rb:94:1:119:3 | enter m9 | raise.rb:98:7:98:19 | self |
+| raise.rb:94:1:119:3 | enter m9 | raise.rb:99:5:100:20 | elsif ... |
+| raise.rb:94:1:119:3 | enter m9 | raise.rb:99:11:99:11 | x |
+| raise.rb:94:1:119:3 | enter m9 | raise.rb:100:15:100:19 | x < 0 |
+| raise.rb:94:1:119:3 | enter m9 | raise.rb:104:5:104:23 | [ensure: raise] self |
+| raise.rb:94:1:119:3 | enter m9 | raise.rb:104:5:104:23 | self |
+| raise.rb:94:1:119:3 | enter m9 | raise.rb:106:7:108:9 | [ensure: raise] if ... |
+| raise.rb:94:1:119:3 | enter m9 | raise.rb:106:7:108:9 | [ensure: return] if ... |
+| raise.rb:94:1:119:3 | enter m9 | raise.rb:106:7:108:9 | if ... |
+| raise.rb:94:1:119:3 | enter m9 | raise.rb:106:10:106:11 | [ensure: raise] b1 |
+| raise.rb:94:1:119:3 | enter m9 | raise.rb:106:10:106:11 | [ensure: return] b1 |
+| raise.rb:94:1:119:3 | enter m9 | raise.rb:106:10:106:11 | b1 |
+| raise.rb:94:1:119:3 | enter m9 | raise.rb:107:9:107:26 | [ensure: raise] self |
+| raise.rb:94:1:119:3 | enter m9 | raise.rb:107:9:107:26 | [ensure: return] self |
+| raise.rb:94:1:119:3 | enter m9 | raise.rb:107:9:107:26 | self |
+| raise.rb:94:1:119:3 | enter m9 | raise.rb:109:5:110:25 | [ensure(1): raise] ensure ... |
+| raise.rb:94:1:119:3 | enter m9 | raise.rb:109:5:110:25 | [ensure: raise, ensure(1): raise] ensure ... |
+| raise.rb:94:1:119:3 | enter m9 | raise.rb:109:5:110:25 | [ensure: raise] ensure ... |
+| raise.rb:94:1:119:3 | enter m9 | raise.rb:109:5:110:25 | [ensure: return, ensure(1): raise] ensure ... |
+| raise.rb:94:1:119:3 | enter m9 | raise.rb:109:5:110:25 | [ensure: return] ensure ... |
+| raise.rb:94:1:119:3 | enter m9 | raise.rb:109:5:110:25 | ensure ... |
+| raise.rb:94:1:119:3 | enter m9 | raise.rb:115:3:115:22 | [ensure: raise] self |
+| raise.rb:94:1:119:3 | enter m9 | raise.rb:115:3:115:22 | self |
+| raise.rb:94:1:119:3 | enter m9 | raise.rb:116:3:118:5 | [ensure: raise] if ... |
+| raise.rb:94:1:119:3 | enter m9 | raise.rb:116:3:118:5 | [ensure: return] if ... |
+| raise.rb:94:1:119:3 | enter m9 | raise.rb:116:3:118:5 | if ... |
+| raise.rb:94:1:119:3 | enter m9 | raise.rb:117:5:117:22 | [ensure: raise] self |
+| raise.rb:94:1:119:3 | enter m9 | raise.rb:117:5:117:22 | [ensure: return] self |
+| raise.rb:94:1:119:3 | enter m9 | raise.rb:117:5:117:22 | self |
+| raise.rb:94:1:119:3 | exit m9 | raise.rb:94:1:119:3 | exit m9 |
+| raise.rb:94:1:119:3 | exit m9 (abnormal) | raise.rb:94:1:119:3 | exit m9 (abnormal) |
+| raise.rb:94:1:119:3 | exit m9 (normal) | raise.rb:94:1:119:3 | exit m9 (normal) |
+| raise.rb:97:8:97:8 | x | raise.rb:94:1:119:3 | exit m9 (normal) |
+| raise.rb:97:8:97:8 | x | raise.rb:97:8:97:8 | x |
+| raise.rb:97:8:97:8 | x | raise.rb:98:7:98:19 | self |
+| raise.rb:97:8:97:8 | x | raise.rb:99:5:100:20 | elsif ... |
+| raise.rb:97:8:97:8 | x | raise.rb:99:11:99:11 | x |
+| raise.rb:97:8:97:8 | x | raise.rb:100:15:100:19 | x < 0 |
+| raise.rb:97:8:97:8 | x | raise.rb:104:5:104:23 | [ensure: raise] self |
+| raise.rb:97:8:97:8 | x | raise.rb:104:5:104:23 | self |
+| raise.rb:97:8:97:8 | x | raise.rb:106:7:108:9 | [ensure: raise] if ... |
+| raise.rb:97:8:97:8 | x | raise.rb:106:7:108:9 | [ensure: return] if ... |
+| raise.rb:97:8:97:8 | x | raise.rb:106:7:108:9 | if ... |
+| raise.rb:97:8:97:8 | x | raise.rb:106:10:106:11 | [ensure: raise] b1 |
+| raise.rb:97:8:97:8 | x | raise.rb:106:10:106:11 | [ensure: return] b1 |
+| raise.rb:97:8:97:8 | x | raise.rb:106:10:106:11 | b1 |
+| raise.rb:97:8:97:8 | x | raise.rb:107:9:107:26 | [ensure: raise] self |
+| raise.rb:97:8:97:8 | x | raise.rb:107:9:107:26 | [ensure: return] self |
+| raise.rb:97:8:97:8 | x | raise.rb:107:9:107:26 | self |
+| raise.rb:97:8:97:8 | x | raise.rb:109:5:110:25 | [ensure(1): raise] ensure ... |
+| raise.rb:97:8:97:8 | x | raise.rb:109:5:110:25 | [ensure: raise, ensure(1): raise] ensure ... |
+| raise.rb:97:8:97:8 | x | raise.rb:109:5:110:25 | [ensure: raise] ensure ... |
+| raise.rb:97:8:97:8 | x | raise.rb:109:5:110:25 | [ensure: return, ensure(1): raise] ensure ... |
+| raise.rb:97:8:97:8 | x | raise.rb:109:5:110:25 | [ensure: return] ensure ... |
+| raise.rb:97:8:97:8 | x | raise.rb:109:5:110:25 | ensure ... |
+| raise.rb:97:8:97:8 | x | raise.rb:115:3:115:22 | self |
+| raise.rb:97:8:97:8 | x | raise.rb:116:3:118:5 | [ensure: return] if ... |
+| raise.rb:97:8:97:8 | x | raise.rb:116:3:118:5 | if ... |
+| raise.rb:97:8:97:8 | x | raise.rb:117:5:117:22 | [ensure: return] self |
+| raise.rb:97:8:97:8 | x | raise.rb:117:5:117:22 | self |
+| raise.rb:98:7:98:19 | self | raise.rb:98:7:98:19 | self |
+| raise.rb:99:5:100:20 | elsif ... | raise.rb:99:5:100:20 | elsif ... |
+| raise.rb:99:5:100:20 | elsif ... | raise.rb:104:5:104:23 | self |
+| raise.rb:99:5:100:20 | elsif ... | raise.rb:106:7:108:9 | if ... |
+| raise.rb:99:5:100:20 | elsif ... | raise.rb:106:10:106:11 | b1 |
+| raise.rb:99:5:100:20 | elsif ... | raise.rb:107:9:107:26 | self |
+| raise.rb:99:5:100:20 | elsif ... | raise.rb:109:5:110:25 | [ensure(1): raise] ensure ... |
+| raise.rb:99:5:100:20 | elsif ... | raise.rb:109:5:110:25 | ensure ... |
+| raise.rb:99:5:100:20 | elsif ... | raise.rb:115:3:115:22 | self |
+| raise.rb:99:5:100:20 | elsif ... | raise.rb:116:3:118:5 | if ... |
+| raise.rb:99:5:100:20 | elsif ... | raise.rb:117:5:117:22 | self |
+| raise.rb:99:11:99:11 | x | raise.rb:94:1:119:3 | exit m9 (normal) |
+| raise.rb:99:11:99:11 | x | raise.rb:99:5:100:20 | elsif ... |
+| raise.rb:99:11:99:11 | x | raise.rb:99:11:99:11 | x |
+| raise.rb:99:11:99:11 | x | raise.rb:100:15:100:19 | x < 0 |
+| raise.rb:99:11:99:11 | x | raise.rb:104:5:104:23 | self |
+| raise.rb:99:11:99:11 | x | raise.rb:106:7:108:9 | [ensure: return] if ... |
+| raise.rb:99:11:99:11 | x | raise.rb:106:7:108:9 | if ... |
+| raise.rb:99:11:99:11 | x | raise.rb:106:10:106:11 | [ensure: return] b1 |
+| raise.rb:99:11:99:11 | x | raise.rb:106:10:106:11 | b1 |
+| raise.rb:99:11:99:11 | x | raise.rb:107:9:107:26 | [ensure: return] self |
+| raise.rb:99:11:99:11 | x | raise.rb:107:9:107:26 | self |
+| raise.rb:99:11:99:11 | x | raise.rb:109:5:110:25 | [ensure(1): raise] ensure ... |
+| raise.rb:99:11:99:11 | x | raise.rb:109:5:110:25 | [ensure: return, ensure(1): raise] ensure ... |
+| raise.rb:99:11:99:11 | x | raise.rb:109:5:110:25 | [ensure: return] ensure ... |
+| raise.rb:99:11:99:11 | x | raise.rb:109:5:110:25 | ensure ... |
+| raise.rb:99:11:99:11 | x | raise.rb:115:3:115:22 | self |
+| raise.rb:99:11:99:11 | x | raise.rb:116:3:118:5 | [ensure: return] if ... |
+| raise.rb:99:11:99:11 | x | raise.rb:116:3:118:5 | if ... |
+| raise.rb:99:11:99:11 | x | raise.rb:117:5:117:22 | [ensure: return] self |
+| raise.rb:99:11:99:11 | x | raise.rb:117:5:117:22 | self |
+| raise.rb:100:15:100:19 | x < 0 | raise.rb:100:15:100:19 | x < 0 |
+| raise.rb:100:15:100:19 | x < 0 | raise.rb:106:7:108:9 | [ensure: return] if ... |
+| raise.rb:100:15:100:19 | x < 0 | raise.rb:106:10:106:11 | [ensure: return] b1 |
+| raise.rb:100:15:100:19 | x < 0 | raise.rb:107:9:107:26 | [ensure: return] self |
+| raise.rb:100:15:100:19 | x < 0 | raise.rb:109:5:110:25 | [ensure: return, ensure(1): raise] ensure ... |
+| raise.rb:100:15:100:19 | x < 0 | raise.rb:109:5:110:25 | [ensure: return] ensure ... |
+| raise.rb:100:15:100:19 | x < 0 | raise.rb:116:3:118:5 | [ensure: return] if ... |
+| raise.rb:100:15:100:19 | x < 0 | raise.rb:117:5:117:22 | [ensure: return] self |
+| raise.rb:104:5:104:23 | [ensure: raise] self | raise.rb:104:5:104:23 | [ensure: raise] self |
+| raise.rb:104:5:104:23 | [ensure: raise] self | raise.rb:106:7:108:9 | [ensure: raise] if ... |
+| raise.rb:104:5:104:23 | [ensure: raise] self | raise.rb:106:10:106:11 | [ensure: raise] b1 |
+| raise.rb:104:5:104:23 | [ensure: raise] self | raise.rb:107:9:107:26 | [ensure: raise] self |
+| raise.rb:104:5:104:23 | [ensure: raise] self | raise.rb:109:5:110:25 | [ensure: raise, ensure(1): raise] ensure ... |
+| raise.rb:104:5:104:23 | [ensure: raise] self | raise.rb:109:5:110:25 | [ensure: raise] ensure ... |
+| raise.rb:104:5:104:23 | self | raise.rb:104:5:104:23 | self |
+| raise.rb:104:5:104:23 | self | raise.rb:106:7:108:9 | if ... |
+| raise.rb:104:5:104:23 | self | raise.rb:106:10:106:11 | b1 |
+| raise.rb:104:5:104:23 | self | raise.rb:107:9:107:26 | self |
+| raise.rb:104:5:104:23 | self | raise.rb:109:5:110:25 | [ensure(1): raise] ensure ... |
+| raise.rb:104:5:104:23 | self | raise.rb:109:5:110:25 | ensure ... |
+| raise.rb:104:5:104:23 | self | raise.rb:115:3:115:22 | self |
+| raise.rb:104:5:104:23 | self | raise.rb:116:3:118:5 | if ... |
+| raise.rb:104:5:104:23 | self | raise.rb:117:5:117:22 | self |
+| raise.rb:106:7:108:9 | [ensure: raise] if ... | raise.rb:106:7:108:9 | [ensure: raise] if ... |
+| raise.rb:106:7:108:9 | [ensure: raise] if ... | raise.rb:109:5:110:25 | [ensure: raise] ensure ... |
+| raise.rb:106:7:108:9 | [ensure: return] if ... | raise.rb:106:7:108:9 | [ensure: return] if ... |
+| raise.rb:106:7:108:9 | [ensure: return] if ... | raise.rb:109:5:110:25 | [ensure: return] ensure ... |
+| raise.rb:106:7:108:9 | [ensure: return] if ... | raise.rb:116:3:118:5 | [ensure: return] if ... |
+| raise.rb:106:7:108:9 | [ensure: return] if ... | raise.rb:117:5:117:22 | [ensure: return] self |
+| raise.rb:106:7:108:9 | if ... | raise.rb:106:7:108:9 | if ... |
+| raise.rb:106:7:108:9 | if ... | raise.rb:109:5:110:25 | ensure ... |
+| raise.rb:106:7:108:9 | if ... | raise.rb:115:3:115:22 | self |
+| raise.rb:106:7:108:9 | if ... | raise.rb:116:3:118:5 | if ... |
+| raise.rb:106:7:108:9 | if ... | raise.rb:117:5:117:22 | self |
+| raise.rb:106:10:106:11 | [ensure: raise] b1 | raise.rb:106:7:108:9 | [ensure: raise] if ... |
+| raise.rb:106:10:106:11 | [ensure: raise] b1 | raise.rb:106:10:106:11 | [ensure: raise] b1 |
+| raise.rb:106:10:106:11 | [ensure: raise] b1 | raise.rb:107:9:107:26 | [ensure: raise] self |
+| raise.rb:106:10:106:11 | [ensure: raise] b1 | raise.rb:109:5:110:25 | [ensure: raise, ensure(1): raise] ensure ... |
+| raise.rb:106:10:106:11 | [ensure: raise] b1 | raise.rb:109:5:110:25 | [ensure: raise] ensure ... |
+| raise.rb:106:10:106:11 | [ensure: return] b1 | raise.rb:106:7:108:9 | [ensure: return] if ... |
+| raise.rb:106:10:106:11 | [ensure: return] b1 | raise.rb:106:10:106:11 | [ensure: return] b1 |
+| raise.rb:106:10:106:11 | [ensure: return] b1 | raise.rb:107:9:107:26 | [ensure: return] self |
+| raise.rb:106:10:106:11 | [ensure: return] b1 | raise.rb:109:5:110:25 | [ensure: return, ensure(1): raise] ensure ... |
+| raise.rb:106:10:106:11 | [ensure: return] b1 | raise.rb:109:5:110:25 | [ensure: return] ensure ... |
+| raise.rb:106:10:106:11 | [ensure: return] b1 | raise.rb:116:3:118:5 | [ensure: return] if ... |
+| raise.rb:106:10:106:11 | [ensure: return] b1 | raise.rb:117:5:117:22 | [ensure: return] self |
+| raise.rb:106:10:106:11 | b1 | raise.rb:106:7:108:9 | if ... |
+| raise.rb:106:10:106:11 | b1 | raise.rb:106:10:106:11 | b1 |
+| raise.rb:106:10:106:11 | b1 | raise.rb:107:9:107:26 | self |
+| raise.rb:106:10:106:11 | b1 | raise.rb:109:5:110:25 | [ensure(1): raise] ensure ... |
+| raise.rb:106:10:106:11 | b1 | raise.rb:109:5:110:25 | ensure ... |
+| raise.rb:106:10:106:11 | b1 | raise.rb:115:3:115:22 | self |
+| raise.rb:106:10:106:11 | b1 | raise.rb:116:3:118:5 | if ... |
+| raise.rb:106:10:106:11 | b1 | raise.rb:117:5:117:22 | self |
+| raise.rb:107:9:107:26 | [ensure: raise] self | raise.rb:107:9:107:26 | [ensure: raise] self |
+| raise.rb:107:9:107:26 | [ensure: raise] self | raise.rb:109:5:110:25 | [ensure: raise, ensure(1): raise] ensure ... |
+| raise.rb:107:9:107:26 | [ensure: return] self | raise.rb:107:9:107:26 | [ensure: return] self |
+| raise.rb:107:9:107:26 | [ensure: return] self | raise.rb:109:5:110:25 | [ensure: return, ensure(1): raise] ensure ... |
+| raise.rb:107:9:107:26 | self | raise.rb:107:9:107:26 | self |
+| raise.rb:107:9:107:26 | self | raise.rb:109:5:110:25 | [ensure(1): raise] ensure ... |
+| raise.rb:109:5:110:25 | [ensure(1): raise] ensure ... | raise.rb:109:5:110:25 | [ensure(1): raise] ensure ... |
+| raise.rb:109:5:110:25 | [ensure: raise, ensure(1): raise] ensure ... | raise.rb:109:5:110:25 | [ensure: raise, ensure(1): raise] ensure ... |
+| raise.rb:109:5:110:25 | [ensure: raise] ensure ... | raise.rb:109:5:110:25 | [ensure: raise] ensure ... |
+| raise.rb:109:5:110:25 | [ensure: return, ensure(1): raise] ensure ... | raise.rb:109:5:110:25 | [ensure: return, ensure(1): raise] ensure ... |
+| raise.rb:109:5:110:25 | [ensure: return] ensure ... | raise.rb:109:5:110:25 | [ensure: return] ensure ... |
+| raise.rb:109:5:110:25 | [ensure: return] ensure ... | raise.rb:116:3:118:5 | [ensure: return] if ... |
+| raise.rb:109:5:110:25 | [ensure: return] ensure ... | raise.rb:117:5:117:22 | [ensure: return] self |
+| raise.rb:109:5:110:25 | ensure ... | raise.rb:109:5:110:25 | ensure ... |
+| raise.rb:109:5:110:25 | ensure ... | raise.rb:115:3:115:22 | self |
+| raise.rb:109:5:110:25 | ensure ... | raise.rb:116:3:118:5 | if ... |
+| raise.rb:109:5:110:25 | ensure ... | raise.rb:117:5:117:22 | self |
+| raise.rb:115:3:115:22 | [ensure: raise] self | raise.rb:115:3:115:22 | [ensure: raise] self |
+| raise.rb:115:3:115:22 | [ensure: raise] self | raise.rb:116:3:118:5 | [ensure: raise] if ... |
+| raise.rb:115:3:115:22 | [ensure: raise] self | raise.rb:117:5:117:22 | [ensure: raise] self |
+| raise.rb:115:3:115:22 | self | raise.rb:115:3:115:22 | self |
+| raise.rb:115:3:115:22 | self | raise.rb:116:3:118:5 | if ... |
+| raise.rb:115:3:115:22 | self | raise.rb:117:5:117:22 | self |
+| raise.rb:116:3:118:5 | [ensure: raise] if ... | raise.rb:116:3:118:5 | [ensure: raise] if ... |
+| raise.rb:116:3:118:5 | [ensure: return] if ... | raise.rb:116:3:118:5 | [ensure: return] if ... |
+| raise.rb:116:3:118:5 | if ... | raise.rb:116:3:118:5 | if ... |
+| raise.rb:117:5:117:22 | [ensure: raise] self | raise.rb:117:5:117:22 | [ensure: raise] self |
+| raise.rb:117:5:117:22 | [ensure: return] self | raise.rb:117:5:117:22 | [ensure: return] self |
+| raise.rb:117:5:117:22 | self | raise.rb:117:5:117:22 | self |
+| raise.rb:121:1:126:3 | enter m10 | raise.rb:121:1:126:3 | enter m10 |
+| raise.rb:121:1:126:3 | enter m10 | raise.rb:121:1:126:3 | exit m10 |
+| raise.rb:121:1:126:3 | enter m10 | raise.rb:121:14:121:30 | self |
+| raise.rb:121:1:126:3 | enter m10 | raise.rb:125:3:125:51 | self |
+| raise.rb:121:1:126:3 | exit m10 | raise.rb:121:1:126:3 | exit m10 |
+| raise.rb:121:14:121:30 | self | raise.rb:121:14:121:30 | self |
+| raise.rb:125:3:125:51 | self | raise.rb:125:3:125:51 | self |
+| raise.rb:128:1:140:3 | enter m11 | raise.rb:128:1:140:3 | enter m11 |
+| raise.rb:128:1:140:3 | enter m11 | raise.rb:128:1:140:3 | exit m11 |
+| raise.rb:128:1:140:3 | enter m11 | raise.rb:130:5:132:7 | if ... |
+| raise.rb:128:1:140:3 | enter m11 | raise.rb:131:7:131:22 | self |
+| raise.rb:128:1:140:3 | enter m11 | raise.rb:133:3:133:19 | rescue ... |
+| raise.rb:128:1:140:3 | enter m11 | raise.rb:134:10:134:19 | ExceptionB |
+| raise.rb:128:1:140:3 | enter m11 | raise.rb:135:5:135:21 | self |
+| raise.rb:128:1:140:3 | enter m11 | raise.rb:137:5:137:17 | [ensure: raise] self |
+| raise.rb:128:1:140:3 | enter m11 | raise.rb:137:5:137:17 | self |
+| raise.rb:128:1:140:3 | exit m11 | raise.rb:128:1:140:3 | exit m11 |
+| raise.rb:130:5:132:7 | if ... | raise.rb:130:5:132:7 | if ... |
+| raise.rb:131:7:131:22 | self | raise.rb:131:7:131:22 | self |
+| raise.rb:131:7:131:22 | self | raise.rb:133:3:133:19 | rescue ... |
+| raise.rb:131:7:131:22 | self | raise.rb:134:10:134:19 | ExceptionB |
+| raise.rb:131:7:131:22 | self | raise.rb:135:5:135:21 | self |
+| raise.rb:131:7:131:22 | self | raise.rb:137:5:137:17 | [ensure: raise] self |
+| raise.rb:133:3:133:19 | rescue ... | raise.rb:133:3:133:19 | rescue ... |
+| raise.rb:134:10:134:19 | ExceptionB | raise.rb:134:10:134:19 | ExceptionB |
+| raise.rb:134:10:134:19 | ExceptionB | raise.rb:135:5:135:21 | self |
+| raise.rb:134:10:134:19 | ExceptionB | raise.rb:137:5:137:17 | [ensure: raise] self |
+| raise.rb:135:5:135:21 | self | raise.rb:135:5:135:21 | self |
+| raise.rb:137:5:137:17 | [ensure: raise] self | raise.rb:137:5:137:17 | [ensure: raise] self |
+| raise.rb:137:5:137:17 | self | raise.rb:137:5:137:17 | self |
+| raise.rb:142:1:148:3 | enter m12 | raise.rb:142:1:148:3 | enter m12 |
+| raise.rb:142:1:148:3 | enter m12 | raise.rb:142:1:148:3 | exit m12 (normal) |
+| raise.rb:142:1:148:3 | enter m12 | raise.rb:143:3:145:5 | if ... |
+| raise.rb:142:1:148:3 | enter m12 | raise.rb:144:5:144:12 | self |
+| raise.rb:142:1:148:3 | exit m12 (normal) | raise.rb:142:1:148:3 | exit m12 (normal) |
+| raise.rb:143:3:145:5 | if ... | raise.rb:143:3:145:5 | if ... |
+| raise.rb:144:5:144:12 | self | raise.rb:144:5:144:12 | self |
+| raise.rb:150:1:152:3 | enter m13 | raise.rb:150:1:152:3 | enter m13 |
+| raise.rb:154:1:156:3 | enter m14 | raise.rb:154:1:156:3 | enter m14 |
+| raise.rb:155:16:155:50 | enter { ... } | raise.rb:155:16:155:50 | enter { ... } |
+| raise.rb:155:16:155:50 | enter { ... } | raise.rb:155:16:155:50 | exit { ... } |
+| raise.rb:155:16:155:50 | enter { ... } | raise.rb:155:25:155:32 | self |
+| raise.rb:155:16:155:50 | enter { ... } | raise.rb:155:25:155:48 | ... if ... |
+| raise.rb:155:16:155:50 | exit { ... } | raise.rb:155:16:155:50 | exit { ... } |
+| raise.rb:155:25:155:32 | self | raise.rb:155:25:155:32 | self |
+| raise.rb:155:25:155:48 | ... if ... | raise.rb:155:25:155:48 | ... if ... |
+| raise.rb:158:1:164:3 | enter m15 | raise.rb:158:1:164:3 | enter m15 |
+| raise.rb:159:7:163:5 | enter do ... end | raise.rb:159:7:163:5 | enter do ... end |
+| raise.rb:160:9:162:7 | enter -> { ... } | raise.rb:160:9:162:7 | enter -> { ... } |
+| raise.rb:160:9:162:7 | enter -> { ... } | raise.rb:160:9:162:7 | exit -> { ... } |
+| raise.rb:160:9:162:7 | enter -> { ... } | raise.rb:161:7:161:14 | self |
+| raise.rb:160:9:162:7 | enter -> { ... } | raise.rb:161:7:161:23 | ... unless ... |
+| raise.rb:160:9:162:7 | exit -> { ... } | raise.rb:160:9:162:7 | exit -> { ... } |
+| raise.rb:161:7:161:14 | self | raise.rb:161:7:161:14 | self |
+| raise.rb:161:7:161:23 | ... unless ... | raise.rb:161:7:161:23 | ... unless ... |
+| raise.rb:167:3:169:5 | enter m | raise.rb:167:3:169:5 | enter m |
+| raise.rb:172:1:182:3 | enter m16 | raise.rb:172:1:182:3 | enter m16 |
+| raise.rb:172:1:182:3 | enter m16 | raise.rb:172:1:182:3 | exit m16 |
+| raise.rb:172:1:182:3 | enter m16 | raise.rb:172:1:182:3 | exit m16 (abnormal) |
+| raise.rb:172:1:182:3 | enter m16 | raise.rb:172:1:182:3 | exit m16 (normal) |
+| raise.rb:172:1:182:3 | enter m16 | raise.rb:174:8:174:23 | [false] ... \|\| ... |
+| raise.rb:172:1:182:3 | enter m16 | raise.rb:174:8:174:23 | [true] ... \|\| ... |
+| raise.rb:172:1:182:3 | enter m16 | raise.rb:174:14:174:15 | b2 |
+| raise.rb:172:1:182:3 | enter m16 | raise.rb:175:14:175:14 | 1 |
+| raise.rb:172:1:182:3 | enter m16 | raise.rb:177:14:177:14 | 2 |
+| raise.rb:172:1:182:3 | enter m16 | raise.rb:179:10:179:19 | ExceptionA |
+| raise.rb:172:1:182:3 | enter m16 | raise.rb:180:12:180:12 | 3 |
+| raise.rb:172:1:182:3 | exit m16 | raise.rb:172:1:182:3 | exit m16 |
+| raise.rb:172:1:182:3 | exit m16 (abnormal) | raise.rb:172:1:182:3 | exit m16 (abnormal) |
+| raise.rb:172:1:182:3 | exit m16 (normal) | raise.rb:172:1:182:3 | exit m16 (normal) |
+| raise.rb:174:8:174:23 | [false] ... \|\| ... | raise.rb:174:8:174:23 | [false] ... \|\| ... |
+| raise.rb:174:8:174:23 | [false] ... \|\| ... | raise.rb:177:14:177:14 | 2 |
+| raise.rb:174:8:174:23 | [true] ... \|\| ... | raise.rb:174:8:174:23 | [true] ... \|\| ... |
+| raise.rb:174:8:174:23 | [true] ... \|\| ... | raise.rb:175:14:175:14 | 1 |
+| raise.rb:174:14:174:15 | b2 | raise.rb:174:8:174:23 | [false] ... \|\| ... |
+| raise.rb:174:14:174:15 | b2 | raise.rb:174:14:174:15 | b2 |
+| raise.rb:174:14:174:15 | b2 | raise.rb:177:14:177:14 | 2 |
+| raise.rb:175:14:175:14 | 1 | raise.rb:175:14:175:14 | 1 |
+| raise.rb:177:14:177:14 | 2 | raise.rb:177:14:177:14 | 2 |
+| raise.rb:179:10:179:19 | ExceptionA | raise.rb:172:1:182:3 | exit m16 (abnormal) |
+| raise.rb:179:10:179:19 | ExceptionA | raise.rb:179:10:179:19 | ExceptionA |
+| raise.rb:179:10:179:19 | ExceptionA | raise.rb:180:12:180:12 | 3 |
+| raise.rb:180:12:180:12 | 3 | raise.rb:180:12:180:12 | 3 |
+postDominance
+| break_ensure.rb:1:1:11:3 | enter m1 | break_ensure.rb:1:1:11:3 | enter m1 |
+| break_ensure.rb:1:1:11:3 | exit m1 | break_ensure.rb:1:1:11:3 | exit m1 |
+| break_ensure.rb:1:1:56:4 | enter break_ensure.rb | break_ensure.rb:1:1:56:4 | enter break_ensure.rb |
+| break_ensure.rb:2:3:6:5 | while ... | break_ensure.rb:1:1:11:3 | enter m1 |
+| break_ensure.rb:2:3:6:5 | while ... | break_ensure.rb:2:3:6:5 | while ... |
+| break_ensure.rb:2:3:6:5 | while ... | break_ensure.rb:2:9:2:9 | x |
+| break_ensure.rb:2:3:6:5 | while ... | break_ensure.rb:3:5:5:7 | if ... |
+| break_ensure.rb:2:3:6:5 | while ... | break_ensure.rb:3:8:3:8 | x |
+| break_ensure.rb:2:3:6:5 | while ... | break_ensure.rb:4:7:4:11 | break |
+| break_ensure.rb:2:9:2:9 | x | break_ensure.rb:1:1:11:3 | enter m1 |
+| break_ensure.rb:2:9:2:9 | x | break_ensure.rb:2:9:2:9 | x |
+| break_ensure.rb:2:9:2:9 | x | break_ensure.rb:3:5:5:7 | if ... |
+| break_ensure.rb:3:5:5:7 | if ... | break_ensure.rb:3:5:5:7 | if ... |
+| break_ensure.rb:3:8:3:8 | x | break_ensure.rb:3:8:3:8 | x |
+| break_ensure.rb:4:7:4:11 | break | break_ensure.rb:4:7:4:11 | break |
+| break_ensure.rb:8:3:10:5 | [ensure: raise] if ... | break_ensure.rb:8:3:10:5 | [ensure: raise] if ... |
+| break_ensure.rb:8:3:10:5 | if ... | break_ensure.rb:1:1:11:3 | enter m1 |
+| break_ensure.rb:8:3:10:5 | if ... | break_ensure.rb:2:3:6:5 | while ... |
+| break_ensure.rb:8:3:10:5 | if ... | break_ensure.rb:2:9:2:9 | x |
+| break_ensure.rb:8:3:10:5 | if ... | break_ensure.rb:3:5:5:7 | if ... |
+| break_ensure.rb:8:3:10:5 | if ... | break_ensure.rb:3:8:3:8 | x |
+| break_ensure.rb:8:3:10:5 | if ... | break_ensure.rb:4:7:4:11 | break |
+| break_ensure.rb:8:3:10:5 | if ... | break_ensure.rb:8:3:10:5 | if ... |
+| break_ensure.rb:8:3:10:5 | if ... | break_ensure.rb:9:5:9:23 | self |
+| break_ensure.rb:8:6:8:13 | [ensure: raise] self | break_ensure.rb:8:6:8:13 | [ensure: raise] self |
+| break_ensure.rb:9:5:9:23 | [ensure: raise] self | break_ensure.rb:9:5:9:23 | [ensure: raise] self |
+| break_ensure.rb:9:5:9:23 | self | break_ensure.rb:9:5:9:23 | self |
+| break_ensure.rb:13:1:25:3 | enter m2 | break_ensure.rb:13:1:25:3 | enter m2 |
+| break_ensure.rb:14:3:24:5 | while ... | break_ensure.rb:13:1:25:3 | enter m2 |
+| break_ensure.rb:14:3:24:5 | while ... | break_ensure.rb:14:3:24:5 | while ... |
+| break_ensure.rb:14:3:24:5 | while ... | break_ensure.rb:14:9:14:9 | x |
+| break_ensure.rb:14:3:24:5 | while ... | break_ensure.rb:16:7:18:9 | if ... |
+| break_ensure.rb:14:3:24:5 | while ... | break_ensure.rb:16:10:16:10 | x |
+| break_ensure.rb:14:3:24:5 | while ... | break_ensure.rb:17:9:17:13 | break |
+| break_ensure.rb:14:3:24:5 | while ... | break_ensure.rb:20:7:22:9 | [ensure: break] if ... |
+| break_ensure.rb:14:3:24:5 | while ... | break_ensure.rb:20:7:22:9 | [ensure: raise] if ... |
+| break_ensure.rb:14:3:24:5 | while ... | break_ensure.rb:20:7:22:9 | if ... |
+| break_ensure.rb:14:3:24:5 | while ... | break_ensure.rb:20:10:20:10 | [ensure: raise] y |
+| break_ensure.rb:14:3:24:5 | while ... | break_ensure.rb:21:9:21:20 | [ensure: break] self |
+| break_ensure.rb:14:3:24:5 | while ... | break_ensure.rb:21:9:21:20 | [ensure: raise] self |
+| break_ensure.rb:14:3:24:5 | while ... | break_ensure.rb:21:9:21:20 | self |
+| break_ensure.rb:14:9:14:9 | x | break_ensure.rb:13:1:25:3 | enter m2 |
+| break_ensure.rb:14:9:14:9 | x | break_ensure.rb:14:9:14:9 | x |
+| break_ensure.rb:14:9:14:9 | x | break_ensure.rb:16:7:18:9 | if ... |
+| break_ensure.rb:14:9:14:9 | x | break_ensure.rb:20:7:22:9 | if ... |
+| break_ensure.rb:14:9:14:9 | x | break_ensure.rb:21:9:21:20 | self |
+| break_ensure.rb:16:7:18:9 | if ... | break_ensure.rb:16:7:18:9 | if ... |
+| break_ensure.rb:16:10:16:10 | x | break_ensure.rb:16:10:16:10 | x |
+| break_ensure.rb:17:9:17:13 | break | break_ensure.rb:17:9:17:13 | break |
+| break_ensure.rb:20:7:22:9 | [ensure: break] if ... | break_ensure.rb:17:9:17:13 | break |
+| break_ensure.rb:20:7:22:9 | [ensure: break] if ... | break_ensure.rb:20:7:22:9 | [ensure: break] if ... |
+| break_ensure.rb:20:7:22:9 | [ensure: break] if ... | break_ensure.rb:21:9:21:20 | [ensure: break] self |
+| break_ensure.rb:20:7:22:9 | [ensure: raise] if ... | break_ensure.rb:20:7:22:9 | [ensure: raise] if ... |
+| break_ensure.rb:20:7:22:9 | [ensure: raise] if ... | break_ensure.rb:20:10:20:10 | [ensure: raise] y |
+| break_ensure.rb:20:7:22:9 | [ensure: raise] if ... | break_ensure.rb:21:9:21:20 | [ensure: raise] self |
+| break_ensure.rb:20:7:22:9 | if ... | break_ensure.rb:16:7:18:9 | if ... |
+| break_ensure.rb:20:7:22:9 | if ... | break_ensure.rb:20:7:22:9 | if ... |
+| break_ensure.rb:20:7:22:9 | if ... | break_ensure.rb:21:9:21:20 | self |
+| break_ensure.rb:20:10:20:10 | [ensure: raise] y | break_ensure.rb:20:10:20:10 | [ensure: raise] y |
+| break_ensure.rb:21:9:21:20 | [ensure: break] self | break_ensure.rb:21:9:21:20 | [ensure: break] self |
+| break_ensure.rb:21:9:21:20 | [ensure: raise] self | break_ensure.rb:21:9:21:20 | [ensure: raise] self |
+| break_ensure.rb:21:9:21:20 | self | break_ensure.rb:21:9:21:20 | self |
+| break_ensure.rb:27:1:42:3 | enter m3 | break_ensure.rb:27:1:42:3 | enter m3 |
+| break_ensure.rb:27:1:42:3 | exit m3 | break_ensure.rb:27:1:42:3 | exit m3 |
+| break_ensure.rb:27:1:42:3 | exit m3 (normal) | break_ensure.rb:27:1:42:3 | enter m3 |
+| break_ensure.rb:27:1:42:3 | exit m3 (normal) | break_ensure.rb:27:1:42:3 | exit m3 (normal) |
+| break_ensure.rb:27:1:42:3 | exit m3 (normal) | break_ensure.rb:29:5:31:7 | if ... |
+| break_ensure.rb:27:1:42:3 | exit m3 (normal) | break_ensure.rb:30:7:30:12 | return |
+| break_ensure.rb:27:1:42:3 | exit m3 (normal) | break_ensure.rb:33:5:39:7 | [ensure: return] while ... |
+| break_ensure.rb:27:1:42:3 | exit m3 (normal) | break_ensure.rb:33:5:39:7 | while ... |
+| break_ensure.rb:27:1:42:3 | exit m3 (normal) | break_ensure.rb:33:11:33:11 | [ensure: return] y |
+| break_ensure.rb:27:1:42:3 | exit m3 (normal) | break_ensure.rb:33:11:33:11 | y |
+| break_ensure.rb:27:1:42:3 | exit m3 (normal) | break_ensure.rb:35:9:37:11 | [ensure: return] if ... |
+| break_ensure.rb:27:1:42:3 | exit m3 (normal) | break_ensure.rb:35:9:37:11 | if ... |
+| break_ensure.rb:27:1:42:3 | exit m3 (normal) | break_ensure.rb:35:12:35:12 | [ensure: return] x |
+| break_ensure.rb:27:1:42:3 | exit m3 (normal) | break_ensure.rb:35:12:35:12 | x |
+| break_ensure.rb:27:1:42:3 | exit m3 (normal) | break_ensure.rb:36:11:36:15 | [ensure: return] break |
+| break_ensure.rb:27:1:42:3 | exit m3 (normal) | break_ensure.rb:36:11:36:15 | break |
+| break_ensure.rb:29:5:31:7 | if ... | break_ensure.rb:29:5:31:7 | if ... |
+| break_ensure.rb:30:7:30:12 | return | break_ensure.rb:30:7:30:12 | return |
+| break_ensure.rb:33:5:39:7 | [ensure: raise] while ... | break_ensure.rb:33:5:39:7 | [ensure: raise] while ... |
+| break_ensure.rb:33:5:39:7 | [ensure: return] while ... | break_ensure.rb:30:7:30:12 | return |
+| break_ensure.rb:33:5:39:7 | [ensure: return] while ... | break_ensure.rb:33:5:39:7 | [ensure: return] while ... |
+| break_ensure.rb:33:5:39:7 | [ensure: return] while ... | break_ensure.rb:33:11:33:11 | [ensure: return] y |
+| break_ensure.rb:33:5:39:7 | [ensure: return] while ... | break_ensure.rb:35:9:37:11 | [ensure: return] if ... |
+| break_ensure.rb:33:5:39:7 | [ensure: return] while ... | break_ensure.rb:35:12:35:12 | [ensure: return] x |
+| break_ensure.rb:33:5:39:7 | [ensure: return] while ... | break_ensure.rb:36:11:36:15 | [ensure: return] break |
+| break_ensure.rb:33:5:39:7 | while ... | break_ensure.rb:29:5:31:7 | if ... |
+| break_ensure.rb:33:5:39:7 | while ... | break_ensure.rb:33:5:39:7 | while ... |
+| break_ensure.rb:33:5:39:7 | while ... | break_ensure.rb:33:11:33:11 | y |
+| break_ensure.rb:33:5:39:7 | while ... | break_ensure.rb:35:9:37:11 | if ... |
+| break_ensure.rb:33:5:39:7 | while ... | break_ensure.rb:35:12:35:12 | x |
+| break_ensure.rb:33:5:39:7 | while ... | break_ensure.rb:36:11:36:15 | break |
+| break_ensure.rb:33:11:33:11 | [ensure: raise] y | break_ensure.rb:33:11:33:11 | [ensure: raise] y |
+| break_ensure.rb:33:11:33:11 | [ensure: return] y | break_ensure.rb:30:7:30:12 | return |
+| break_ensure.rb:33:11:33:11 | [ensure: return] y | break_ensure.rb:33:11:33:11 | [ensure: return] y |
+| break_ensure.rb:33:11:33:11 | [ensure: return] y | break_ensure.rb:35:9:37:11 | [ensure: return] if ... |
+| break_ensure.rb:33:11:33:11 | y | break_ensure.rb:29:5:31:7 | if ... |
+| break_ensure.rb:33:11:33:11 | y | break_ensure.rb:33:11:33:11 | y |
+| break_ensure.rb:33:11:33:11 | y | break_ensure.rb:35:9:37:11 | if ... |
+| break_ensure.rb:35:9:37:11 | [ensure: raise] if ... | break_ensure.rb:35:9:37:11 | [ensure: raise] if ... |
+| break_ensure.rb:35:9:37:11 | [ensure: return] if ... | break_ensure.rb:35:9:37:11 | [ensure: return] if ... |
+| break_ensure.rb:35:9:37:11 | if ... | break_ensure.rb:35:9:37:11 | if ... |
+| break_ensure.rb:35:12:35:12 | [ensure: raise] x | break_ensure.rb:35:12:35:12 | [ensure: raise] x |
+| break_ensure.rb:35:12:35:12 | [ensure: return] x | break_ensure.rb:35:12:35:12 | [ensure: return] x |
+| break_ensure.rb:35:12:35:12 | x | break_ensure.rb:35:12:35:12 | x |
+| break_ensure.rb:36:11:36:15 | [ensure: raise] break | break_ensure.rb:36:11:36:15 | [ensure: raise] break |
+| break_ensure.rb:36:11:36:15 | [ensure: return] break | break_ensure.rb:36:11:36:15 | [ensure: return] break |
+| break_ensure.rb:36:11:36:15 | break | break_ensure.rb:36:11:36:15 | break |
+| break_ensure.rb:44:1:56:3 | enter m4 | break_ensure.rb:44:1:56:3 | enter m4 |
+| break_ensure.rb:45:3:55:5 | while ... | break_ensure.rb:44:1:56:3 | enter m4 |
+| break_ensure.rb:45:3:55:5 | while ... | break_ensure.rb:45:3:55:5 | while ... |
+| break_ensure.rb:45:3:55:5 | while ... | break_ensure.rb:45:9:45:9 | x |
+| break_ensure.rb:45:3:55:5 | while ... | break_ensure.rb:47:7:49:9 | if ... |
+| break_ensure.rb:45:3:55:5 | while ... | break_ensure.rb:47:10:47:10 | x |
+| break_ensure.rb:45:3:55:5 | while ... | break_ensure.rb:48:9:48:16 | self |
+| break_ensure.rb:45:3:55:5 | while ... | break_ensure.rb:51:7:53:9 | [ensure: raise] if ... |
+| break_ensure.rb:45:3:55:5 | while ... | break_ensure.rb:51:7:53:9 | if ... |
+| break_ensure.rb:45:3:55:5 | while ... | break_ensure.rb:51:10:51:10 | [ensure: raise] x |
+| break_ensure.rb:45:3:55:5 | while ... | break_ensure.rb:52:15:52:16 | 10 |
+| break_ensure.rb:45:3:55:5 | while ... | break_ensure.rb:52:15:52:16 | [ensure: raise] 10 |
+| break_ensure.rb:45:9:45:9 | x | break_ensure.rb:44:1:56:3 | enter m4 |
+| break_ensure.rb:45:9:45:9 | x | break_ensure.rb:45:9:45:9 | x |
+| break_ensure.rb:45:9:45:9 | x | break_ensure.rb:51:7:53:9 | if ... |
+| break_ensure.rb:47:7:49:9 | if ... | break_ensure.rb:47:7:49:9 | if ... |
+| break_ensure.rb:47:10:47:10 | x | break_ensure.rb:47:10:47:10 | x |
+| break_ensure.rb:48:9:48:16 | self | break_ensure.rb:48:9:48:16 | self |
+| break_ensure.rb:51:7:53:9 | [ensure: raise] if ... | break_ensure.rb:51:7:53:9 | [ensure: raise] if ... |
+| break_ensure.rb:51:7:53:9 | if ... | break_ensure.rb:51:7:53:9 | if ... |
+| break_ensure.rb:51:10:51:10 | [ensure: raise] x | break_ensure.rb:48:9:48:16 | self |
+| break_ensure.rb:51:10:51:10 | [ensure: raise] x | break_ensure.rb:51:10:51:10 | [ensure: raise] x |
+| break_ensure.rb:52:15:52:16 | 10 | break_ensure.rb:52:15:52:16 | 10 |
+| break_ensure.rb:52:15:52:16 | [ensure: raise] 10 | break_ensure.rb:52:15:52:16 | [ensure: raise] 10 |
+| case.rb:1:1:6:3 | enter if_in_case | case.rb:1:1:6:3 | enter if_in_case |
+| case.rb:1:1:99:4 | enter case.rb | case.rb:1:1:99:4 | enter case.rb |
+| case.rb:2:3:5:5 | case ... | case.rb:1:1:6:3 | enter if_in_case |
+| case.rb:2:3:5:5 | case ... | case.rb:2:3:5:5 | case ... |
+| case.rb:2:3:5:5 | case ... | case.rb:3:5:3:42 | [match] when ... |
+| case.rb:2:3:5:5 | case ... | case.rb:3:5:3:42 | [no-match] when ... |
+| case.rb:2:3:5:5 | case ... | case.rb:3:18:3:41 | if ... |
+| case.rb:2:3:5:5 | case ... | case.rb:3:21:3:22 | self |
+| case.rb:2:3:5:5 | case ... | case.rb:3:29:3:37 | self |
+| case.rb:2:3:5:5 | case ... | case.rb:4:5:4:24 | [match] when ... |
+| case.rb:2:3:5:5 | case ... | case.rb:4:5:4:24 | [no-match] when ... |
+| case.rb:2:3:5:5 | case ... | case.rb:4:10:4:10 | 2 |
+| case.rb:2:3:5:5 | case ... | case.rb:4:17:4:24 | self |
+| case.rb:3:5:3:42 | [match] when ... | case.rb:3:5:3:42 | [match] when ... |
+| case.rb:3:5:3:42 | [no-match] when ... | case.rb:3:5:3:42 | [no-match] when ... |
+| case.rb:3:18:3:41 | if ... | case.rb:3:5:3:42 | [match] when ... |
+| case.rb:3:18:3:41 | if ... | case.rb:3:18:3:41 | if ... |
+| case.rb:3:18:3:41 | if ... | case.rb:3:21:3:22 | self |
+| case.rb:3:18:3:41 | if ... | case.rb:3:29:3:37 | self |
+| case.rb:3:21:3:22 | self | case.rb:3:5:3:42 | [match] when ... |
+| case.rb:3:21:3:22 | self | case.rb:3:21:3:22 | self |
+| case.rb:3:29:3:37 | self | case.rb:3:29:3:37 | self |
+| case.rb:4:5:4:24 | [match] when ... | case.rb:4:5:4:24 | [match] when ... |
+| case.rb:4:5:4:24 | [no-match] when ... | case.rb:4:5:4:24 | [no-match] when ... |
+| case.rb:4:10:4:10 | 2 | case.rb:3:5:3:42 | [no-match] when ... |
+| case.rb:4:10:4:10 | 2 | case.rb:4:10:4:10 | 2 |
+| case.rb:4:17:4:24 | self | case.rb:4:5:4:24 | [match] when ... |
+| case.rb:4:17:4:24 | self | case.rb:4:17:4:24 | self |
+| case.rb:8:1:18:3 | enter case_match | case.rb:8:1:18:3 | enter case_match |
+| case.rb:9:3:17:5 | case ... | case.rb:8:1:18:3 | enter case_match |
+| case.rb:9:3:17:5 | case ... | case.rb:9:3:17:5 | case ... |
+| case.rb:9:3:17:5 | case ... | case.rb:11:5:11:15 | in ... then ... |
+| case.rb:9:3:17:5 | case ... | case.rb:11:15:11:15 | 3 |
+| case.rb:9:3:17:5 | case ... | case.rb:12:5:13:7 | in ... then ... |
+| case.rb:9:3:17:5 | case ... | case.rb:13:7:13:7 | 4 |
+| case.rb:9:3:17:5 | case ... | case.rb:14:5:14:25 | in ... then ... |
+| case.rb:9:3:17:5 | case ... | case.rb:14:13:14:13 | x |
+| case.rb:9:3:17:5 | case ... | case.rb:14:25:14:25 | 6 |
+| case.rb:9:3:17:5 | case ... | case.rb:15:5:15:28 | in ... then ... |
+| case.rb:9:3:17:5 | case ... | case.rb:15:17:15:17 | x |
+| case.rb:9:3:17:5 | case ... | case.rb:15:28:15:28 | 7 |
+| case.rb:9:3:17:5 | case ... | case.rb:16:10:16:10 | 8 |
+| case.rb:11:5:11:15 | in ... then ... | case.rb:11:5:11:15 | in ... then ... |
+| case.rb:11:15:11:15 | 3 | case.rb:11:15:11:15 | 3 |
+| case.rb:12:5:13:7 | in ... then ... | case.rb:12:5:13:7 | in ... then ... |
+| case.rb:13:7:13:7 | 4 | case.rb:13:7:13:7 | 4 |
+| case.rb:14:5:14:25 | in ... then ... | case.rb:14:5:14:25 | in ... then ... |
+| case.rb:14:13:14:13 | x | case.rb:14:5:14:25 | in ... then ... |
+| case.rb:14:13:14:13 | x | case.rb:14:13:14:13 | x |
+| case.rb:14:25:14:25 | 6 | case.rb:14:25:14:25 | 6 |
+| case.rb:15:5:15:28 | in ... then ... | case.rb:15:5:15:28 | in ... then ... |
+| case.rb:15:17:15:17 | x | case.rb:15:5:15:28 | in ... then ... |
+| case.rb:15:17:15:17 | x | case.rb:15:17:15:17 | x |
+| case.rb:15:28:15:28 | 7 | case.rb:15:28:15:28 | 7 |
+| case.rb:16:10:16:10 | 8 | case.rb:16:10:16:10 | 8 |
+| case.rb:20:1:24:3 | enter case_match_no_match | case.rb:20:1:24:3 | enter case_match_no_match |
+| case.rb:20:1:24:3 | exit case_match_no_match | case.rb:20:1:24:3 | exit case_match_no_match |
+| case.rb:20:1:24:3 | exit case_match_no_match (abnormal) | case.rb:20:1:24:3 | exit case_match_no_match (abnormal) |
+| case.rb:21:3:23:5 | case ... | case.rb:20:1:24:3 | enter case_match_no_match |
+| case.rb:21:3:23:5 | case ... | case.rb:21:3:23:5 | case ... |
+| case.rb:26:1:30:3 | enter case_match_raise | case.rb:26:1:30:3 | enter case_match_raise |
+| case.rb:26:1:30:3 | exit case_match_raise | case.rb:26:1:30:3 | exit case_match_raise |
+| case.rb:26:1:30:3 | exit case_match_raise (abnormal) | case.rb:26:1:30:3 | exit case_match_raise (abnormal) |
+| case.rb:27:3:29:5 | case ... | case.rb:26:1:30:3 | enter case_match_raise |
+| case.rb:27:3:29:5 | case ... | case.rb:27:3:29:5 | case ... |
+| case.rb:28:7:28:28 | enter -> { ... } | case.rb:28:7:28:28 | enter -> { ... } |
+| case.rb:32:1:39:3 | enter case_match_array | case.rb:32:1:39:3 | enter case_match_array |
+| case.rb:32:1:39:3 | exit case_match_array | case.rb:32:1:39:3 | exit case_match_array |
+| case.rb:32:1:39:3 | exit case_match_array (abnormal) | case.rb:32:1:39:3 | exit case_match_array (abnormal) |
+| case.rb:33:3:38:5 | case ... | case.rb:32:1:39:3 | enter case_match_array |
+| case.rb:33:3:38:5 | case ... | case.rb:33:3:38:5 | case ... |
+| case.rb:33:3:38:5 | case ... | case.rb:35:5:35:11 | in ... then ... |
+| case.rb:33:3:38:5 | case ... | case.rb:35:9:35:9 | x |
+| case.rb:33:3:38:5 | case ... | case.rb:36:5:36:13 | in ... then ... |
+| case.rb:33:3:38:5 | case ... | case.rb:36:9:36:9 | x |
+| case.rb:33:3:38:5 | case ... | case.rb:37:5:37:27 | in ... then ... |
+| case.rb:33:3:38:5 | case ... | case.rb:37:8:37:26 | [ ..., * ] |
+| case.rb:33:3:38:5 | case ... | case.rb:37:12:37:12 | a |
+| case.rb:33:3:38:5 | case ... | case.rb:37:15:37:15 | b |
+| case.rb:33:3:38:5 | case ... | case.rb:37:19:37:19 | c |
+| case.rb:33:3:38:5 | case ... | case.rb:37:25:37:25 | e |
+| case.rb:35:5:35:11 | in ... then ... | case.rb:35:5:35:11 | in ... then ... |
+| case.rb:35:9:35:9 | x | case.rb:35:9:35:9 | x |
+| case.rb:36:5:36:13 | in ... then ... | case.rb:36:5:36:13 | in ... then ... |
+| case.rb:36:9:36:9 | x | case.rb:36:9:36:9 | x |
+| case.rb:37:5:37:27 | in ... then ... | case.rb:37:5:37:27 | in ... then ... |
+| case.rb:37:8:37:26 | [ ..., * ] | case.rb:37:5:37:27 | in ... then ... |
+| case.rb:37:8:37:26 | [ ..., * ] | case.rb:37:8:37:26 | [ ..., * ] |
+| case.rb:37:12:37:12 | a | case.rb:37:5:37:27 | in ... then ... |
+| case.rb:37:12:37:12 | a | case.rb:37:8:37:26 | [ ..., * ] |
+| case.rb:37:12:37:12 | a | case.rb:37:12:37:12 | a |
+| case.rb:37:15:37:15 | b | case.rb:37:5:37:27 | in ... then ... |
+| case.rb:37:15:37:15 | b | case.rb:37:8:37:26 | [ ..., * ] |
+| case.rb:37:15:37:15 | b | case.rb:37:12:37:12 | a |
+| case.rb:37:15:37:15 | b | case.rb:37:15:37:15 | b |
+| case.rb:37:19:37:19 | c | case.rb:37:5:37:27 | in ... then ... |
+| case.rb:37:19:37:19 | c | case.rb:37:8:37:26 | [ ..., * ] |
+| case.rb:37:19:37:19 | c | case.rb:37:12:37:12 | a |
+| case.rb:37:19:37:19 | c | case.rb:37:15:37:15 | b |
+| case.rb:37:19:37:19 | c | case.rb:37:19:37:19 | c |
+| case.rb:37:25:37:25 | e | case.rb:37:5:37:27 | in ... then ... |
+| case.rb:37:25:37:25 | e | case.rb:37:8:37:26 | [ ..., * ] |
+| case.rb:37:25:37:25 | e | case.rb:37:12:37:12 | a |
+| case.rb:37:25:37:25 | e | case.rb:37:15:37:15 | b |
+| case.rb:37:25:37:25 | e | case.rb:37:19:37:19 | c |
+| case.rb:37:25:37:25 | e | case.rb:37:25:37:25 | e |
+| case.rb:41:1:45:3 | enter case_match_find | case.rb:41:1:45:3 | enter case_match_find |
+| case.rb:41:1:45:3 | exit case_match_find | case.rb:41:1:45:3 | exit case_match_find |
+| case.rb:41:1:45:3 | exit case_match_find (abnormal) | case.rb:41:1:45:3 | exit case_match_find (abnormal) |
+| case.rb:43:10:43:10 | x | case.rb:41:1:45:3 | enter case_match_find |
+| case.rb:43:10:43:10 | x | case.rb:43:10:43:10 | x |
+| case.rb:43:16:43:16 | 2 | case.rb:41:1:45:3 | enter case_match_find |
+| case.rb:43:16:43:16 | 2 | case.rb:43:10:43:10 | x |
+| case.rb:43:16:43:16 | 2 | case.rb:43:16:43:16 | 2 |
+| case.rb:43:20:43:20 | y | case.rb:41:1:45:3 | enter case_match_find |
+| case.rb:43:20:43:20 | y | case.rb:43:10:43:10 | x |
+| case.rb:43:20:43:20 | y | case.rb:43:16:43:16 | 2 |
+| case.rb:43:20:43:20 | y | case.rb:43:20:43:20 | y |
+| case.rb:47:1:53:3 | enter case_match_hash | case.rb:47:1:53:3 | enter case_match_hash |
+| case.rb:47:1:53:3 | exit case_match_hash | case.rb:47:1:53:3 | exit case_match_hash |
+| case.rb:47:1:53:3 | exit case_match_hash (abnormal) | case.rb:47:1:53:3 | exit case_match_hash (abnormal) |
+| case.rb:48:3:52:5 | case ... | case.rb:47:1:53:3 | enter case_match_hash |
+| case.rb:48:3:52:5 | case ... | case.rb:48:3:52:5 | case ... |
+| case.rb:48:3:52:5 | case ... | case.rb:49:8:49:34 | { ..., ** } |
+| case.rb:48:3:52:5 | case ... | case.rb:49:20:49:20 | 1 |
+| case.rb:48:3:52:5 | case ... | case.rb:49:23:49:23 | a |
+| case.rb:48:3:52:5 | case ... | case.rb:49:29:49:32 | rest |
+| case.rb:48:3:52:5 | case ... | case.rb:50:5:50:25 | in ... then ... |
+| case.rb:48:3:52:5 | case ... | case.rb:50:8:50:24 | { ..., ** } |
+| case.rb:48:3:52:5 | case ... | case.rb:50:16:50:16 | 1 |
+| case.rb:48:3:52:5 | case ... | case.rb:51:5:51:17 | in ... then ... |
+| case.rb:48:3:52:5 | case ... | case.rb:51:8:51:16 | { ..., ** } |
+| case.rb:49:8:49:34 | { ..., ** } | case.rb:49:8:49:34 | { ..., ** } |
+| case.rb:49:20:49:20 | 1 | case.rb:49:20:49:20 | 1 |
+| case.rb:49:23:49:23 | a | case.rb:49:23:49:23 | a |
+| case.rb:49:29:49:32 | rest | case.rb:49:23:49:23 | a |
+| case.rb:49:29:49:32 | rest | case.rb:49:29:49:32 | rest |
+| case.rb:50:5:50:25 | in ... then ... | case.rb:50:5:50:25 | in ... then ... |
+| case.rb:50:8:50:24 | { ..., ** } | case.rb:50:8:50:24 | { ..., ** } |
+| case.rb:50:16:50:16 | 1 | case.rb:50:16:50:16 | 1 |
+| case.rb:51:5:51:17 | in ... then ... | case.rb:51:5:51:17 | in ... then ... |
+| case.rb:51:8:51:16 | { ..., ** } | case.rb:51:5:51:17 | in ... then ... |
+| case.rb:51:8:51:16 | { ..., ** } | case.rb:51:8:51:16 | { ..., ** } |
+| case.rb:55:1:61:3 | enter case_match_variable | case.rb:55:1:61:3 | enter case_match_variable |
+| case.rb:56:3:60:5 | case ... | case.rb:55:1:61:3 | enter case_match_variable |
+| case.rb:56:3:60:5 | case ... | case.rb:56:3:60:5 | case ... |
+| case.rb:56:3:60:5 | case ... | case.rb:58:5:58:10 | in ... then ... |
+| case.rb:58:5:58:10 | in ... then ... | case.rb:58:5:58:10 | in ... then ... |
+| case.rb:63:1:67:3 | enter case_match_underscore | case.rb:63:1:67:3 | enter case_match_underscore |
+| case.rb:64:3:66:5 | case ... | case.rb:63:1:67:3 | enter case_match_underscore |
+| case.rb:64:3:66:5 | case ... | case.rb:64:3:66:5 | case ... |
+| case.rb:64:3:66:5 | case ... | case.rb:65:12:65:12 | _ |
+| case.rb:65:12:65:12 | _ | case.rb:65:12:65:12 | _ |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:69:1:93:3 | enter case_match_various |
+| case.rb:69:1:93:3 | exit case_match_various | case.rb:69:1:93:3 | exit case_match_various |
+| case.rb:69:1:93:3 | exit case_match_various (abnormal) | case.rb:69:1:93:3 | exit case_match_various (abnormal) |
+| case.rb:72:3:92:5 | case ... | case.rb:69:1:93:3 | enter case_match_various |
+| case.rb:72:3:92:5 | case ... | case.rb:72:3:92:5 | case ... |
+| case.rb:72:3:92:5 | case ... | case.rb:74:5:74:11 | in ... then ... |
+| case.rb:72:3:92:5 | case ... | case.rb:75:5:75:15 | in ... then ... |
+| case.rb:72:3:92:5 | case ... | case.rb:76:5:76:18 | in ... then ... |
+| case.rb:72:3:92:5 | case ... | case.rb:77:5:77:18 | in ... then ... |
+| case.rb:72:3:92:5 | case ... | case.rb:78:5:78:19 | in ... then ... |
+| case.rb:72:3:92:5 | case ... | case.rb:79:5:79:14 | in ... then ... |
+| case.rb:72:3:92:5 | case ... | case.rb:80:5:80:12 | in ... then ... |
+| case.rb:72:3:92:5 | case ... | case.rb:81:5:81:11 | in ... then ... |
+| case.rb:72:3:92:5 | case ... | case.rb:82:5:82:20 | in ... then ... |
+| case.rb:72:3:92:5 | case ... | case.rb:82:13:82:13 | x |
+| case.rb:72:3:92:5 | case ... | case.rb:82:20:82:20 | 1 |
+| case.rb:72:3:92:5 | case ... | case.rb:83:5:83:26 | in ... then ... |
+| case.rb:72:3:92:5 | case ... | case.rb:83:12:83:15 | ^... |
+| case.rb:72:3:92:5 | case ... | case.rb:83:20:83:25 | string |
+| case.rb:72:3:92:5 | case ... | case.rb:84:5:84:17 | in ... then ... |
+| case.rb:72:3:92:5 | case ... | case.rb:85:5:85:23 | in ... then ... |
+| case.rb:72:3:92:5 | case ... | case.rb:86:5:86:11 | in ... then ... |
+| case.rb:72:3:92:5 | case ... | case.rb:87:5:87:17 | in ... then ... |
+| case.rb:72:3:92:5 | case ... | case.rb:88:5:88:15 | in ... then ... |
+| case.rb:72:3:92:5 | case ... | case.rb:88:14:88:15 | 10 |
+| case.rb:72:3:92:5 | case ... | case.rb:89:5:89:69 | in ... then ... |
+| case.rb:72:3:92:5 | case ... | case.rb:89:14:89:17 | self |
+| case.rb:72:3:92:5 | case ... | case.rb:89:21:89:24 | true |
+| case.rb:72:3:92:5 | case ... | case.rb:89:28:89:32 | false |
+| case.rb:72:3:92:5 | case ... | case.rb:89:36:89:43 | __LINE__ |
+| case.rb:72:3:92:5 | case ... | case.rb:89:47:89:54 | __FILE__ |
+| case.rb:72:3:92:5 | case ... | case.rb:89:58:89:69 | __ENCODING__ |
+| case.rb:72:3:92:5 | case ... | case.rb:90:5:90:13 | in ... then ... |
+| case.rb:72:3:92:5 | case ... | case.rb:91:5:91:25 | in ... then ... |
+| case.rb:72:3:92:5 | case ... | case.rb:91:13:91:14 | "" |
+| case.rb:72:3:92:5 | case ... | case.rb:91:18:91:19 | [ ..., * ] |
+| case.rb:72:3:92:5 | case ... | case.rb:91:23:91:24 | { ..., ** } |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:74:5:74:11 | in ... then ... |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:75:5:75:15 | in ... then ... |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:76:5:76:18 | in ... then ... |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:77:5:77:18 | in ... then ... |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:78:5:78:19 | in ... then ... |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:79:5:79:14 | in ... then ... |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:80:5:80:12 | in ... then ... |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:81:5:81:11 | in ... then ... |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:82:5:82:20 | in ... then ... |
+| case.rb:82:13:82:13 | x | case.rb:82:13:82:13 | x |
+| case.rb:82:20:82:20 | 1 | case.rb:82:13:82:13 | x |
+| case.rb:82:20:82:20 | 1 | case.rb:82:20:82:20 | 1 |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:83:5:83:26 | in ... then ... |
+| case.rb:83:12:83:15 | ^... | case.rb:83:12:83:15 | ^... |
+| case.rb:83:20:83:25 | string | case.rb:83:20:83:25 | string |
+| case.rb:84:5:84:17 | in ... then ... | case.rb:84:5:84:17 | in ... then ... |
+| case.rb:85:5:85:23 | in ... then ... | case.rb:85:5:85:23 | in ... then ... |
+| case.rb:85:8:85:23 | enter -> { ... } | case.rb:85:8:85:23 | enter -> { ... } |
+| case.rb:86:5:86:11 | in ... then ... | case.rb:86:5:86:11 | in ... then ... |
+| case.rb:87:5:87:17 | in ... then ... | case.rb:87:5:87:17 | in ... then ... |
+| case.rb:88:5:88:15 | in ... then ... | case.rb:88:5:88:15 | in ... then ... |
+| case.rb:88:14:88:15 | 10 | case.rb:88:14:88:15 | 10 |
+| case.rb:89:5:89:69 | in ... then ... | case.rb:89:5:89:69 | in ... then ... |
+| case.rb:89:14:89:17 | self | case.rb:89:14:89:17 | self |
+| case.rb:89:21:89:24 | true | case.rb:89:21:89:24 | true |
+| case.rb:89:28:89:32 | false | case.rb:89:28:89:32 | false |
+| case.rb:89:36:89:43 | __LINE__ | case.rb:89:36:89:43 | __LINE__ |
+| case.rb:89:47:89:54 | __FILE__ | case.rb:89:47:89:54 | __FILE__ |
+| case.rb:89:58:89:69 | __ENCODING__ | case.rb:89:58:89:69 | __ENCODING__ |
+| case.rb:90:5:90:13 | in ... then ... | case.rb:90:5:90:13 | in ... then ... |
+| case.rb:91:5:91:25 | in ... then ... | case.rb:91:5:91:25 | in ... then ... |
+| case.rb:91:13:91:14 | "" | case.rb:91:13:91:14 | "" |
+| case.rb:91:18:91:19 | [ ..., * ] | case.rb:91:18:91:19 | [ ..., * ] |
+| case.rb:91:23:91:24 | { ..., ** } | case.rb:91:23:91:24 | { ..., ** } |
+| case.rb:95:1:99:3 | enter case_match_guard_no_else | case.rb:95:1:99:3 | enter case_match_guard_no_else |
+| case.rb:95:1:99:3 | exit case_match_guard_no_else | case.rb:95:1:99:3 | exit case_match_guard_no_else |
+| case.rb:95:1:99:3 | exit case_match_guard_no_else (abnormal) | case.rb:95:1:99:3 | exit case_match_guard_no_else (abnormal) |
+| case.rb:97:13:97:13 | x | case.rb:95:1:99:3 | enter case_match_guard_no_else |
+| case.rb:97:13:97:13 | x | case.rb:97:13:97:13 | x |
+| case.rb:97:25:97:25 | 6 | case.rb:95:1:99:3 | enter case_match_guard_no_else |
+| case.rb:97:25:97:25 | 6 | case.rb:97:13:97:13 | x |
+| case.rb:97:25:97:25 | 6 | case.rb:97:25:97:25 | 6 |
+| cfg.html.erb:5:16:31:12 | enter cfg.html.erb | cfg.html.erb:5:16:31:12 | enter cfg.html.erb |
+| cfg.html.erb:18:14:22:16 | if ... | cfg.html.erb:5:16:31:12 | enter cfg.html.erb |
+| cfg.html.erb:18:14:22:16 | if ... | cfg.html.erb:18:14:22:16 | if ... |
+| cfg.html.erb:18:14:22:16 | if ... | cfg.html.erb:19:19:19:32 | self |
+| cfg.html.erb:18:14:22:16 | if ... | cfg.html.erb:21:19:21:32 | self |
+| cfg.html.erb:19:19:19:32 | self | cfg.html.erb:19:19:19:32 | self |
+| cfg.html.erb:21:19:21:32 | self | cfg.html.erb:21:19:21:32 | self |
+| cfg.html.erb:29:24:31:10 | enter do ... end | cfg.html.erb:29:24:31:10 | enter do ... end |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:1:1:221:1 | enter cfg.rb |
+| cfg.rb:25:9:25:22 | enter { ... } | cfg.rb:25:9:25:22 | enter { ... } |
+| cfg.rb:29:10:29:24 | enter { ... } | cfg.rb:29:10:29:24 | enter { ... } |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:1:1:221:1 | enter cfg.rb |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:32:9:32:9 | 1 |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:1:1:221:1 | enter cfg.rb |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:32:9:32:9 | 1 |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:35:1:37:3 | if ... |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:1:1:221:1 | enter cfg.rb |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:32:9:32:9 | 1 |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:35:1:37:3 | if ... |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:41:1:45:3 | case ... |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:42:3:42:24 | [match] when ... |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:42:3:42:24 | [no-match] when ... |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:42:15:42:24 | self |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:43:3:43:31 | [match] when ... |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:43:3:43:31 | [no-match] when ... |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:43:8:43:8 | 2 |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:43:11:43:11 | 3 |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:43:14:43:14 | 4 |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:43:21:43:31 | self |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:44:8:44:18 | self |
+| cfg.rb:42:3:42:24 | [match] when ... | cfg.rb:42:3:42:24 | [match] when ... |
+| cfg.rb:42:3:42:24 | [no-match] when ... | cfg.rb:42:3:42:24 | [no-match] when ... |
+| cfg.rb:42:15:42:24 | self | cfg.rb:42:3:42:24 | [match] when ... |
+| cfg.rb:42:15:42:24 | self | cfg.rb:42:15:42:24 | self |
+| cfg.rb:43:3:43:31 | [match] when ... | cfg.rb:43:3:43:31 | [match] when ... |
+| cfg.rb:43:3:43:31 | [no-match] when ... | cfg.rb:43:3:43:31 | [no-match] when ... |
+| cfg.rb:43:8:43:8 | 2 | cfg.rb:42:3:42:24 | [no-match] when ... |
+| cfg.rb:43:8:43:8 | 2 | cfg.rb:43:8:43:8 | 2 |
+| cfg.rb:43:11:43:11 | 3 | cfg.rb:43:11:43:11 | 3 |
+| cfg.rb:43:14:43:14 | 4 | cfg.rb:43:14:43:14 | 4 |
+| cfg.rb:43:21:43:31 | self | cfg.rb:43:3:43:31 | [match] when ... |
+| cfg.rb:43:21:43:31 | self | cfg.rb:43:21:43:31 | self |
+| cfg.rb:44:8:44:18 | self | cfg.rb:43:3:43:31 | [no-match] when ... |
+| cfg.rb:44:8:44:18 | self | cfg.rb:44:8:44:18 | self |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:1:1:221:1 | enter cfg.rb |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:32:9:32:9 | 1 |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:35:1:37:3 | if ... |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:41:1:45:3 | case ... |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:42:3:42:24 | [match] when ... |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:42:3:42:24 | [no-match] when ... |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:42:15:42:24 | self |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:43:3:43:31 | [match] when ... |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:43:3:43:31 | [no-match] when ... |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:43:8:43:8 | 2 |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:43:11:43:11 | 3 |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:43:14:43:14 | 4 |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:43:21:43:31 | self |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:44:8:44:18 | self |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:47:1:50:3 | case ... |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:48:3:48:29 | [false] when ... |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:48:3:48:29 | [true] when ... |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:48:20:48:29 | self |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:49:3:49:37 | [false] when ... |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:49:3:49:37 | [true] when ... |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:49:8:49:8 | b |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:49:16:49:16 | b |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:49:27:49:37 | self |
+| cfg.rb:48:3:48:29 | [false] when ... | cfg.rb:48:3:48:29 | [false] when ... |
+| cfg.rb:48:3:48:29 | [true] when ... | cfg.rb:48:3:48:29 | [true] when ... |
+| cfg.rb:48:20:48:29 | self | cfg.rb:48:3:48:29 | [true] when ... |
+| cfg.rb:48:20:48:29 | self | cfg.rb:48:20:48:29 | self |
+| cfg.rb:49:3:49:37 | [false] when ... | cfg.rb:49:3:49:37 | [false] when ... |
+| cfg.rb:49:3:49:37 | [true] when ... | cfg.rb:49:3:49:37 | [true] when ... |
+| cfg.rb:49:8:49:8 | b | cfg.rb:48:3:48:29 | [false] when ... |
+| cfg.rb:49:8:49:8 | b | cfg.rb:49:8:49:8 | b |
+| cfg.rb:49:16:49:16 | b | cfg.rb:49:16:49:16 | b |
+| cfg.rb:49:27:49:37 | self | cfg.rb:49:3:49:37 | [true] when ... |
+| cfg.rb:49:27:49:37 | self | cfg.rb:49:27:49:37 | self |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:1:1:221:1 | enter cfg.rb |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:32:9:32:9 | 1 |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:35:1:37:3 | if ... |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:41:1:45:3 | case ... |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:42:3:42:24 | [match] when ... |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:42:3:42:24 | [no-match] when ... |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:42:15:42:24 | self |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:43:3:43:31 | [match] when ... |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:43:3:43:31 | [no-match] when ... |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:43:8:43:8 | 2 |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:43:11:43:11 | 3 |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:43:14:43:14 | 4 |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:43:21:43:31 | self |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:44:8:44:18 | self |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:47:1:50:3 | case ... |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:48:3:48:29 | [false] when ... |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:48:3:48:29 | [true] when ... |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:48:20:48:29 | self |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:49:3:49:37 | [false] when ... |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:49:3:49:37 | [true] when ... |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:49:8:49:8 | b |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:49:16:49:16 | b |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:49:27:49:37 | self |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:60:17:60:40 | ... ? ... : ... |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:60:27:60:31 | hello |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:60:37:60:39 | bye |
+| cfg.rb:60:27:60:31 | hello | cfg.rb:60:27:60:31 | hello |
+| cfg.rb:60:37:60:39 | bye | cfg.rb:60:37:60:39 | bye |
+| cfg.rb:63:3:66:5 | enter pattern | cfg.rb:63:3:66:5 | enter pattern |
+| cfg.rb:69:3:71:5 | enter print | cfg.rb:69:3:71:5 | enter print |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:1:1:221:1 | enter cfg.rb |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:32:9:32:9 | 1 |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:35:1:37:3 | if ... |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:41:1:45:3 | case ... |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:42:3:42:24 | [match] when ... |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:42:3:42:24 | [no-match] when ... |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:42:15:42:24 | self |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:43:3:43:31 | [match] when ... |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:43:3:43:31 | [no-match] when ... |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:43:8:43:8 | 2 |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:43:11:43:11 | 3 |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:43:14:43:14 | 4 |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:43:21:43:31 | self |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:44:8:44:18 | self |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:47:1:50:3 | case ... |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:48:3:48:29 | [false] when ... |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:48:3:48:29 | [true] when ... |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:48:20:48:29 | self |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:49:3:49:37 | [false] when ... |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:49:3:49:37 | [true] when ... |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:49:8:49:8 | b |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:49:16:49:16 | b |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:49:27:49:37 | self |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:60:17:60:40 | ... ? ... : ... |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:60:27:60:31 | hello |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:60:37:60:39 | bye |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:75:1:75:47 | if ... |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:75:15:75:15 | 0 |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:75:17:75:43 | elsif ... |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:75:23:75:23 | x |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:75:35:75:36 | 10 |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:75:43:75:43 | x |
+| cfg.rb:75:15:75:15 | 0 | cfg.rb:75:15:75:15 | 0 |
+| cfg.rb:75:17:75:43 | elsif ... | cfg.rb:75:17:75:43 | elsif ... |
+| cfg.rb:75:17:75:43 | elsif ... | cfg.rb:75:23:75:23 | x |
+| cfg.rb:75:17:75:43 | elsif ... | cfg.rb:75:35:75:36 | 10 |
+| cfg.rb:75:17:75:43 | elsif ... | cfg.rb:75:43:75:43 | x |
+| cfg.rb:75:23:75:23 | x | cfg.rb:75:23:75:23 | x |
+| cfg.rb:75:35:75:36 | 10 | cfg.rb:75:35:75:36 | 10 |
+| cfg.rb:75:43:75:43 | x | cfg.rb:75:43:75:43 | x |
+| cfg.rb:90:1:93:3 | enter { ... } | cfg.rb:90:1:93:3 | enter { ... } |
+| cfg.rb:90:1:93:3 | exit { ... } (normal) | cfg.rb:90:1:93:3 | enter { ... } |
+| cfg.rb:90:1:93:3 | exit { ... } (normal) | cfg.rb:90:1:93:3 | exit { ... } (normal) |
+| cfg.rb:90:1:93:3 | exit { ... } (normal) | cfg.rb:91:3:91:24 | if ... |
+| cfg.rb:90:1:93:3 | exit { ... } (normal) | cfg.rb:91:17:91:20 | next |
+| cfg.rb:90:5:90:5 | [false] ! ... | cfg.rb:90:5:90:5 | [false] ! ... |
+| cfg.rb:90:5:90:5 | [true] ! ... | cfg.rb:90:5:90:5 | [true] ! ... |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:1:1:221:1 | enter cfg.rb |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:32:9:32:9 | 1 |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:35:1:37:3 | if ... |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:41:1:45:3 | case ... |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:42:3:42:24 | [match] when ... |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:42:3:42:24 | [no-match] when ... |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:42:15:42:24 | self |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:43:3:43:31 | [match] when ... |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:43:3:43:31 | [no-match] when ... |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:43:8:43:8 | 2 |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:43:11:43:11 | 3 |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:43:14:43:14 | 4 |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:43:21:43:31 | self |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:44:8:44:18 | self |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:47:1:50:3 | case ... |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:48:3:48:29 | [false] when ... |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:48:3:48:29 | [true] when ... |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:48:20:48:29 | self |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:49:3:49:37 | [false] when ... |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:49:3:49:37 | [true] when ... |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:49:8:49:8 | b |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:49:16:49:16 | b |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:49:27:49:37 | self |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:60:17:60:40 | ... ? ... : ... |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:60:27:60:31 | hello |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:60:37:60:39 | bye |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:75:1:75:47 | if ... |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:75:15:75:15 | 0 |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:75:17:75:43 | elsif ... |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:75:23:75:23 | x |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:75:35:75:36 | 10 |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:75:43:75:43 | x |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:90:5:90:5 | [false] ! ... |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:90:5:90:5 | [true] ! ... |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:90:5:90:5 | if ... |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:90:5:90:5 | x |
+| cfg.rb:90:5:90:5 | x | cfg.rb:90:5:90:5 | [true] ! ... |
+| cfg.rb:90:5:90:5 | x | cfg.rb:90:5:90:5 | x |
+| cfg.rb:91:3:91:24 | if ... | cfg.rb:91:3:91:24 | if ... |
+| cfg.rb:91:17:91:20 | next | cfg.rb:91:17:91:20 | next |
+| cfg.rb:101:1:104:3 | enter parameters | cfg.rb:101:1:104:3 | enter parameters |
+| cfg.rb:101:24:101:25 | 42 | cfg.rb:101:24:101:25 | 42 |
+| cfg.rb:101:28:101:30 | key | cfg.rb:101:1:104:3 | enter parameters |
+| cfg.rb:101:28:101:30 | key | cfg.rb:101:24:101:25 | 42 |
+| cfg.rb:101:28:101:30 | key | cfg.rb:101:28:101:30 | key |
+| cfg.rb:113:1:113:9 | self | cfg.rb:113:1:113:9 | self |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:1:1:221:1 | enter cfg.rb |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:32:9:32:9 | 1 |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:35:1:37:3 | if ... |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:41:1:45:3 | case ... |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:42:3:42:24 | [match] when ... |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:42:3:42:24 | [no-match] when ... |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:42:15:42:24 | self |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:43:3:43:31 | [match] when ... |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:43:3:43:31 | [no-match] when ... |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:43:8:43:8 | 2 |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:43:11:43:11 | 3 |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:43:14:43:14 | 4 |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:43:21:43:31 | self |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:44:8:44:18 | self |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:47:1:50:3 | case ... |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:48:3:48:29 | [false] when ... |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:48:3:48:29 | [true] when ... |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:48:20:48:29 | self |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:49:3:49:37 | [false] when ... |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:49:3:49:37 | [true] when ... |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:49:8:49:8 | b |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:49:16:49:16 | b |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:49:27:49:37 | self |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:60:17:60:40 | ... ? ... : ... |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:60:27:60:31 | hello |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:60:37:60:39 | bye |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:75:1:75:47 | if ... |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:75:15:75:15 | 0 |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:75:17:75:43 | elsif ... |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:75:23:75:23 | x |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:75:35:75:36 | 10 |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:75:43:75:43 | x |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:90:5:90:5 | [false] ! ... |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:90:5:90:5 | [true] ! ... |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:90:5:90:5 | if ... |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:90:5:90:5 | x |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:113:1:113:9 | self |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:113:1:113:19 | ... if ... |
+| cfg.rb:120:8:120:28 | enter -> { ... } | cfg.rb:120:8:120:28 | enter -> { ... } |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:1:1:221:1 | enter cfg.rb |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:32:9:32:9 | 1 |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:35:1:37:3 | if ... |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:41:1:45:3 | case ... |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:42:3:42:24 | [match] when ... |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:42:3:42:24 | [no-match] when ... |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:42:15:42:24 | self |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:43:3:43:31 | [match] when ... |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:43:3:43:31 | [no-match] when ... |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:43:8:43:8 | 2 |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:43:11:43:11 | 3 |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:43:14:43:14 | 4 |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:43:21:43:31 | self |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:44:8:44:18 | self |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:47:1:50:3 | case ... |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:48:3:48:29 | [false] when ... |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:48:3:48:29 | [true] when ... |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:48:20:48:29 | self |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:49:3:49:37 | [false] when ... |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:49:3:49:37 | [true] when ... |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:49:8:49:8 | b |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:49:16:49:16 | b |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:49:27:49:37 | self |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:60:17:60:40 | ... ? ... : ... |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:60:27:60:31 | hello |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:60:37:60:39 | bye |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:75:1:75:47 | if ... |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:75:15:75:15 | 0 |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:75:17:75:43 | elsif ... |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:75:23:75:23 | x |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:75:35:75:36 | 10 |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:75:43:75:43 | x |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:90:5:90:5 | [false] ! ... |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:90:5:90:5 | [true] ! ... |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:90:5:90:5 | if ... |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:90:5:90:5 | x |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:113:1:113:9 | self |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:113:1:113:19 | ... if ... |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:136:1:136:29 | ... rescue ... |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:136:12:136:29 | self |
+| cfg.rb:136:12:136:29 | self | cfg.rb:136:12:136:29 | self |
+| cfg.rb:145:3:148:5 | enter print | cfg.rb:145:3:148:5 | enter print |
+| cfg.rb:152:1:154:3 | enter method | cfg.rb:152:1:154:3 | enter method |
+| cfg.rb:156:1:156:28 | enter two_parameters | cfg.rb:156:1:156:28 | enter two_parameters |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:1:1:221:1 | enter cfg.rb |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:32:9:32:9 | 1 |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:35:1:37:3 | if ... |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:41:1:45:3 | case ... |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:42:3:42:24 | [match] when ... |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:42:3:42:24 | [no-match] when ... |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:42:15:42:24 | self |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:43:3:43:31 | [match] when ... |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:43:3:43:31 | [no-match] when ... |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:43:8:43:8 | 2 |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:43:11:43:11 | 3 |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:43:14:43:14 | 4 |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:43:21:43:31 | self |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:44:8:44:18 | self |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:47:1:50:3 | case ... |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:48:3:48:29 | [false] when ... |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:48:3:48:29 | [true] when ... |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:48:20:48:29 | self |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:49:3:49:37 | [false] when ... |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:49:3:49:37 | [true] when ... |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:49:8:49:8 | b |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:49:16:49:16 | b |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:49:27:49:37 | self |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:60:17:60:40 | ... ? ... : ... |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:60:27:60:31 | hello |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:60:37:60:39 | bye |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:75:1:75:47 | if ... |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:75:15:75:15 | 0 |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:75:17:75:43 | elsif ... |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:75:23:75:23 | x |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:75:35:75:36 | 10 |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:75:43:75:43 | x |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:90:5:90:5 | [false] ! ... |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:90:5:90:5 | [true] ! ... |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:90:5:90:5 | if ... |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:90:5:90:5 | x |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:113:1:113:9 | self |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:113:1:113:19 | ... if ... |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:136:1:136:29 | ... rescue ... |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:136:12:136:29 | self |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:172:1:172:49 | unless ... |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:172:21:172:29 | self |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:172:36:172:45 | self |
+| cfg.rb:172:21:172:29 | self | cfg.rb:172:21:172:29 | self |
+| cfg.rb:172:36:172:45 | self | cfg.rb:172:36:172:45 | self |
+| cfg.rb:174:1:174:9 | self | cfg.rb:174:1:174:9 | self |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:1:1:221:1 | enter cfg.rb |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:32:9:32:9 | 1 |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:35:1:37:3 | if ... |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:41:1:45:3 | case ... |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:42:3:42:24 | [match] when ... |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:42:3:42:24 | [no-match] when ... |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:42:15:42:24 | self |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:43:3:43:31 | [match] when ... |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:43:3:43:31 | [no-match] when ... |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:43:8:43:8 | 2 |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:43:11:43:11 | 3 |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:43:14:43:14 | 4 |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:43:21:43:31 | self |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:44:8:44:18 | self |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:47:1:50:3 | case ... |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:48:3:48:29 | [false] when ... |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:48:3:48:29 | [true] when ... |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:48:20:48:29 | self |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:49:3:49:37 | [false] when ... |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:49:3:49:37 | [true] when ... |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:49:8:49:8 | b |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:49:16:49:16 | b |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:49:27:49:37 | self |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:60:17:60:40 | ... ? ... : ... |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:60:27:60:31 | hello |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:60:37:60:39 | bye |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:75:1:75:47 | if ... |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:75:15:75:15 | 0 |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:75:17:75:43 | elsif ... |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:75:23:75:23 | x |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:75:35:75:36 | 10 |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:75:43:75:43 | x |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:90:5:90:5 | [false] ! ... |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:90:5:90:5 | [true] ! ... |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:90:5:90:5 | if ... |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:90:5:90:5 | x |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:113:1:113:9 | self |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:113:1:113:19 | ... if ... |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:136:1:136:29 | ... rescue ... |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:136:12:136:29 | self |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:172:1:172:49 | unless ... |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:172:21:172:29 | self |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:172:36:172:45 | self |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:174:1:174:9 | self |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:174:1:174:23 | ... unless ... |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:1:1:221:1 | enter cfg.rb |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:32:9:32:9 | 1 |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:35:1:37:3 | if ... |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:41:1:45:3 | case ... |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:42:3:42:24 | [match] when ... |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:42:3:42:24 | [no-match] when ... |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:42:15:42:24 | self |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:43:3:43:31 | [match] when ... |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:43:3:43:31 | [no-match] when ... |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:43:8:43:8 | 2 |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:43:11:43:11 | 3 |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:43:14:43:14 | 4 |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:43:21:43:31 | self |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:44:8:44:18 | self |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:47:1:50:3 | case ... |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:48:3:48:29 | [false] when ... |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:48:3:48:29 | [true] when ... |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:48:20:48:29 | self |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:49:3:49:37 | [false] when ... |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:49:3:49:37 | [true] when ... |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:49:8:49:8 | b |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:49:16:49:16 | b |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:49:27:49:37 | self |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:60:17:60:40 | ... ? ... : ... |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:60:27:60:31 | hello |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:60:37:60:39 | bye |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:75:1:75:47 | if ... |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:75:15:75:15 | 0 |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:75:17:75:43 | elsif ... |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:75:23:75:23 | x |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:75:35:75:36 | 10 |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:75:43:75:43 | x |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:90:5:90:5 | [false] ! ... |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:90:5:90:5 | [true] ! ... |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:90:5:90:5 | if ... |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:90:5:90:5 | x |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:113:1:113:9 | self |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:113:1:113:19 | ... if ... |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:136:1:136:29 | ... rescue ... |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:136:12:136:29 | self |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:172:1:172:49 | unless ... |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:172:21:172:29 | self |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:172:36:172:45 | self |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:174:1:174:9 | self |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:174:1:174:23 | ... unless ... |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:176:1:176:41 | until ... |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:176:7:176:7 | x |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:176:17:176:17 | x |
+| cfg.rb:176:7:176:7 | x | cfg.rb:1:1:221:1 | enter cfg.rb |
+| cfg.rb:176:7:176:7 | x | cfg.rb:32:9:32:9 | 1 |
+| cfg.rb:176:7:176:7 | x | cfg.rb:35:1:37:3 | if ... |
+| cfg.rb:176:7:176:7 | x | cfg.rb:41:1:45:3 | case ... |
+| cfg.rb:176:7:176:7 | x | cfg.rb:42:3:42:24 | [match] when ... |
+| cfg.rb:176:7:176:7 | x | cfg.rb:42:3:42:24 | [no-match] when ... |
+| cfg.rb:176:7:176:7 | x | cfg.rb:42:15:42:24 | self |
+| cfg.rb:176:7:176:7 | x | cfg.rb:43:3:43:31 | [match] when ... |
+| cfg.rb:176:7:176:7 | x | cfg.rb:43:3:43:31 | [no-match] when ... |
+| cfg.rb:176:7:176:7 | x | cfg.rb:43:8:43:8 | 2 |
+| cfg.rb:176:7:176:7 | x | cfg.rb:43:11:43:11 | 3 |
+| cfg.rb:176:7:176:7 | x | cfg.rb:43:14:43:14 | 4 |
+| cfg.rb:176:7:176:7 | x | cfg.rb:43:21:43:31 | self |
+| cfg.rb:176:7:176:7 | x | cfg.rb:44:8:44:18 | self |
+| cfg.rb:176:7:176:7 | x | cfg.rb:47:1:50:3 | case ... |
+| cfg.rb:176:7:176:7 | x | cfg.rb:48:3:48:29 | [false] when ... |
+| cfg.rb:176:7:176:7 | x | cfg.rb:48:3:48:29 | [true] when ... |
+| cfg.rb:176:7:176:7 | x | cfg.rb:48:20:48:29 | self |
+| cfg.rb:176:7:176:7 | x | cfg.rb:49:3:49:37 | [false] when ... |
+| cfg.rb:176:7:176:7 | x | cfg.rb:49:3:49:37 | [true] when ... |
+| cfg.rb:176:7:176:7 | x | cfg.rb:49:8:49:8 | b |
+| cfg.rb:176:7:176:7 | x | cfg.rb:49:16:49:16 | b |
+| cfg.rb:176:7:176:7 | x | cfg.rb:49:27:49:37 | self |
+| cfg.rb:176:7:176:7 | x | cfg.rb:60:17:60:40 | ... ? ... : ... |
+| cfg.rb:176:7:176:7 | x | cfg.rb:60:27:60:31 | hello |
+| cfg.rb:176:7:176:7 | x | cfg.rb:60:37:60:39 | bye |
+| cfg.rb:176:7:176:7 | x | cfg.rb:75:1:75:47 | if ... |
+| cfg.rb:176:7:176:7 | x | cfg.rb:75:15:75:15 | 0 |
+| cfg.rb:176:7:176:7 | x | cfg.rb:75:17:75:43 | elsif ... |
+| cfg.rb:176:7:176:7 | x | cfg.rb:75:23:75:23 | x |
+| cfg.rb:176:7:176:7 | x | cfg.rb:75:35:75:36 | 10 |
+| cfg.rb:176:7:176:7 | x | cfg.rb:75:43:75:43 | x |
+| cfg.rb:176:7:176:7 | x | cfg.rb:90:5:90:5 | [false] ! ... |
+| cfg.rb:176:7:176:7 | x | cfg.rb:90:5:90:5 | [true] ! ... |
+| cfg.rb:176:7:176:7 | x | cfg.rb:90:5:90:5 | if ... |
+| cfg.rb:176:7:176:7 | x | cfg.rb:90:5:90:5 | x |
+| cfg.rb:176:7:176:7 | x | cfg.rb:113:1:113:9 | self |
+| cfg.rb:176:7:176:7 | x | cfg.rb:113:1:113:19 | ... if ... |
+| cfg.rb:176:7:176:7 | x | cfg.rb:136:1:136:29 | ... rescue ... |
+| cfg.rb:176:7:176:7 | x | cfg.rb:136:12:136:29 | self |
+| cfg.rb:176:7:176:7 | x | cfg.rb:172:1:172:49 | unless ... |
+| cfg.rb:176:7:176:7 | x | cfg.rb:172:21:172:29 | self |
+| cfg.rb:176:7:176:7 | x | cfg.rb:172:36:172:45 | self |
+| cfg.rb:176:7:176:7 | x | cfg.rb:174:1:174:9 | self |
+| cfg.rb:176:7:176:7 | x | cfg.rb:174:1:174:23 | ... unless ... |
+| cfg.rb:176:7:176:7 | x | cfg.rb:176:7:176:7 | x |
+| cfg.rb:176:7:176:7 | x | cfg.rb:176:17:176:17 | x |
+| cfg.rb:176:17:176:17 | x | cfg.rb:176:17:176:17 | x |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:1:1:221:1 | enter cfg.rb |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:32:9:32:9 | 1 |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:35:1:37:3 | if ... |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:41:1:45:3 | case ... |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:42:3:42:24 | [match] when ... |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:42:3:42:24 | [no-match] when ... |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:42:15:42:24 | self |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:43:3:43:31 | [match] when ... |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:43:3:43:31 | [no-match] when ... |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:43:8:43:8 | 2 |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:43:11:43:11 | 3 |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:43:14:43:14 | 4 |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:43:21:43:31 | self |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:44:8:44:18 | self |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:47:1:50:3 | case ... |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:48:3:48:29 | [false] when ... |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:48:3:48:29 | [true] when ... |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:48:20:48:29 | self |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:49:3:49:37 | [false] when ... |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:49:3:49:37 | [true] when ... |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:49:8:49:8 | b |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:49:16:49:16 | b |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:49:27:49:37 | self |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:60:17:60:40 | ... ? ... : ... |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:60:27:60:31 | hello |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:60:37:60:39 | bye |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:75:1:75:47 | if ... |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:75:15:75:15 | 0 |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:75:17:75:43 | elsif ... |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:75:23:75:23 | x |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:75:35:75:36 | 10 |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:75:43:75:43 | x |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:90:5:90:5 | [false] ! ... |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:90:5:90:5 | [true] ! ... |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:90:5:90:5 | if ... |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:90:5:90:5 | x |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:113:1:113:9 | self |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:113:1:113:19 | ... if ... |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:136:1:136:29 | ... rescue ... |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:136:12:136:29 | self |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:172:1:172:49 | unless ... |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:172:21:172:29 | self |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:172:36:172:45 | self |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:174:1:174:9 | self |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:174:1:174:23 | ... unless ... |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:176:1:176:41 | until ... |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:176:7:176:7 | x |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:176:17:176:17 | x |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:179:1:179:36 | ... until ... |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:179:2:179:13 | self |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:179:30:179:30 | i |
+| cfg.rb:179:2:179:13 | self | cfg.rb:179:2:179:13 | self |
+| cfg.rb:179:30:179:30 | i | cfg.rb:1:1:221:1 | enter cfg.rb |
+| cfg.rb:179:30:179:30 | i | cfg.rb:32:9:32:9 | 1 |
+| cfg.rb:179:30:179:30 | i | cfg.rb:35:1:37:3 | if ... |
+| cfg.rb:179:30:179:30 | i | cfg.rb:41:1:45:3 | case ... |
+| cfg.rb:179:30:179:30 | i | cfg.rb:42:3:42:24 | [match] when ... |
+| cfg.rb:179:30:179:30 | i | cfg.rb:42:3:42:24 | [no-match] when ... |
+| cfg.rb:179:30:179:30 | i | cfg.rb:42:15:42:24 | self |
+| cfg.rb:179:30:179:30 | i | cfg.rb:43:3:43:31 | [match] when ... |
+| cfg.rb:179:30:179:30 | i | cfg.rb:43:3:43:31 | [no-match] when ... |
+| cfg.rb:179:30:179:30 | i | cfg.rb:43:8:43:8 | 2 |
+| cfg.rb:179:30:179:30 | i | cfg.rb:43:11:43:11 | 3 |
+| cfg.rb:179:30:179:30 | i | cfg.rb:43:14:43:14 | 4 |
+| cfg.rb:179:30:179:30 | i | cfg.rb:43:21:43:31 | self |
+| cfg.rb:179:30:179:30 | i | cfg.rb:44:8:44:18 | self |
+| cfg.rb:179:30:179:30 | i | cfg.rb:47:1:50:3 | case ... |
+| cfg.rb:179:30:179:30 | i | cfg.rb:48:3:48:29 | [false] when ... |
+| cfg.rb:179:30:179:30 | i | cfg.rb:48:3:48:29 | [true] when ... |
+| cfg.rb:179:30:179:30 | i | cfg.rb:48:20:48:29 | self |
+| cfg.rb:179:30:179:30 | i | cfg.rb:49:3:49:37 | [false] when ... |
+| cfg.rb:179:30:179:30 | i | cfg.rb:49:3:49:37 | [true] when ... |
+| cfg.rb:179:30:179:30 | i | cfg.rb:49:8:49:8 | b |
+| cfg.rb:179:30:179:30 | i | cfg.rb:49:16:49:16 | b |
+| cfg.rb:179:30:179:30 | i | cfg.rb:49:27:49:37 | self |
+| cfg.rb:179:30:179:30 | i | cfg.rb:60:17:60:40 | ... ? ... : ... |
+| cfg.rb:179:30:179:30 | i | cfg.rb:60:27:60:31 | hello |
+| cfg.rb:179:30:179:30 | i | cfg.rb:60:37:60:39 | bye |
+| cfg.rb:179:30:179:30 | i | cfg.rb:75:1:75:47 | if ... |
+| cfg.rb:179:30:179:30 | i | cfg.rb:75:15:75:15 | 0 |
+| cfg.rb:179:30:179:30 | i | cfg.rb:75:17:75:43 | elsif ... |
+| cfg.rb:179:30:179:30 | i | cfg.rb:75:23:75:23 | x |
+| cfg.rb:179:30:179:30 | i | cfg.rb:75:35:75:36 | 10 |
+| cfg.rb:179:30:179:30 | i | cfg.rb:75:43:75:43 | x |
+| cfg.rb:179:30:179:30 | i | cfg.rb:90:5:90:5 | [false] ! ... |
+| cfg.rb:179:30:179:30 | i | cfg.rb:90:5:90:5 | [true] ! ... |
+| cfg.rb:179:30:179:30 | i | cfg.rb:90:5:90:5 | if ... |
+| cfg.rb:179:30:179:30 | i | cfg.rb:90:5:90:5 | x |
+| cfg.rb:179:30:179:30 | i | cfg.rb:113:1:113:9 | self |
+| cfg.rb:179:30:179:30 | i | cfg.rb:113:1:113:19 | ... if ... |
+| cfg.rb:179:30:179:30 | i | cfg.rb:136:1:136:29 | ... rescue ... |
+| cfg.rb:179:30:179:30 | i | cfg.rb:136:12:136:29 | self |
+| cfg.rb:179:30:179:30 | i | cfg.rb:172:1:172:49 | unless ... |
+| cfg.rb:179:30:179:30 | i | cfg.rb:172:21:172:29 | self |
+| cfg.rb:179:30:179:30 | i | cfg.rb:172:36:172:45 | self |
+| cfg.rb:179:30:179:30 | i | cfg.rb:174:1:174:9 | self |
+| cfg.rb:179:30:179:30 | i | cfg.rb:174:1:174:23 | ... unless ... |
+| cfg.rb:179:30:179:30 | i | cfg.rb:176:1:176:41 | until ... |
+| cfg.rb:179:30:179:30 | i | cfg.rb:176:7:176:7 | x |
+| cfg.rb:179:30:179:30 | i | cfg.rb:176:17:176:17 | x |
+| cfg.rb:179:30:179:30 | i | cfg.rb:179:2:179:13 | self |
+| cfg.rb:179:30:179:30 | i | cfg.rb:179:30:179:30 | i |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:1:1:221:1 | enter cfg.rb |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:32:9:32:9 | 1 |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:35:1:37:3 | if ... |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:41:1:45:3 | case ... |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:42:3:42:24 | [match] when ... |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:42:3:42:24 | [no-match] when ... |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:42:15:42:24 | self |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:43:3:43:31 | [match] when ... |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:43:3:43:31 | [no-match] when ... |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:43:8:43:8 | 2 |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:43:11:43:11 | 3 |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:43:14:43:14 | 4 |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:43:21:43:31 | self |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:44:8:44:18 | self |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:47:1:50:3 | case ... |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:48:3:48:29 | [false] when ... |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:48:3:48:29 | [true] when ... |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:48:20:48:29 | self |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:49:3:49:37 | [false] when ... |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:49:3:49:37 | [true] when ... |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:49:8:49:8 | b |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:49:16:49:16 | b |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:49:27:49:37 | self |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:60:17:60:40 | ... ? ... : ... |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:60:27:60:31 | hello |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:60:37:60:39 | bye |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:75:1:75:47 | if ... |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:75:15:75:15 | 0 |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:75:17:75:43 | elsif ... |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:75:23:75:23 | x |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:75:35:75:36 | 10 |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:75:43:75:43 | x |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:90:5:90:5 | [false] ! ... |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:90:5:90:5 | [true] ! ... |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:90:5:90:5 | if ... |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:90:5:90:5 | x |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:113:1:113:9 | self |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:113:1:113:19 | ... if ... |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:136:1:136:29 | ... rescue ... |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:136:12:136:29 | self |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:172:1:172:49 | unless ... |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:172:21:172:29 | self |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:172:36:172:45 | self |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:174:1:174:9 | self |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:174:1:174:23 | ... unless ... |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:176:1:176:41 | until ... |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:176:7:176:7 | x |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:176:17:176:17 | x |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:179:1:179:36 | ... until ... |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:179:2:179:13 | self |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:179:30:179:30 | i |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:182:1:186:3 | while ... |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:182:7:182:7 | x |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:183:3:183:3 | x |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:184:3:184:25 | if ... |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:184:18:184:21 | redo |
+| cfg.rb:182:7:182:7 | x | cfg.rb:1:1:221:1 | enter cfg.rb |
+| cfg.rb:182:7:182:7 | x | cfg.rb:32:9:32:9 | 1 |
+| cfg.rb:182:7:182:7 | x | cfg.rb:35:1:37:3 | if ... |
+| cfg.rb:182:7:182:7 | x | cfg.rb:41:1:45:3 | case ... |
+| cfg.rb:182:7:182:7 | x | cfg.rb:42:3:42:24 | [match] when ... |
+| cfg.rb:182:7:182:7 | x | cfg.rb:42:3:42:24 | [no-match] when ... |
+| cfg.rb:182:7:182:7 | x | cfg.rb:42:15:42:24 | self |
+| cfg.rb:182:7:182:7 | x | cfg.rb:43:3:43:31 | [match] when ... |
+| cfg.rb:182:7:182:7 | x | cfg.rb:43:3:43:31 | [no-match] when ... |
+| cfg.rb:182:7:182:7 | x | cfg.rb:43:8:43:8 | 2 |
+| cfg.rb:182:7:182:7 | x | cfg.rb:43:11:43:11 | 3 |
+| cfg.rb:182:7:182:7 | x | cfg.rb:43:14:43:14 | 4 |
+| cfg.rb:182:7:182:7 | x | cfg.rb:43:21:43:31 | self |
+| cfg.rb:182:7:182:7 | x | cfg.rb:44:8:44:18 | self |
+| cfg.rb:182:7:182:7 | x | cfg.rb:47:1:50:3 | case ... |
+| cfg.rb:182:7:182:7 | x | cfg.rb:48:3:48:29 | [false] when ... |
+| cfg.rb:182:7:182:7 | x | cfg.rb:48:3:48:29 | [true] when ... |
+| cfg.rb:182:7:182:7 | x | cfg.rb:48:20:48:29 | self |
+| cfg.rb:182:7:182:7 | x | cfg.rb:49:3:49:37 | [false] when ... |
+| cfg.rb:182:7:182:7 | x | cfg.rb:49:3:49:37 | [true] when ... |
+| cfg.rb:182:7:182:7 | x | cfg.rb:49:8:49:8 | b |
+| cfg.rb:182:7:182:7 | x | cfg.rb:49:16:49:16 | b |
+| cfg.rb:182:7:182:7 | x | cfg.rb:49:27:49:37 | self |
+| cfg.rb:182:7:182:7 | x | cfg.rb:60:17:60:40 | ... ? ... : ... |
+| cfg.rb:182:7:182:7 | x | cfg.rb:60:27:60:31 | hello |
+| cfg.rb:182:7:182:7 | x | cfg.rb:60:37:60:39 | bye |
+| cfg.rb:182:7:182:7 | x | cfg.rb:75:1:75:47 | if ... |
+| cfg.rb:182:7:182:7 | x | cfg.rb:75:15:75:15 | 0 |
+| cfg.rb:182:7:182:7 | x | cfg.rb:75:17:75:43 | elsif ... |
+| cfg.rb:182:7:182:7 | x | cfg.rb:75:23:75:23 | x |
+| cfg.rb:182:7:182:7 | x | cfg.rb:75:35:75:36 | 10 |
+| cfg.rb:182:7:182:7 | x | cfg.rb:75:43:75:43 | x |
+| cfg.rb:182:7:182:7 | x | cfg.rb:90:5:90:5 | [false] ! ... |
+| cfg.rb:182:7:182:7 | x | cfg.rb:90:5:90:5 | [true] ! ... |
+| cfg.rb:182:7:182:7 | x | cfg.rb:90:5:90:5 | if ... |
+| cfg.rb:182:7:182:7 | x | cfg.rb:90:5:90:5 | x |
+| cfg.rb:182:7:182:7 | x | cfg.rb:113:1:113:9 | self |
+| cfg.rb:182:7:182:7 | x | cfg.rb:113:1:113:19 | ... if ... |
+| cfg.rb:182:7:182:7 | x | cfg.rb:136:1:136:29 | ... rescue ... |
+| cfg.rb:182:7:182:7 | x | cfg.rb:136:12:136:29 | self |
+| cfg.rb:182:7:182:7 | x | cfg.rb:172:1:172:49 | unless ... |
+| cfg.rb:182:7:182:7 | x | cfg.rb:172:21:172:29 | self |
+| cfg.rb:182:7:182:7 | x | cfg.rb:172:36:172:45 | self |
+| cfg.rb:182:7:182:7 | x | cfg.rb:174:1:174:9 | self |
+| cfg.rb:182:7:182:7 | x | cfg.rb:174:1:174:23 | ... unless ... |
+| cfg.rb:182:7:182:7 | x | cfg.rb:176:1:176:41 | until ... |
+| cfg.rb:182:7:182:7 | x | cfg.rb:176:7:176:7 | x |
+| cfg.rb:182:7:182:7 | x | cfg.rb:176:17:176:17 | x |
+| cfg.rb:182:7:182:7 | x | cfg.rb:179:1:179:36 | ... until ... |
+| cfg.rb:182:7:182:7 | x | cfg.rb:179:2:179:13 | self |
+| cfg.rb:182:7:182:7 | x | cfg.rb:179:30:179:30 | i |
+| cfg.rb:182:7:182:7 | x | cfg.rb:182:7:182:7 | x |
+| cfg.rb:182:7:182:7 | x | cfg.rb:183:3:183:3 | x |
+| cfg.rb:182:7:182:7 | x | cfg.rb:184:3:184:25 | if ... |
+| cfg.rb:182:7:182:7 | x | cfg.rb:184:18:184:21 | redo |
+| cfg.rb:183:3:183:3 | x | cfg.rb:183:3:183:3 | x |
+| cfg.rb:183:3:183:3 | x | cfg.rb:184:18:184:21 | redo |
+| cfg.rb:184:3:184:25 | if ... | cfg.rb:183:3:183:3 | x |
+| cfg.rb:184:3:184:25 | if ... | cfg.rb:184:3:184:25 | if ... |
+| cfg.rb:184:3:184:25 | if ... | cfg.rb:184:18:184:21 | redo |
+| cfg.rb:184:18:184:21 | redo | cfg.rb:184:18:184:21 | redo |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:1:1:221:1 | enter cfg.rb |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:32:9:32:9 | 1 |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:35:1:37:3 | if ... |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:41:1:45:3 | case ... |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:42:3:42:24 | [match] when ... |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:42:3:42:24 | [no-match] when ... |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:42:15:42:24 | self |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:43:3:43:31 | [match] when ... |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:43:3:43:31 | [no-match] when ... |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:43:8:43:8 | 2 |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:43:11:43:11 | 3 |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:43:14:43:14 | 4 |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:43:21:43:31 | self |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:44:8:44:18 | self |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:47:1:50:3 | case ... |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:48:3:48:29 | [false] when ... |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:48:3:48:29 | [true] when ... |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:48:20:48:29 | self |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:49:3:49:37 | [false] when ... |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:49:3:49:37 | [true] when ... |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:49:8:49:8 | b |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:49:16:49:16 | b |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:49:27:49:37 | self |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:60:17:60:40 | ... ? ... : ... |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:60:27:60:31 | hello |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:60:37:60:39 | bye |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:75:1:75:47 | if ... |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:75:15:75:15 | 0 |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:75:17:75:43 | elsif ... |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:75:23:75:23 | x |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:75:35:75:36 | 10 |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:75:43:75:43 | x |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:90:5:90:5 | [false] ! ... |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:90:5:90:5 | [true] ! ... |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:90:5:90:5 | if ... |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:90:5:90:5 | x |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:113:1:113:9 | self |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:113:1:113:19 | ... if ... |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:136:1:136:29 | ... rescue ... |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:136:12:136:29 | self |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:172:1:172:49 | unless ... |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:172:21:172:29 | self |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:172:36:172:45 | self |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:174:1:174:9 | self |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:174:1:174:23 | ... unless ... |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:176:1:176:41 | until ... |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:176:7:176:7 | x |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:176:17:176:17 | x |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:179:1:179:36 | ... until ... |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:179:2:179:13 | self |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:179:30:179:30 | i |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:182:1:186:3 | while ... |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:182:7:182:7 | x |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:183:3:183:3 | x |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:184:3:184:25 | if ... |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:184:18:184:21 | redo |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:188:1:188:35 | ... while ... |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:188:2:188:13 | self |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:188:30:188:30 | i |
+| cfg.rb:188:2:188:13 | self | cfg.rb:188:2:188:13 | self |
+| cfg.rb:188:30:188:30 | i | cfg.rb:1:1:221:1 | enter cfg.rb |
+| cfg.rb:188:30:188:30 | i | cfg.rb:32:9:32:9 | 1 |
+| cfg.rb:188:30:188:30 | i | cfg.rb:35:1:37:3 | if ... |
+| cfg.rb:188:30:188:30 | i | cfg.rb:41:1:45:3 | case ... |
+| cfg.rb:188:30:188:30 | i | cfg.rb:42:3:42:24 | [match] when ... |
+| cfg.rb:188:30:188:30 | i | cfg.rb:42:3:42:24 | [no-match] when ... |
+| cfg.rb:188:30:188:30 | i | cfg.rb:42:15:42:24 | self |
+| cfg.rb:188:30:188:30 | i | cfg.rb:43:3:43:31 | [match] when ... |
+| cfg.rb:188:30:188:30 | i | cfg.rb:43:3:43:31 | [no-match] when ... |
+| cfg.rb:188:30:188:30 | i | cfg.rb:43:8:43:8 | 2 |
+| cfg.rb:188:30:188:30 | i | cfg.rb:43:11:43:11 | 3 |
+| cfg.rb:188:30:188:30 | i | cfg.rb:43:14:43:14 | 4 |
+| cfg.rb:188:30:188:30 | i | cfg.rb:43:21:43:31 | self |
+| cfg.rb:188:30:188:30 | i | cfg.rb:44:8:44:18 | self |
+| cfg.rb:188:30:188:30 | i | cfg.rb:47:1:50:3 | case ... |
+| cfg.rb:188:30:188:30 | i | cfg.rb:48:3:48:29 | [false] when ... |
+| cfg.rb:188:30:188:30 | i | cfg.rb:48:3:48:29 | [true] when ... |
+| cfg.rb:188:30:188:30 | i | cfg.rb:48:20:48:29 | self |
+| cfg.rb:188:30:188:30 | i | cfg.rb:49:3:49:37 | [false] when ... |
+| cfg.rb:188:30:188:30 | i | cfg.rb:49:3:49:37 | [true] when ... |
+| cfg.rb:188:30:188:30 | i | cfg.rb:49:8:49:8 | b |
+| cfg.rb:188:30:188:30 | i | cfg.rb:49:16:49:16 | b |
+| cfg.rb:188:30:188:30 | i | cfg.rb:49:27:49:37 | self |
+| cfg.rb:188:30:188:30 | i | cfg.rb:60:17:60:40 | ... ? ... : ... |
+| cfg.rb:188:30:188:30 | i | cfg.rb:60:27:60:31 | hello |
+| cfg.rb:188:30:188:30 | i | cfg.rb:60:37:60:39 | bye |
+| cfg.rb:188:30:188:30 | i | cfg.rb:75:1:75:47 | if ... |
+| cfg.rb:188:30:188:30 | i | cfg.rb:75:15:75:15 | 0 |
+| cfg.rb:188:30:188:30 | i | cfg.rb:75:17:75:43 | elsif ... |
+| cfg.rb:188:30:188:30 | i | cfg.rb:75:23:75:23 | x |
+| cfg.rb:188:30:188:30 | i | cfg.rb:75:35:75:36 | 10 |
+| cfg.rb:188:30:188:30 | i | cfg.rb:75:43:75:43 | x |
+| cfg.rb:188:30:188:30 | i | cfg.rb:90:5:90:5 | [false] ! ... |
+| cfg.rb:188:30:188:30 | i | cfg.rb:90:5:90:5 | [true] ! ... |
+| cfg.rb:188:30:188:30 | i | cfg.rb:90:5:90:5 | if ... |
+| cfg.rb:188:30:188:30 | i | cfg.rb:90:5:90:5 | x |
+| cfg.rb:188:30:188:30 | i | cfg.rb:113:1:113:9 | self |
+| cfg.rb:188:30:188:30 | i | cfg.rb:113:1:113:19 | ... if ... |
+| cfg.rb:188:30:188:30 | i | cfg.rb:136:1:136:29 | ... rescue ... |
+| cfg.rb:188:30:188:30 | i | cfg.rb:136:12:136:29 | self |
+| cfg.rb:188:30:188:30 | i | cfg.rb:172:1:172:49 | unless ... |
+| cfg.rb:188:30:188:30 | i | cfg.rb:172:21:172:29 | self |
+| cfg.rb:188:30:188:30 | i | cfg.rb:172:36:172:45 | self |
+| cfg.rb:188:30:188:30 | i | cfg.rb:174:1:174:9 | self |
+| cfg.rb:188:30:188:30 | i | cfg.rb:174:1:174:23 | ... unless ... |
+| cfg.rb:188:30:188:30 | i | cfg.rb:176:1:176:41 | until ... |
+| cfg.rb:188:30:188:30 | i | cfg.rb:176:7:176:7 | x |
+| cfg.rb:188:30:188:30 | i | cfg.rb:176:17:176:17 | x |
+| cfg.rb:188:30:188:30 | i | cfg.rb:179:1:179:36 | ... until ... |
+| cfg.rb:188:30:188:30 | i | cfg.rb:179:2:179:13 | self |
+| cfg.rb:188:30:188:30 | i | cfg.rb:179:30:179:30 | i |
+| cfg.rb:188:30:188:30 | i | cfg.rb:182:1:186:3 | while ... |
+| cfg.rb:188:30:188:30 | i | cfg.rb:182:7:182:7 | x |
+| cfg.rb:188:30:188:30 | i | cfg.rb:183:3:183:3 | x |
+| cfg.rb:188:30:188:30 | i | cfg.rb:184:3:184:25 | if ... |
+| cfg.rb:188:30:188:30 | i | cfg.rb:184:18:184:21 | redo |
+| cfg.rb:188:30:188:30 | i | cfg.rb:188:2:188:13 | self |
+| cfg.rb:188:30:188:30 | i | cfg.rb:188:30:188:30 | i |
+| cfg.rb:190:1:192:3 | enter run_block | cfg.rb:190:1:192:3 | enter run_block |
+| cfg.rb:194:11:194:23 | enter { ... } | cfg.rb:194:11:194:23 | enter { ... } |
+| cfg.rb:196:1:198:3 | enter forward_param | cfg.rb:196:1:198:3 | enter forward_param |
+| cfg.rb:200:9:200:32 | enter { ... } | cfg.rb:200:9:200:32 | enter { ... } |
+| cfg.rb:202:9:202:35 | enter do ... end | cfg.rb:202:9:202:35 | enter do ... end |
+| cfg.rb:205:1:205:3 | __synth__0__1 | cfg.rb:205:1:205:3 | __synth__0__1 |
+| cfg.rb:205:1:205:3 | nil | cfg.rb:205:1:205:3 | nil |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:1:1:221:1 | enter cfg.rb |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:32:9:32:9 | 1 |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:35:1:37:3 | if ... |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:41:1:45:3 | case ... |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:42:3:42:24 | [match] when ... |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:42:3:42:24 | [no-match] when ... |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:42:15:42:24 | self |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:43:3:43:31 | [match] when ... |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:43:3:43:31 | [no-match] when ... |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:43:8:43:8 | 2 |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:43:11:43:11 | 3 |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:43:14:43:14 | 4 |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:43:21:43:31 | self |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:44:8:44:18 | self |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:47:1:50:3 | case ... |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:48:3:48:29 | [false] when ... |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:48:3:48:29 | [true] when ... |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:48:20:48:29 | self |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:49:3:49:37 | [false] when ... |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:49:3:49:37 | [true] when ... |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:49:8:49:8 | b |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:49:16:49:16 | b |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:49:27:49:37 | self |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:60:17:60:40 | ... ? ... : ... |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:60:27:60:31 | hello |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:60:37:60:39 | bye |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:75:1:75:47 | if ... |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:75:15:75:15 | 0 |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:75:17:75:43 | elsif ... |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:75:23:75:23 | x |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:75:35:75:36 | 10 |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:75:43:75:43 | x |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:90:5:90:5 | [false] ! ... |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:90:5:90:5 | [true] ! ... |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:90:5:90:5 | if ... |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:90:5:90:5 | x |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:113:1:113:9 | self |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:113:1:113:19 | ... if ... |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:136:1:136:29 | ... rescue ... |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:136:12:136:29 | self |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:172:1:172:49 | unless ... |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:172:21:172:29 | self |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:172:36:172:45 | self |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:174:1:174:9 | self |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:174:1:174:23 | ... unless ... |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:176:1:176:41 | until ... |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:176:7:176:7 | x |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:176:17:176:17 | x |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:179:1:179:36 | ... until ... |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:179:2:179:13 | self |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:179:30:179:30 | i |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:182:1:186:3 | while ... |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:182:7:182:7 | x |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:183:3:183:3 | x |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:184:3:184:25 | if ... |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:184:18:184:21 | redo |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:188:1:188:35 | ... while ... |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:188:2:188:13 | self |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:188:30:188:30 | i |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:205:1:205:3 | __synth__0__1 |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:205:1:205:3 | nil |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:205:4:205:5 | if ... |
+| cfg.rb:205:15:205:23 | enter { ... } | cfg.rb:205:15:205:23 | enter { ... } |
+| cfg.rb:207:1:211:3 | enter filter_nil | cfg.rb:207:1:211:3 | enter filter_nil |
+| cfg.rb:208:15:210:5 | enter do ... end | cfg.rb:208:15:210:5 | enter do ... end |
+| cfg.rb:213:14:216:3 | enter do ... end | cfg.rb:213:14:216:3 | enter do ... end |
+| constant_compound_assign.rb:1:1:22:4 | enter constant_compound_assign.rb | constant_compound_assign.rb:1:1:22:4 | enter constant_compound_assign.rb |
+| constant_compound_assign.rb:5:18:5:20 | ... \|\| ... | constant_compound_assign.rb:1:1:22:4 | enter constant_compound_assign.rb |
+| constant_compound_assign.rb:5:18:5:20 | ... \|\| ... | constant_compound_assign.rb:5:18:5:20 | ... \|\| ... |
+| constant_compound_assign.rb:5:18:5:20 | ... \|\| ... | constant_compound_assign.rb:5:22:5:24 | 123 |
+| constant_compound_assign.rb:5:22:5:24 | 123 | constant_compound_assign.rb:5:22:5:24 | 123 |
+| constant_compound_assign.rb:14:14:14:16 | ... \|\| ... | constant_compound_assign.rb:1:1:22:4 | enter constant_compound_assign.rb |
+| constant_compound_assign.rb:14:14:14:16 | ... \|\| ... | constant_compound_assign.rb:5:18:5:20 | ... \|\| ... |
+| constant_compound_assign.rb:14:14:14:16 | ... \|\| ... | constant_compound_assign.rb:5:22:5:24 | 123 |
+| constant_compound_assign.rb:14:14:14:16 | ... \|\| ... | constant_compound_assign.rb:14:14:14:16 | ... \|\| ... |
+| constant_compound_assign.rb:14:14:14:16 | ... \|\| ... | constant_compound_assign.rb:14:18:14:20 | 123 |
+| constant_compound_assign.rb:14:18:14:20 | 123 | constant_compound_assign.rb:14:18:14:20 | 123 |
+| constant_compound_assign.rb:19:17:19:19 | ... \|\| ... | constant_compound_assign.rb:1:1:22:4 | enter constant_compound_assign.rb |
+| constant_compound_assign.rb:19:17:19:19 | ... \|\| ... | constant_compound_assign.rb:5:18:5:20 | ... \|\| ... |
+| constant_compound_assign.rb:19:17:19:19 | ... \|\| ... | constant_compound_assign.rb:5:22:5:24 | 123 |
+| constant_compound_assign.rb:19:17:19:19 | ... \|\| ... | constant_compound_assign.rb:14:14:14:16 | ... \|\| ... |
+| constant_compound_assign.rb:19:17:19:19 | ... \|\| ... | constant_compound_assign.rb:14:18:14:20 | 123 |
+| constant_compound_assign.rb:19:17:19:19 | ... \|\| ... | constant_compound_assign.rb:19:17:19:19 | ... \|\| ... |
+| constant_compound_assign.rb:19:17:19:19 | ... \|\| ... | constant_compound_assign.rb:19:21:19:23 | 123 |
+| constant_compound_assign.rb:19:21:19:23 | 123 | constant_compound_assign.rb:19:21:19:23 | 123 |
+| desugar.rb:1:1:3:3 | enter m1 | desugar.rb:1:1:3:3 | enter m1 |
+| desugar.rb:1:1:38:17 | enter desugar.rb | desugar.rb:1:1:38:17 | enter desugar.rb |
+| desugar.rb:5:1:7:3 | enter m2 | desugar.rb:5:1:7:3 | enter m2 |
+| desugar.rb:9:1:11:3 | enter m3 | desugar.rb:9:1:11:3 | enter m3 |
+| desugar.rb:13:1:15:3 | enter m4 | desugar.rb:13:1:15:3 | enter m4 |
+| desugar.rb:17:1:19:3 | enter m5 | desugar.rb:17:1:19:3 | enter m5 |
+| desugar.rb:21:1:23:3 | enter m6 | desugar.rb:21:1:23:3 | enter m6 |
+| desugar.rb:25:1:27:3 | enter m7 | desugar.rb:25:1:27:3 | enter m7 |
+| exit.rb:1:1:6:3 | enter m1 | exit.rb:1:1:6:3 | enter m1 |
+| exit.rb:1:1:6:3 | exit m1 | exit.rb:1:1:6:3 | exit m1 |
+| exit.rb:1:1:13:4 | enter exit.rb | exit.rb:1:1:13:4 | enter exit.rb |
+| exit.rb:2:3:4:5 | if ... | exit.rb:1:1:6:3 | enter m1 |
+| exit.rb:2:3:4:5 | if ... | exit.rb:2:3:4:5 | if ... |
+| exit.rb:3:5:3:10 | self | exit.rb:3:5:3:10 | self |
+| exit.rb:8:1:13:3 | enter m2 | exit.rb:8:1:13:3 | enter m2 |
+| exit.rb:8:1:13:3 | exit m2 | exit.rb:8:1:13:3 | exit m2 |
+| exit.rb:9:3:11:5 | if ... | exit.rb:8:1:13:3 | enter m2 |
+| exit.rb:9:3:11:5 | if ... | exit.rb:9:3:11:5 | if ... |
+| exit.rb:10:5:10:18 | self | exit.rb:10:5:10:18 | self |
+| heredoc.rb:1:1:7:3 | enter double_heredoc | heredoc.rb:1:1:7:3 | enter double_heredoc |
+| heredoc.rb:1:1:7:4 | enter heredoc.rb | heredoc.rb:1:1:7:4 | enter heredoc.rb |
+| ifs.rb:1:1:9:3 | enter m1 | ifs.rb:1:1:9:3 | enter m1 |
+| ifs.rb:1:1:58:4 | enter ifs.rb | ifs.rb:1:1:58:4 | enter ifs.rb |
+| ifs.rb:2:3:8:5 | if ... | ifs.rb:1:1:9:3 | enter m1 |
+| ifs.rb:2:3:8:5 | if ... | ifs.rb:2:3:8:5 | if ... |
+| ifs.rb:2:3:8:5 | if ... | ifs.rb:3:5:3:30 | self |
+| ifs.rb:2:3:8:5 | if ... | ifs.rb:4:3:7:35 | elsif ... |
+| ifs.rb:2:3:8:5 | if ... | ifs.rb:4:9:4:9 | x |
+| ifs.rb:2:3:8:5 | if ... | ifs.rb:4:9:4:24 | [false] ... and ... |
+| ifs.rb:2:3:8:5 | if ... | ifs.rb:4:9:4:24 | [true] ... and ... |
+| ifs.rb:2:3:8:5 | if ... | ifs.rb:4:9:4:38 | [false] ... and ... |
+| ifs.rb:2:3:8:5 | if ... | ifs.rb:4:9:4:38 | [true] ... and ... |
+| ifs.rb:2:3:8:5 | if ... | ifs.rb:4:20:4:20 | x |
+| ifs.rb:2:3:8:5 | if ... | ifs.rb:4:30:4:38 | [false] ! ... |
+| ifs.rb:2:3:8:5 | if ... | ifs.rb:4:30:4:38 | [true] ! ... |
+| ifs.rb:2:3:8:5 | if ... | ifs.rb:4:31:4:38 | [false] ( ... ) |
+| ifs.rb:2:3:8:5 | if ... | ifs.rb:4:31:4:38 | [true] ( ... ) |
+| ifs.rb:2:3:8:5 | if ... | ifs.rb:4:32:4:32 | x |
+| ifs.rb:2:3:8:5 | if ... | ifs.rb:5:5:5:17 | self |
+| ifs.rb:2:3:8:5 | if ... | ifs.rb:7:5:7:35 | self |
+| ifs.rb:3:5:3:30 | self | ifs.rb:3:5:3:30 | self |
+| ifs.rb:4:3:7:35 | elsif ... | ifs.rb:4:3:7:35 | elsif ... |
+| ifs.rb:4:3:7:35 | elsif ... | ifs.rb:4:9:4:9 | x |
+| ifs.rb:4:3:7:35 | elsif ... | ifs.rb:4:9:4:24 | [false] ... and ... |
+| ifs.rb:4:3:7:35 | elsif ... | ifs.rb:4:9:4:24 | [true] ... and ... |
+| ifs.rb:4:3:7:35 | elsif ... | ifs.rb:4:9:4:38 | [false] ... and ... |
+| ifs.rb:4:3:7:35 | elsif ... | ifs.rb:4:9:4:38 | [true] ... and ... |
+| ifs.rb:4:3:7:35 | elsif ... | ifs.rb:4:20:4:20 | x |
+| ifs.rb:4:3:7:35 | elsif ... | ifs.rb:4:30:4:38 | [false] ! ... |
+| ifs.rb:4:3:7:35 | elsif ... | ifs.rb:4:30:4:38 | [true] ! ... |
+| ifs.rb:4:3:7:35 | elsif ... | ifs.rb:4:31:4:38 | [false] ( ... ) |
+| ifs.rb:4:3:7:35 | elsif ... | ifs.rb:4:31:4:38 | [true] ( ... ) |
+| ifs.rb:4:3:7:35 | elsif ... | ifs.rb:4:32:4:32 | x |
+| ifs.rb:4:3:7:35 | elsif ... | ifs.rb:5:5:5:17 | self |
+| ifs.rb:4:3:7:35 | elsif ... | ifs.rb:7:5:7:35 | self |
+| ifs.rb:4:9:4:9 | x | ifs.rb:4:9:4:9 | x |
+| ifs.rb:4:9:4:24 | [false] ... and ... | ifs.rb:4:9:4:24 | [false] ... and ... |
+| ifs.rb:4:9:4:24 | [true] ... and ... | ifs.rb:4:9:4:24 | [true] ... and ... |
+| ifs.rb:4:9:4:38 | [false] ... and ... | ifs.rb:4:9:4:24 | [false] ... and ... |
+| ifs.rb:4:9:4:38 | [false] ... and ... | ifs.rb:4:9:4:38 | [false] ... and ... |
+| ifs.rb:4:9:4:38 | [false] ... and ... | ifs.rb:4:30:4:38 | [false] ! ... |
+| ifs.rb:4:9:4:38 | [false] ... and ... | ifs.rb:4:31:4:38 | [true] ( ... ) |
+| ifs.rb:4:9:4:38 | [true] ... and ... | ifs.rb:4:9:4:38 | [true] ... and ... |
+| ifs.rb:4:9:4:38 | [true] ... and ... | ifs.rb:4:30:4:38 | [true] ! ... |
+| ifs.rb:4:9:4:38 | [true] ... and ... | ifs.rb:4:31:4:38 | [false] ( ... ) |
+| ifs.rb:4:20:4:20 | x | ifs.rb:4:20:4:20 | x |
+| ifs.rb:4:30:4:38 | [false] ! ... | ifs.rb:4:30:4:38 | [false] ! ... |
+| ifs.rb:4:30:4:38 | [false] ! ... | ifs.rb:4:31:4:38 | [true] ( ... ) |
+| ifs.rb:4:30:4:38 | [true] ! ... | ifs.rb:4:30:4:38 | [true] ! ... |
+| ifs.rb:4:30:4:38 | [true] ! ... | ifs.rb:4:31:4:38 | [false] ( ... ) |
+| ifs.rb:4:31:4:38 | [false] ( ... ) | ifs.rb:4:31:4:38 | [false] ( ... ) |
+| ifs.rb:4:31:4:38 | [true] ( ... ) | ifs.rb:4:31:4:38 | [true] ( ... ) |
+| ifs.rb:4:32:4:32 | x | ifs.rb:4:9:4:24 | [true] ... and ... |
+| ifs.rb:4:32:4:32 | x | ifs.rb:4:32:4:32 | x |
+| ifs.rb:5:5:5:17 | self | ifs.rb:4:9:4:38 | [true] ... and ... |
+| ifs.rb:5:5:5:17 | self | ifs.rb:4:30:4:38 | [true] ! ... |
+| ifs.rb:5:5:5:17 | self | ifs.rb:4:31:4:38 | [false] ( ... ) |
+| ifs.rb:5:5:5:17 | self | ifs.rb:5:5:5:17 | self |
+| ifs.rb:7:5:7:35 | self | ifs.rb:4:9:4:24 | [false] ... and ... |
+| ifs.rb:7:5:7:35 | self | ifs.rb:4:9:4:38 | [false] ... and ... |
+| ifs.rb:7:5:7:35 | self | ifs.rb:4:30:4:38 | [false] ! ... |
+| ifs.rb:7:5:7:35 | self | ifs.rb:4:31:4:38 | [true] ( ... ) |
+| ifs.rb:7:5:7:35 | self | ifs.rb:7:5:7:35 | self |
+| ifs.rb:11:1:16:3 | enter m2 | ifs.rb:11:1:16:3 | enter m2 |
+| ifs.rb:11:1:16:3 | exit m2 (normal) | ifs.rb:11:1:16:3 | enter m2 |
+| ifs.rb:11:1:16:3 | exit m2 (normal) | ifs.rb:11:1:16:3 | exit m2 (normal) |
+| ifs.rb:11:1:16:3 | exit m2 (normal) | ifs.rb:12:3:14:5 | if ... |
+| ifs.rb:11:1:16:3 | exit m2 (normal) | ifs.rb:13:12:13:12 | 0 |
+| ifs.rb:12:3:14:5 | if ... | ifs.rb:12:3:14:5 | if ... |
+| ifs.rb:13:12:13:12 | 0 | ifs.rb:13:12:13:12 | 0 |
+| ifs.rb:18:1:26:3 | enter m3 | ifs.rb:18:1:26:3 | enter m3 |
+| ifs.rb:19:3:24:5 | if ... | ifs.rb:18:1:26:3 | enter m3 |
+| ifs.rb:19:3:24:5 | if ... | ifs.rb:19:3:24:5 | if ... |
+| ifs.rb:19:3:24:5 | if ... | ifs.rb:20:5:20:5 | x |
+| ifs.rb:19:3:24:5 | if ... | ifs.rb:21:5:23:7 | if ... |
+| ifs.rb:19:3:24:5 | if ... | ifs.rb:22:7:22:7 | x |
+| ifs.rb:20:5:20:5 | x | ifs.rb:20:5:20:5 | x |
+| ifs.rb:21:5:23:7 | if ... | ifs.rb:20:5:20:5 | x |
+| ifs.rb:21:5:23:7 | if ... | ifs.rb:21:5:23:7 | if ... |
+| ifs.rb:21:5:23:7 | if ... | ifs.rb:22:7:22:7 | x |
+| ifs.rb:22:7:22:7 | x | ifs.rb:22:7:22:7 | x |
+| ifs.rb:28:1:30:3 | enter m4 | ifs.rb:28:1:30:3 | enter m4 |
+| ifs.rb:29:10:29:23 | [false] ( ... ) | ifs.rb:29:10:29:23 | [false] ( ... ) |
+| ifs.rb:29:10:29:23 | [false] ( ... ) | ifs.rb:29:11:29:22 | [false] ... ? ... : ... |
+| ifs.rb:29:10:29:23 | [true] ( ... ) | ifs.rb:29:10:29:23 | [true] ( ... ) |
+| ifs.rb:29:10:29:23 | [true] ( ... ) | ifs.rb:29:11:29:22 | [true] ... ? ... : ... |
+| ifs.rb:29:10:29:51 | ... ? ... : ... | ifs.rb:28:1:30:3 | enter m4 |
+| ifs.rb:29:10:29:51 | ... ? ... : ... | ifs.rb:29:10:29:23 | [false] ( ... ) |
+| ifs.rb:29:10:29:51 | ... ? ... : ... | ifs.rb:29:10:29:23 | [true] ( ... ) |
+| ifs.rb:29:10:29:51 | ... ? ... : ... | ifs.rb:29:10:29:51 | ... ? ... : ... |
+| ifs.rb:29:10:29:51 | ... ? ... : ... | ifs.rb:29:11:29:22 | [false] ... ? ... : ... |
+| ifs.rb:29:10:29:51 | ... ? ... : ... | ifs.rb:29:11:29:22 | [true] ... ? ... : ... |
+| ifs.rb:29:10:29:51 | ... ? ... : ... | ifs.rb:29:16:29:17 | b2 |
+| ifs.rb:29:10:29:51 | ... ? ... : ... | ifs.rb:29:21:29:22 | b3 |
+| ifs.rb:29:10:29:51 | ... ? ... : ... | ifs.rb:29:28:29:35 | b2 \|\| b3 |
+| ifs.rb:29:10:29:51 | ... ? ... : ... | ifs.rb:29:41:29:50 | !b2 \|\| !b3 |
+| ifs.rb:29:11:29:22 | [false] ... ? ... : ... | ifs.rb:29:11:29:22 | [false] ... ? ... : ... |
+| ifs.rb:29:11:29:22 | [true] ... ? ... : ... | ifs.rb:29:11:29:22 | [true] ... ? ... : ... |
+| ifs.rb:29:16:29:17 | b2 | ifs.rb:29:16:29:17 | b2 |
+| ifs.rb:29:21:29:22 | b3 | ifs.rb:29:21:29:22 | b3 |
+| ifs.rb:29:28:29:35 | b2 \|\| b3 | ifs.rb:29:10:29:23 | [true] ( ... ) |
+| ifs.rb:29:28:29:35 | b2 \|\| b3 | ifs.rb:29:11:29:22 | [true] ... ? ... : ... |
+| ifs.rb:29:28:29:35 | b2 \|\| b3 | ifs.rb:29:28:29:35 | b2 \|\| b3 |
+| ifs.rb:29:41:29:50 | !b2 \|\| !b3 | ifs.rb:29:10:29:23 | [false] ( ... ) |
+| ifs.rb:29:41:29:50 | !b2 \|\| !b3 | ifs.rb:29:11:29:22 | [false] ... ? ... : ... |
+| ifs.rb:29:41:29:50 | !b2 \|\| !b3 | ifs.rb:29:41:29:50 | !b2 \|\| !b3 |
+| ifs.rb:32:1:34:3 | enter m5 | ifs.rb:32:1:34:3 | enter m5 |
+| ifs.rb:33:3:33:100 | if ... | ifs.rb:32:1:34:3 | enter m5 |
+| ifs.rb:33:3:33:100 | if ... | ifs.rb:33:3:33:100 | if ... |
+| ifs.rb:33:3:33:100 | if ... | ifs.rb:33:6:33:49 | [false] ( ... ) |
+| ifs.rb:33:3:33:100 | if ... | ifs.rb:33:6:33:49 | [true] ( ... ) |
+| ifs.rb:33:3:33:100 | if ... | ifs.rb:33:7:33:48 | [false] if ... |
+| ifs.rb:33:3:33:100 | if ... | ifs.rb:33:7:33:48 | [true] if ... |
+| ifs.rb:33:3:33:100 | if ... | ifs.rb:33:13:33:19 | [false] then ... |
+| ifs.rb:33:3:33:100 | if ... | ifs.rb:33:13:33:19 | [true] then ... |
+| ifs.rb:33:3:33:100 | if ... | ifs.rb:33:18:33:19 | b2 |
+| ifs.rb:33:3:33:100 | if ... | ifs.rb:33:21:33:44 | [false] elsif ... |
+| ifs.rb:33:3:33:100 | if ... | ifs.rb:33:21:33:44 | [true] elsif ... |
+| ifs.rb:33:3:33:100 | if ... | ifs.rb:33:27:33:28 | b3 |
+| ifs.rb:33:3:33:100 | if ... | ifs.rb:33:30:33:36 | [false] then ... |
+| ifs.rb:33:3:33:100 | if ... | ifs.rb:33:30:33:36 | [true] then ... |
+| ifs.rb:33:3:33:100 | if ... | ifs.rb:33:35:33:36 | b4 |
+| ifs.rb:33:3:33:100 | if ... | ifs.rb:33:38:33:44 | [false] else ... |
+| ifs.rb:33:3:33:100 | if ... | ifs.rb:33:38:33:44 | [true] else ... |
+| ifs.rb:33:3:33:100 | if ... | ifs.rb:33:43:33:44 | b5 |
+| ifs.rb:33:3:33:100 | if ... | ifs.rb:33:57:33:70 | b2 \|\| b4 \|\| b5 |
+| ifs.rb:33:3:33:100 | if ... | ifs.rb:33:79:33:95 | !b2 \|\| !b4 \|\| !b5 |
+| ifs.rb:33:6:33:49 | [false] ( ... ) | ifs.rb:33:6:33:49 | [false] ( ... ) |
+| ifs.rb:33:6:33:49 | [false] ( ... ) | ifs.rb:33:7:33:48 | [false] if ... |
+| ifs.rb:33:6:33:49 | [false] ( ... ) | ifs.rb:33:13:33:19 | [false] then ... |
+| ifs.rb:33:6:33:49 | [false] ( ... ) | ifs.rb:33:21:33:44 | [false] elsif ... |
+| ifs.rb:33:6:33:49 | [false] ( ... ) | ifs.rb:33:30:33:36 | [false] then ... |
+| ifs.rb:33:6:33:49 | [false] ( ... ) | ifs.rb:33:38:33:44 | [false] else ... |
+| ifs.rb:33:6:33:49 | [true] ( ... ) | ifs.rb:33:6:33:49 | [true] ( ... ) |
+| ifs.rb:33:6:33:49 | [true] ( ... ) | ifs.rb:33:7:33:48 | [true] if ... |
+| ifs.rb:33:6:33:49 | [true] ( ... ) | ifs.rb:33:13:33:19 | [true] then ... |
+| ifs.rb:33:6:33:49 | [true] ( ... ) | ifs.rb:33:21:33:44 | [true] elsif ... |
+| ifs.rb:33:6:33:49 | [true] ( ... ) | ifs.rb:33:30:33:36 | [true] then ... |
+| ifs.rb:33:6:33:49 | [true] ( ... ) | ifs.rb:33:38:33:44 | [true] else ... |
+| ifs.rb:33:7:33:48 | [false] if ... | ifs.rb:33:7:33:48 | [false] if ... |
+| ifs.rb:33:7:33:48 | [false] if ... | ifs.rb:33:13:33:19 | [false] then ... |
+| ifs.rb:33:7:33:48 | [false] if ... | ifs.rb:33:21:33:44 | [false] elsif ... |
+| ifs.rb:33:7:33:48 | [false] if ... | ifs.rb:33:30:33:36 | [false] then ... |
+| ifs.rb:33:7:33:48 | [false] if ... | ifs.rb:33:38:33:44 | [false] else ... |
+| ifs.rb:33:7:33:48 | [true] if ... | ifs.rb:33:7:33:48 | [true] if ... |
+| ifs.rb:33:7:33:48 | [true] if ... | ifs.rb:33:13:33:19 | [true] then ... |
+| ifs.rb:33:7:33:48 | [true] if ... | ifs.rb:33:21:33:44 | [true] elsif ... |
+| ifs.rb:33:7:33:48 | [true] if ... | ifs.rb:33:30:33:36 | [true] then ... |
+| ifs.rb:33:7:33:48 | [true] if ... | ifs.rb:33:38:33:44 | [true] else ... |
+| ifs.rb:33:13:33:19 | [false] then ... | ifs.rb:33:13:33:19 | [false] then ... |
+| ifs.rb:33:13:33:19 | [true] then ... | ifs.rb:33:13:33:19 | [true] then ... |
+| ifs.rb:33:18:33:19 | b2 | ifs.rb:33:18:33:19 | b2 |
+| ifs.rb:33:21:33:44 | [false] elsif ... | ifs.rb:33:21:33:44 | [false] elsif ... |
+| ifs.rb:33:21:33:44 | [false] elsif ... | ifs.rb:33:30:33:36 | [false] then ... |
+| ifs.rb:33:21:33:44 | [false] elsif ... | ifs.rb:33:38:33:44 | [false] else ... |
+| ifs.rb:33:21:33:44 | [true] elsif ... | ifs.rb:33:21:33:44 | [true] elsif ... |
+| ifs.rb:33:21:33:44 | [true] elsif ... | ifs.rb:33:30:33:36 | [true] then ... |
+| ifs.rb:33:21:33:44 | [true] elsif ... | ifs.rb:33:38:33:44 | [true] else ... |
+| ifs.rb:33:27:33:28 | b3 | ifs.rb:33:27:33:28 | b3 |
+| ifs.rb:33:30:33:36 | [false] then ... | ifs.rb:33:30:33:36 | [false] then ... |
+| ifs.rb:33:30:33:36 | [true] then ... | ifs.rb:33:30:33:36 | [true] then ... |
+| ifs.rb:33:35:33:36 | b4 | ifs.rb:33:35:33:36 | b4 |
+| ifs.rb:33:38:33:44 | [false] else ... | ifs.rb:33:38:33:44 | [false] else ... |
+| ifs.rb:33:38:33:44 | [true] else ... | ifs.rb:33:38:33:44 | [true] else ... |
+| ifs.rb:33:43:33:44 | b5 | ifs.rb:33:43:33:44 | b5 |
+| ifs.rb:33:57:33:70 | b2 \|\| b4 \|\| b5 | ifs.rb:33:6:33:49 | [true] ( ... ) |
+| ifs.rb:33:57:33:70 | b2 \|\| b4 \|\| b5 | ifs.rb:33:7:33:48 | [true] if ... |
+| ifs.rb:33:57:33:70 | b2 \|\| b4 \|\| b5 | ifs.rb:33:13:33:19 | [true] then ... |
+| ifs.rb:33:57:33:70 | b2 \|\| b4 \|\| b5 | ifs.rb:33:21:33:44 | [true] elsif ... |
+| ifs.rb:33:57:33:70 | b2 \|\| b4 \|\| b5 | ifs.rb:33:30:33:36 | [true] then ... |
+| ifs.rb:33:57:33:70 | b2 \|\| b4 \|\| b5 | ifs.rb:33:38:33:44 | [true] else ... |
+| ifs.rb:33:57:33:70 | b2 \|\| b4 \|\| b5 | ifs.rb:33:57:33:70 | b2 \|\| b4 \|\| b5 |
+| ifs.rb:33:79:33:95 | !b2 \|\| !b4 \|\| !b5 | ifs.rb:33:6:33:49 | [false] ( ... ) |
+| ifs.rb:33:79:33:95 | !b2 \|\| !b4 \|\| !b5 | ifs.rb:33:7:33:48 | [false] if ... |
+| ifs.rb:33:79:33:95 | !b2 \|\| !b4 \|\| !b5 | ifs.rb:33:13:33:19 | [false] then ... |
+| ifs.rb:33:79:33:95 | !b2 \|\| !b4 \|\| !b5 | ifs.rb:33:21:33:44 | [false] elsif ... |
+| ifs.rb:33:79:33:95 | !b2 \|\| !b4 \|\| !b5 | ifs.rb:33:30:33:36 | [false] then ... |
+| ifs.rb:33:79:33:95 | !b2 \|\| !b4 \|\| !b5 | ifs.rb:33:38:33:44 | [false] else ... |
+| ifs.rb:33:79:33:95 | !b2 \|\| !b4 \|\| !b5 | ifs.rb:33:79:33:95 | !b2 \|\| !b4 \|\| !b5 |
+| ifs.rb:36:1:38:3 | conditional_method_def | ifs.rb:36:1:38:3 | conditional_method_def |
+| ifs.rb:36:1:38:3 | enter conditional_method_def | ifs.rb:36:1:38:3 | enter conditional_method_def |
+| ifs.rb:36:1:38:17 | ... unless ... | ifs.rb:1:1:58:4 | enter ifs.rb |
+| ifs.rb:36:1:38:17 | ... unless ... | ifs.rb:36:1:38:3 | conditional_method_def |
+| ifs.rb:36:1:38:17 | ... unless ... | ifs.rb:36:1:38:17 | ... unless ... |
+| ifs.rb:40:1:44:3 | enter constant_condition | ifs.rb:40:1:44:3 | enter constant_condition |
+| ifs.rb:41:3:43:5 | if ... | ifs.rb:40:1:44:3 | enter constant_condition |
+| ifs.rb:41:3:43:5 | if ... | ifs.rb:41:3:43:5 | if ... |
+| ifs.rb:41:3:43:5 | if ... | ifs.rb:41:6:41:10 | [false] ! ... |
+| ifs.rb:41:6:41:10 | [false] ! ... | ifs.rb:40:1:44:3 | enter constant_condition |
+| ifs.rb:41:6:41:10 | [false] ! ... | ifs.rb:41:6:41:10 | [false] ! ... |
+| ifs.rb:46:1:52:3 | enter empty_else | ifs.rb:46:1:52:3 | enter empty_else |
+| ifs.rb:47:3:50:5 | if ... | ifs.rb:46:1:52:3 | enter empty_else |
+| ifs.rb:47:3:50:5 | if ... | ifs.rb:47:3:50:5 | if ... |
+| ifs.rb:47:3:50:5 | if ... | ifs.rb:48:5:48:15 | self |
+| ifs.rb:47:3:50:5 | if ... | ifs.rb:49:3:49:6 | else ... |
+| ifs.rb:48:5:48:15 | self | ifs.rb:48:5:48:15 | self |
+| ifs.rb:49:3:49:6 | else ... | ifs.rb:49:3:49:6 | else ... |
+| ifs.rb:54:1:58:3 | enter disjunct | ifs.rb:54:1:58:3 | enter disjunct |
+| ifs.rb:55:3:57:5 | if ... | ifs.rb:54:1:58:3 | enter disjunct |
+| ifs.rb:55:3:57:5 | if ... | ifs.rb:55:3:57:5 | if ... |
+| ifs.rb:55:3:57:5 | if ... | ifs.rb:55:6:55:15 | [false] ( ... ) |
+| ifs.rb:55:3:57:5 | if ... | ifs.rb:55:6:55:15 | [true] ( ... ) |
+| ifs.rb:55:3:57:5 | if ... | ifs.rb:55:7:55:14 | [false] ... \|\| ... |
+| ifs.rb:55:3:57:5 | if ... | ifs.rb:55:7:55:14 | [true] ... \|\| ... |
+| ifs.rb:55:3:57:5 | if ... | ifs.rb:55:13:55:14 | b2 |
+| ifs.rb:55:3:57:5 | if ... | ifs.rb:56:5:56:19 | self |
+| ifs.rb:55:6:55:15 | [false] ( ... ) | ifs.rb:55:6:55:15 | [false] ( ... ) |
+| ifs.rb:55:6:55:15 | [false] ( ... ) | ifs.rb:55:7:55:14 | [false] ... \|\| ... |
+| ifs.rb:55:6:55:15 | [true] ( ... ) | ifs.rb:55:6:55:15 | [true] ( ... ) |
+| ifs.rb:55:6:55:15 | [true] ( ... ) | ifs.rb:55:7:55:14 | [true] ... \|\| ... |
+| ifs.rb:55:7:55:14 | [false] ... \|\| ... | ifs.rb:55:7:55:14 | [false] ... \|\| ... |
+| ifs.rb:55:7:55:14 | [true] ... \|\| ... | ifs.rb:55:7:55:14 | [true] ... \|\| ... |
+| ifs.rb:55:13:55:14 | b2 | ifs.rb:55:13:55:14 | b2 |
+| ifs.rb:56:5:56:19 | self | ifs.rb:55:6:55:15 | [true] ( ... ) |
+| ifs.rb:56:5:56:19 | self | ifs.rb:55:7:55:14 | [true] ... \|\| ... |
+| ifs.rb:56:5:56:19 | self | ifs.rb:56:5:56:19 | self |
+| loops.rb:1:1:6:3 | enter m1 | loops.rb:1:1:6:3 | enter m1 |
+| loops.rb:1:1:33:4 | enter loops.rb | loops.rb:1:1:33:4 | enter loops.rb |
+| loops.rb:2:3:5:5 | while ... | loops.rb:1:1:6:3 | enter m1 |
+| loops.rb:2:3:5:5 | while ... | loops.rb:2:3:5:5 | while ... |
+| loops.rb:2:3:5:5 | while ... | loops.rb:2:9:2:9 | x |
+| loops.rb:2:3:5:5 | while ... | loops.rb:3:5:3:10 | self |
+| loops.rb:2:9:2:9 | x | loops.rb:1:1:6:3 | enter m1 |
+| loops.rb:2:9:2:9 | x | loops.rb:2:9:2:9 | x |
+| loops.rb:2:9:2:9 | x | loops.rb:3:5:3:10 | self |
+| loops.rb:3:5:3:10 | self | loops.rb:3:5:3:10 | self |
+| loops.rb:8:1:22:3 | enter m2 | loops.rb:8:1:22:3 | enter m2 |
+| loops.rb:9:3:20:5 | while ... | loops.rb:8:1:22:3 | enter m2 |
+| loops.rb:9:3:20:5 | while ... | loops.rb:9:3:20:5 | while ... |
+| loops.rb:9:3:20:5 | while ... | loops.rb:9:9:9:9 | x |
+| loops.rb:9:3:20:5 | while ... | loops.rb:10:5:10:10 | self |
+| loops.rb:9:3:20:5 | while ... | loops.rb:13:7:13:11 | break |
+| loops.rb:9:3:20:5 | while ... | loops.rb:14:11:14:11 | x |
+| loops.rb:9:3:20:5 | while ... | loops.rb:15:7:15:10 | next |
+| loops.rb:9:3:20:5 | while ... | loops.rb:16:5:17:10 | elsif ... |
+| loops.rb:9:3:20:5 | while ... | loops.rb:16:11:16:11 | x |
+| loops.rb:9:3:20:5 | while ... | loops.rb:17:7:17:10 | redo |
+| loops.rb:9:9:9:9 | x | loops.rb:8:1:22:3 | enter m2 |
+| loops.rb:9:9:9:9 | x | loops.rb:9:9:9:9 | x |
+| loops.rb:9:9:9:9 | x | loops.rb:15:7:15:10 | next |
+| loops.rb:9:9:9:9 | x | loops.rb:16:5:17:10 | elsif ... |
+| loops.rb:10:5:10:10 | self | loops.rb:10:5:10:10 | self |
+| loops.rb:10:5:10:10 | self | loops.rb:17:7:17:10 | redo |
+| loops.rb:13:7:13:11 | break | loops.rb:13:7:13:11 | break |
+| loops.rb:14:11:14:11 | x | loops.rb:14:11:14:11 | x |
+| loops.rb:15:7:15:10 | next | loops.rb:15:7:15:10 | next |
+| loops.rb:16:5:17:10 | elsif ... | loops.rb:16:5:17:10 | elsif ... |
+| loops.rb:16:11:16:11 | x | loops.rb:16:11:16:11 | x |
+| loops.rb:17:7:17:10 | redo | loops.rb:17:7:17:10 | redo |
+| loops.rb:24:1:28:3 | enter m3 | loops.rb:24:1:28:3 | enter m3 |
+| loops.rb:25:16:27:5 | enter do ... end | loops.rb:25:16:27:5 | enter do ... end |
+| loops.rb:30:1:33:3 | enter m4 | loops.rb:30:1:33:3 | enter m4 |
+| loops.rb:31:3:32:5 | while ... | loops.rb:30:1:33:3 | enter m4 |
+| loops.rb:31:3:32:5 | while ... | loops.rb:31:3:32:5 | while ... |
+| loops.rb:31:3:32:5 | while ... | loops.rb:31:9:31:9 | x |
+| loops.rb:31:3:32:5 | while ... | loops.rb:31:15:32:5 | do ... |
+| loops.rb:31:9:31:9 | x | loops.rb:30:1:33:3 | enter m4 |
+| loops.rb:31:9:31:9 | x | loops.rb:31:9:31:9 | x |
+| loops.rb:31:9:31:9 | x | loops.rb:31:15:32:5 | do ... |
+| loops.rb:31:15:32:5 | do ... | loops.rb:31:15:32:5 | do ... |
+| raise.rb:1:1:182:4 | enter raise.rb | raise.rb:1:1:182:4 | enter raise.rb |
+| raise.rb:7:1:12:3 | enter m1 | raise.rb:7:1:12:3 | enter m1 |
+| raise.rb:7:1:12:3 | exit m1 | raise.rb:7:1:12:3 | exit m1 |
+| raise.rb:8:3:10:5 | if ... | raise.rb:7:1:12:3 | enter m1 |
+| raise.rb:8:3:10:5 | if ... | raise.rb:8:3:10:5 | if ... |
+| raise.rb:9:5:9:17 | self | raise.rb:9:5:9:17 | self |
+| raise.rb:14:1:23:3 | enter m2 | raise.rb:14:1:23:3 | enter m2 |
+| raise.rb:14:1:23:3 | exit m2 | raise.rb:14:1:23:3 | exit m2 |
+| raise.rb:14:1:23:3 | exit m2 (abnormal) | raise.rb:14:1:23:3 | exit m2 (abnormal) |
+| raise.rb:16:5:18:7 | if ... | raise.rb:16:5:18:7 | if ... |
+| raise.rb:17:7:17:22 | self | raise.rb:17:7:17:22 | self |
+| raise.rb:20:5:20:18 | self | raise.rb:17:7:17:22 | self |
+| raise.rb:20:5:20:18 | self | raise.rb:20:5:20:18 | self |
+| raise.rb:22:3:22:15 | self | raise.rb:14:1:23:3 | enter m2 |
+| raise.rb:22:3:22:15 | self | raise.rb:16:5:18:7 | if ... |
+| raise.rb:22:3:22:15 | self | raise.rb:17:7:17:22 | self |
+| raise.rb:22:3:22:15 | self | raise.rb:20:5:20:18 | self |
+| raise.rb:22:3:22:15 | self | raise.rb:22:3:22:15 | self |
+| raise.rb:25:1:34:3 | enter m3 | raise.rb:25:1:34:3 | enter m3 |
+| raise.rb:27:5:29:7 | if ... | raise.rb:27:5:29:7 | if ... |
+| raise.rb:28:7:28:22 | self | raise.rb:28:7:28:22 | self |
+| raise.rb:33:3:33:15 | self | raise.rb:25:1:34:3 | enter m3 |
+| raise.rb:33:3:33:15 | self | raise.rb:27:5:29:7 | if ... |
+| raise.rb:33:3:33:15 | self | raise.rb:28:7:28:22 | self |
+| raise.rb:33:3:33:15 | self | raise.rb:33:3:33:15 | self |
+| raise.rb:36:1:45:3 | enter m4 | raise.rb:36:1:45:3 | enter m4 |
+| raise.rb:38:5:40:7 | if ... | raise.rb:38:5:40:7 | if ... |
+| raise.rb:39:7:39:22 | self | raise.rb:39:7:39:22 | self |
+| raise.rb:44:3:44:15 | self | raise.rb:36:1:45:3 | enter m4 |
+| raise.rb:44:3:44:15 | self | raise.rb:38:5:40:7 | if ... |
+| raise.rb:44:3:44:15 | self | raise.rb:39:7:39:22 | self |
+| raise.rb:44:3:44:15 | self | raise.rb:44:3:44:15 | self |
+| raise.rb:47:1:55:3 | enter m5 | raise.rb:47:1:55:3 | enter m5 |
+| raise.rb:49:5:51:7 | if ... | raise.rb:49:5:51:7 | if ... |
+| raise.rb:50:7:50:22 | self | raise.rb:50:7:50:22 | self |
+| raise.rb:54:3:54:15 | self | raise.rb:47:1:55:3 | enter m5 |
+| raise.rb:54:3:54:15 | self | raise.rb:49:5:51:7 | if ... |
+| raise.rb:54:3:54:15 | self | raise.rb:50:7:50:22 | self |
+| raise.rb:54:3:54:15 | self | raise.rb:54:3:54:15 | self |
+| raise.rb:57:1:66:3 | enter m6 | raise.rb:57:1:66:3 | enter m6 |
+| raise.rb:57:1:66:3 | exit m6 | raise.rb:57:1:66:3 | exit m6 |
+| raise.rb:57:1:66:3 | exit m6 (abnormal) | raise.rb:57:1:66:3 | exit m6 (abnormal) |
+| raise.rb:59:5:61:7 | if ... | raise.rb:59:5:61:7 | if ... |
+| raise.rb:60:7:60:22 | self | raise.rb:60:7:60:22 | self |
+| raise.rb:62:22:62:31 | ExceptionB | raise.rb:62:22:62:31 | ExceptionB |
+| raise.rb:62:36:62:36 | e | raise.rb:60:7:60:22 | self |
+| raise.rb:62:36:62:36 | e | raise.rb:62:22:62:31 | ExceptionB |
+| raise.rb:62:36:62:36 | e | raise.rb:62:36:62:36 | e |
+| raise.rb:65:3:65:15 | self | raise.rb:57:1:66:3 | enter m6 |
+| raise.rb:65:3:65:15 | self | raise.rb:59:5:61:7 | if ... |
+| raise.rb:65:3:65:15 | self | raise.rb:60:7:60:22 | self |
+| raise.rb:65:3:65:15 | self | raise.rb:62:22:62:31 | ExceptionB |
+| raise.rb:65:3:65:15 | self | raise.rb:62:36:62:36 | e |
+| raise.rb:65:3:65:15 | self | raise.rb:65:3:65:15 | self |
+| raise.rb:68:1:77:3 | enter m7 | raise.rb:68:1:77:3 | enter m7 |
+| raise.rb:68:1:77:3 | exit m7 | raise.rb:68:1:77:3 | exit m7 |
+| raise.rb:68:1:77:3 | exit m7 (normal) | raise.rb:68:1:77:3 | enter m7 |
+| raise.rb:68:1:77:3 | exit m7 (normal) | raise.rb:68:1:77:3 | exit m7 (normal) |
+| raise.rb:68:1:77:3 | exit m7 (normal) | raise.rb:71:3:72:18 | elsif ... |
+| raise.rb:68:1:77:3 | exit m7 (normal) | raise.rb:71:9:71:9 | x |
+| raise.rb:68:1:77:3 | exit m7 (normal) | raise.rb:72:13:72:17 | x < 0 |
+| raise.rb:68:1:77:3 | exit m7 (normal) | raise.rb:76:3:76:15 | self |
+| raise.rb:70:5:70:17 | self | raise.rb:70:5:70:17 | self |
+| raise.rb:71:3:72:18 | elsif ... | raise.rb:71:3:72:18 | elsif ... |
+| raise.rb:71:9:71:9 | x | raise.rb:68:1:77:3 | enter m7 |
+| raise.rb:71:9:71:9 | x | raise.rb:71:9:71:9 | x |
+| raise.rb:72:13:72:17 | x < 0 | raise.rb:72:13:72:17 | x < 0 |
+| raise.rb:76:3:76:15 | [ensure: raise] self | raise.rb:76:3:76:15 | [ensure: raise] self |
+| raise.rb:76:3:76:15 | self | raise.rb:71:3:72:18 | elsif ... |
+| raise.rb:76:3:76:15 | self | raise.rb:76:3:76:15 | self |
+| raise.rb:79:1:92:3 | enter m8 | raise.rb:79:1:92:3 | enter m8 |
+| raise.rb:79:1:92:3 | exit m8 | raise.rb:79:1:92:3 | exit m8 |
+| raise.rb:79:1:92:3 | exit m8 (normal) | raise.rb:79:1:92:3 | enter m8 |
+| raise.rb:79:1:92:3 | exit m8 (normal) | raise.rb:79:1:92:3 | exit m8 (normal) |
+| raise.rb:79:1:92:3 | exit m8 (normal) | raise.rb:84:5:85:20 | elsif ... |
+| raise.rb:79:1:92:3 | exit m8 (normal) | raise.rb:84:11:84:11 | x |
+| raise.rb:79:1:92:3 | exit m8 (normal) | raise.rb:85:15:85:19 | x < 0 |
+| raise.rb:79:1:92:3 | exit m8 (normal) | raise.rb:89:5:89:17 | self |
+| raise.rb:83:7:83:19 | self | raise.rb:83:7:83:19 | self |
+| raise.rb:84:5:85:20 | elsif ... | raise.rb:84:5:85:20 | elsif ... |
+| raise.rb:84:11:84:11 | x | raise.rb:79:1:92:3 | enter m8 |
+| raise.rb:84:11:84:11 | x | raise.rb:84:11:84:11 | x |
+| raise.rb:85:15:85:19 | x < 0 | raise.rb:85:15:85:19 | x < 0 |
+| raise.rb:89:5:89:17 | [ensure: raise] self | raise.rb:89:5:89:17 | [ensure: raise] self |
+| raise.rb:89:5:89:17 | self | raise.rb:84:5:85:20 | elsif ... |
+| raise.rb:89:5:89:17 | self | raise.rb:89:5:89:17 | self |
+| raise.rb:94:1:119:3 | enter m9 | raise.rb:94:1:119:3 | enter m9 |
+| raise.rb:94:1:119:3 | exit m9 | raise.rb:94:1:119:3 | exit m9 |
+| raise.rb:94:1:119:3 | exit m9 (abnormal) | raise.rb:94:1:119:3 | exit m9 (abnormal) |
+| raise.rb:94:1:119:3 | exit m9 (normal) | raise.rb:94:1:119:3 | enter m9 |
+| raise.rb:94:1:119:3 | exit m9 (normal) | raise.rb:94:1:119:3 | exit m9 (normal) |
+| raise.rb:94:1:119:3 | exit m9 (normal) | raise.rb:97:8:97:8 | x |
+| raise.rb:94:1:119:3 | exit m9 (normal) | raise.rb:99:5:100:20 | elsif ... |
+| raise.rb:94:1:119:3 | exit m9 (normal) | raise.rb:99:11:99:11 | x |
+| raise.rb:94:1:119:3 | exit m9 (normal) | raise.rb:100:15:100:19 | x < 0 |
+| raise.rb:94:1:119:3 | exit m9 (normal) | raise.rb:104:5:104:23 | self |
+| raise.rb:94:1:119:3 | exit m9 (normal) | raise.rb:106:7:108:9 | [ensure: return] if ... |
+| raise.rb:94:1:119:3 | exit m9 (normal) | raise.rb:106:7:108:9 | if ... |
+| raise.rb:94:1:119:3 | exit m9 (normal) | raise.rb:106:10:106:11 | [ensure: return] b1 |
+| raise.rb:94:1:119:3 | exit m9 (normal) | raise.rb:106:10:106:11 | b1 |
+| raise.rb:94:1:119:3 | exit m9 (normal) | raise.rb:109:5:110:25 | [ensure: return] ensure ... |
+| raise.rb:94:1:119:3 | exit m9 (normal) | raise.rb:109:5:110:25 | ensure ... |
+| raise.rb:94:1:119:3 | exit m9 (normal) | raise.rb:115:3:115:22 | self |
+| raise.rb:94:1:119:3 | exit m9 (normal) | raise.rb:116:3:118:5 | [ensure: return] if ... |
+| raise.rb:94:1:119:3 | exit m9 (normal) | raise.rb:116:3:118:5 | if ... |
+| raise.rb:97:8:97:8 | x | raise.rb:94:1:119:3 | enter m9 |
+| raise.rb:97:8:97:8 | x | raise.rb:97:8:97:8 | x |
+| raise.rb:98:7:98:19 | self | raise.rb:98:7:98:19 | self |
+| raise.rb:99:5:100:20 | elsif ... | raise.rb:99:5:100:20 | elsif ... |
+| raise.rb:99:11:99:11 | x | raise.rb:94:1:119:3 | enter m9 |
+| raise.rb:99:11:99:11 | x | raise.rb:97:8:97:8 | x |
+| raise.rb:99:11:99:11 | x | raise.rb:99:11:99:11 | x |
+| raise.rb:100:15:100:19 | x < 0 | raise.rb:100:15:100:19 | x < 0 |
+| raise.rb:104:5:104:23 | [ensure: raise] self | raise.rb:104:5:104:23 | [ensure: raise] self |
+| raise.rb:104:5:104:23 | self | raise.rb:99:5:100:20 | elsif ... |
+| raise.rb:104:5:104:23 | self | raise.rb:104:5:104:23 | self |
+| raise.rb:106:7:108:9 | [ensure: raise] if ... | raise.rb:106:7:108:9 | [ensure: raise] if ... |
+| raise.rb:106:7:108:9 | [ensure: return] if ... | raise.rb:100:15:100:19 | x < 0 |
+| raise.rb:106:7:108:9 | [ensure: return] if ... | raise.rb:106:7:108:9 | [ensure: return] if ... |
+| raise.rb:106:7:108:9 | [ensure: return] if ... | raise.rb:106:10:106:11 | [ensure: return] b1 |
+| raise.rb:106:7:108:9 | if ... | raise.rb:99:5:100:20 | elsif ... |
+| raise.rb:106:7:108:9 | if ... | raise.rb:104:5:104:23 | self |
+| raise.rb:106:7:108:9 | if ... | raise.rb:106:7:108:9 | if ... |
+| raise.rb:106:7:108:9 | if ... | raise.rb:106:10:106:11 | b1 |
+| raise.rb:106:10:106:11 | [ensure: raise] b1 | raise.rb:106:10:106:11 | [ensure: raise] b1 |
+| raise.rb:106:10:106:11 | [ensure: return] b1 | raise.rb:100:15:100:19 | x < 0 |
+| raise.rb:106:10:106:11 | [ensure: return] b1 | raise.rb:106:10:106:11 | [ensure: return] b1 |
+| raise.rb:106:10:106:11 | b1 | raise.rb:99:5:100:20 | elsif ... |
+| raise.rb:106:10:106:11 | b1 | raise.rb:104:5:104:23 | self |
+| raise.rb:106:10:106:11 | b1 | raise.rb:106:10:106:11 | b1 |
+| raise.rb:107:9:107:26 | [ensure: raise] self | raise.rb:107:9:107:26 | [ensure: raise] self |
+| raise.rb:107:9:107:26 | [ensure: return] self | raise.rb:107:9:107:26 | [ensure: return] self |
+| raise.rb:107:9:107:26 | self | raise.rb:107:9:107:26 | self |
+| raise.rb:109:5:110:25 | [ensure(1): raise] ensure ... | raise.rb:109:5:110:25 | [ensure(1): raise] ensure ... |
+| raise.rb:109:5:110:25 | [ensure: raise, ensure(1): raise] ensure ... | raise.rb:109:5:110:25 | [ensure: raise, ensure(1): raise] ensure ... |
+| raise.rb:109:5:110:25 | [ensure: raise] ensure ... | raise.rb:109:5:110:25 | [ensure: raise] ensure ... |
+| raise.rb:109:5:110:25 | [ensure: return, ensure(1): raise] ensure ... | raise.rb:109:5:110:25 | [ensure: return, ensure(1): raise] ensure ... |
+| raise.rb:109:5:110:25 | [ensure: return] ensure ... | raise.rb:100:15:100:19 | x < 0 |
+| raise.rb:109:5:110:25 | [ensure: return] ensure ... | raise.rb:106:7:108:9 | [ensure: return] if ... |
+| raise.rb:109:5:110:25 | [ensure: return] ensure ... | raise.rb:106:10:106:11 | [ensure: return] b1 |
+| raise.rb:109:5:110:25 | [ensure: return] ensure ... | raise.rb:109:5:110:25 | [ensure: return] ensure ... |
+| raise.rb:109:5:110:25 | ensure ... | raise.rb:99:5:100:20 | elsif ... |
+| raise.rb:109:5:110:25 | ensure ... | raise.rb:104:5:104:23 | self |
+| raise.rb:109:5:110:25 | ensure ... | raise.rb:106:7:108:9 | if ... |
+| raise.rb:109:5:110:25 | ensure ... | raise.rb:106:10:106:11 | b1 |
+| raise.rb:109:5:110:25 | ensure ... | raise.rb:109:5:110:25 | ensure ... |
+| raise.rb:115:3:115:22 | [ensure: raise] self | raise.rb:115:3:115:22 | [ensure: raise] self |
+| raise.rb:115:3:115:22 | self | raise.rb:99:5:100:20 | elsif ... |
+| raise.rb:115:3:115:22 | self | raise.rb:104:5:104:23 | self |
+| raise.rb:115:3:115:22 | self | raise.rb:106:7:108:9 | if ... |
+| raise.rb:115:3:115:22 | self | raise.rb:106:10:106:11 | b1 |
+| raise.rb:115:3:115:22 | self | raise.rb:109:5:110:25 | ensure ... |
+| raise.rb:115:3:115:22 | self | raise.rb:115:3:115:22 | self |
+| raise.rb:116:3:118:5 | [ensure: raise] if ... | raise.rb:116:3:118:5 | [ensure: raise] if ... |
+| raise.rb:116:3:118:5 | [ensure: return] if ... | raise.rb:100:15:100:19 | x < 0 |
+| raise.rb:116:3:118:5 | [ensure: return] if ... | raise.rb:106:7:108:9 | [ensure: return] if ... |
+| raise.rb:116:3:118:5 | [ensure: return] if ... | raise.rb:106:10:106:11 | [ensure: return] b1 |
+| raise.rb:116:3:118:5 | [ensure: return] if ... | raise.rb:109:5:110:25 | [ensure: return] ensure ... |
+| raise.rb:116:3:118:5 | [ensure: return] if ... | raise.rb:116:3:118:5 | [ensure: return] if ... |
+| raise.rb:116:3:118:5 | if ... | raise.rb:99:5:100:20 | elsif ... |
+| raise.rb:116:3:118:5 | if ... | raise.rb:104:5:104:23 | self |
+| raise.rb:116:3:118:5 | if ... | raise.rb:106:7:108:9 | if ... |
+| raise.rb:116:3:118:5 | if ... | raise.rb:106:10:106:11 | b1 |
+| raise.rb:116:3:118:5 | if ... | raise.rb:109:5:110:25 | ensure ... |
+| raise.rb:116:3:118:5 | if ... | raise.rb:115:3:115:22 | self |
+| raise.rb:116:3:118:5 | if ... | raise.rb:116:3:118:5 | if ... |
+| raise.rb:117:5:117:22 | [ensure: raise] self | raise.rb:117:5:117:22 | [ensure: raise] self |
+| raise.rb:117:5:117:22 | [ensure: return] self | raise.rb:117:5:117:22 | [ensure: return] self |
+| raise.rb:117:5:117:22 | self | raise.rb:117:5:117:22 | self |
+| raise.rb:121:1:126:3 | enter m10 | raise.rb:121:1:126:3 | enter m10 |
+| raise.rb:121:1:126:3 | exit m10 | raise.rb:121:1:126:3 | exit m10 |
+| raise.rb:121:14:121:30 | self | raise.rb:121:14:121:30 | self |
+| raise.rb:125:3:125:51 | self | raise.rb:121:1:126:3 | enter m10 |
+| raise.rb:125:3:125:51 | self | raise.rb:125:3:125:51 | self |
+| raise.rb:128:1:140:3 | enter m11 | raise.rb:128:1:140:3 | enter m11 |
+| raise.rb:128:1:140:3 | exit m11 | raise.rb:128:1:140:3 | exit m11 |
+| raise.rb:130:5:132:7 | if ... | raise.rb:130:5:132:7 | if ... |
+| raise.rb:131:7:131:22 | self | raise.rb:131:7:131:22 | self |
+| raise.rb:133:3:133:19 | rescue ... | raise.rb:133:3:133:19 | rescue ... |
+| raise.rb:134:10:134:19 | ExceptionB | raise.rb:134:10:134:19 | ExceptionB |
+| raise.rb:135:5:135:21 | self | raise.rb:134:10:134:19 | ExceptionB |
+| raise.rb:135:5:135:21 | self | raise.rb:135:5:135:21 | self |
+| raise.rb:137:5:137:17 | [ensure: raise] self | raise.rb:137:5:137:17 | [ensure: raise] self |
+| raise.rb:137:5:137:17 | self | raise.rb:128:1:140:3 | enter m11 |
+| raise.rb:137:5:137:17 | self | raise.rb:130:5:132:7 | if ... |
+| raise.rb:137:5:137:17 | self | raise.rb:131:7:131:22 | self |
+| raise.rb:137:5:137:17 | self | raise.rb:133:3:133:19 | rescue ... |
+| raise.rb:137:5:137:17 | self | raise.rb:134:10:134:19 | ExceptionB |
+| raise.rb:137:5:137:17 | self | raise.rb:135:5:135:21 | self |
+| raise.rb:137:5:137:17 | self | raise.rb:137:5:137:17 | self |
+| raise.rb:142:1:148:3 | enter m12 | raise.rb:142:1:148:3 | enter m12 |
+| raise.rb:142:1:148:3 | exit m12 (normal) | raise.rb:142:1:148:3 | enter m12 |
+| raise.rb:142:1:148:3 | exit m12 (normal) | raise.rb:142:1:148:3 | exit m12 (normal) |
+| raise.rb:142:1:148:3 | exit m12 (normal) | raise.rb:143:3:145:5 | if ... |
+| raise.rb:142:1:148:3 | exit m12 (normal) | raise.rb:144:5:144:12 | self |
+| raise.rb:143:3:145:5 | if ... | raise.rb:143:3:145:5 | if ... |
+| raise.rb:144:5:144:12 | self | raise.rb:144:5:144:12 | self |
+| raise.rb:150:1:152:3 | enter m13 | raise.rb:150:1:152:3 | enter m13 |
+| raise.rb:154:1:156:3 | enter m14 | raise.rb:154:1:156:3 | enter m14 |
+| raise.rb:155:16:155:50 | enter { ... } | raise.rb:155:16:155:50 | enter { ... } |
+| raise.rb:155:16:155:50 | exit { ... } | raise.rb:155:16:155:50 | exit { ... } |
+| raise.rb:155:25:155:32 | self | raise.rb:155:25:155:32 | self |
+| raise.rb:155:25:155:48 | ... if ... | raise.rb:155:16:155:50 | enter { ... } |
+| raise.rb:155:25:155:48 | ... if ... | raise.rb:155:25:155:48 | ... if ... |
+| raise.rb:158:1:164:3 | enter m15 | raise.rb:158:1:164:3 | enter m15 |
+| raise.rb:159:7:163:5 | enter do ... end | raise.rb:159:7:163:5 | enter do ... end |
+| raise.rb:160:9:162:7 | enter -> { ... } | raise.rb:160:9:162:7 | enter -> { ... } |
+| raise.rb:160:9:162:7 | exit -> { ... } | raise.rb:160:9:162:7 | exit -> { ... } |
+| raise.rb:161:7:161:14 | self | raise.rb:161:7:161:14 | self |
+| raise.rb:161:7:161:23 | ... unless ... | raise.rb:160:9:162:7 | enter -> { ... } |
+| raise.rb:161:7:161:23 | ... unless ... | raise.rb:161:7:161:23 | ... unless ... |
+| raise.rb:167:3:169:5 | enter m | raise.rb:167:3:169:5 | enter m |
+| raise.rb:172:1:182:3 | enter m16 | raise.rb:172:1:182:3 | enter m16 |
+| raise.rb:172:1:182:3 | exit m16 | raise.rb:172:1:182:3 | exit m16 |
+| raise.rb:172:1:182:3 | exit m16 (abnormal) | raise.rb:172:1:182:3 | exit m16 (abnormal) |
+| raise.rb:172:1:182:3 | exit m16 (normal) | raise.rb:172:1:182:3 | enter m16 |
+| raise.rb:172:1:182:3 | exit m16 (normal) | raise.rb:172:1:182:3 | exit m16 (normal) |
+| raise.rb:172:1:182:3 | exit m16 (normal) | raise.rb:174:8:174:23 | [false] ... \|\| ... |
+| raise.rb:172:1:182:3 | exit m16 (normal) | raise.rb:174:8:174:23 | [true] ... \|\| ... |
+| raise.rb:172:1:182:3 | exit m16 (normal) | raise.rb:174:14:174:15 | b2 |
+| raise.rb:172:1:182:3 | exit m16 (normal) | raise.rb:175:14:175:14 | 1 |
+| raise.rb:172:1:182:3 | exit m16 (normal) | raise.rb:177:14:177:14 | 2 |
+| raise.rb:172:1:182:3 | exit m16 (normal) | raise.rb:179:10:179:19 | ExceptionA |
+| raise.rb:172:1:182:3 | exit m16 (normal) | raise.rb:180:12:180:12 | 3 |
+| raise.rb:174:8:174:23 | [false] ... \|\| ... | raise.rb:174:8:174:23 | [false] ... \|\| ... |
+| raise.rb:174:8:174:23 | [true] ... \|\| ... | raise.rb:174:8:174:23 | [true] ... \|\| ... |
+| raise.rb:174:14:174:15 | b2 | raise.rb:174:14:174:15 | b2 |
+| raise.rb:175:14:175:14 | 1 | raise.rb:175:14:175:14 | 1 |
+| raise.rb:177:14:177:14 | 2 | raise.rb:177:14:177:14 | 2 |
+| raise.rb:179:10:179:19 | ExceptionA | raise.rb:179:10:179:19 | ExceptionA |
+| raise.rb:180:12:180:12 | 3 | raise.rb:179:10:179:19 | ExceptionA |
+| raise.rb:180:12:180:12 | 3 | raise.rb:180:12:180:12 | 3 |
+immediateDominator
+| break_ensure.rb:1:1:11:3 | exit m1 | break_ensure.rb:2:9:2:9 | x |
+| break_ensure.rb:2:3:6:5 | while ... | break_ensure.rb:2:9:2:9 | x |
+| break_ensure.rb:2:9:2:9 | x | break_ensure.rb:1:1:11:3 | enter m1 |
+| break_ensure.rb:3:5:5:7 | if ... | break_ensure.rb:3:8:3:8 | x |
+| break_ensure.rb:3:8:3:8 | x | break_ensure.rb:2:9:2:9 | x |
+| break_ensure.rb:4:7:4:11 | break | break_ensure.rb:3:8:3:8 | x |
+| break_ensure.rb:8:3:10:5 | [ensure: raise] if ... | break_ensure.rb:8:6:8:13 | [ensure: raise] self |
+| break_ensure.rb:8:3:10:5 | if ... | break_ensure.rb:2:3:6:5 | while ... |
+| break_ensure.rb:8:6:8:13 | [ensure: raise] self | break_ensure.rb:2:9:2:9 | x |
+| break_ensure.rb:9:5:9:23 | [ensure: raise] self | break_ensure.rb:8:6:8:13 | [ensure: raise] self |
+| break_ensure.rb:9:5:9:23 | self | break_ensure.rb:2:3:6:5 | while ... |
+| break_ensure.rb:14:3:24:5 | while ... | break_ensure.rb:14:9:14:9 | x |
+| break_ensure.rb:14:9:14:9 | x | break_ensure.rb:13:1:25:3 | enter m2 |
+| break_ensure.rb:16:7:18:9 | if ... | break_ensure.rb:16:10:16:10 | x |
+| break_ensure.rb:16:10:16:10 | x | break_ensure.rb:14:9:14:9 | x |
+| break_ensure.rb:17:9:17:13 | break | break_ensure.rb:16:10:16:10 | x |
+| break_ensure.rb:20:7:22:9 | [ensure: break] if ... | break_ensure.rb:17:9:17:13 | break |
+| break_ensure.rb:20:7:22:9 | [ensure: raise] if ... | break_ensure.rb:20:10:20:10 | [ensure: raise] y |
+| break_ensure.rb:20:7:22:9 | if ... | break_ensure.rb:16:7:18:9 | if ... |
+| break_ensure.rb:20:10:20:10 | [ensure: raise] y | break_ensure.rb:16:10:16:10 | x |
+| break_ensure.rb:21:9:21:20 | [ensure: break] self | break_ensure.rb:17:9:17:13 | break |
+| break_ensure.rb:21:9:21:20 | [ensure: raise] self | break_ensure.rb:20:10:20:10 | [ensure: raise] y |
+| break_ensure.rb:21:9:21:20 | self | break_ensure.rb:16:7:18:9 | if ... |
+| break_ensure.rb:27:1:42:3 | exit m3 | break_ensure.rb:27:1:42:3 | enter m3 |
+| break_ensure.rb:27:1:42:3 | exit m3 (normal) | break_ensure.rb:27:1:42:3 | enter m3 |
+| break_ensure.rb:29:5:31:7 | if ... | break_ensure.rb:27:1:42:3 | enter m3 |
+| break_ensure.rb:30:7:30:12 | return | break_ensure.rb:27:1:42:3 | enter m3 |
+| break_ensure.rb:33:5:39:7 | [ensure: raise] while ... | break_ensure.rb:33:11:33:11 | [ensure: raise] y |
+| break_ensure.rb:33:5:39:7 | [ensure: return] while ... | break_ensure.rb:33:11:33:11 | [ensure: return] y |
+| break_ensure.rb:33:5:39:7 | while ... | break_ensure.rb:33:11:33:11 | y |
+| break_ensure.rb:33:11:33:11 | [ensure: raise] y | break_ensure.rb:27:1:42:3 | enter m3 |
+| break_ensure.rb:33:11:33:11 | [ensure: return] y | break_ensure.rb:30:7:30:12 | return |
+| break_ensure.rb:33:11:33:11 | y | break_ensure.rb:29:5:31:7 | if ... |
+| break_ensure.rb:35:9:37:11 | [ensure: raise] if ... | break_ensure.rb:35:12:35:12 | [ensure: raise] x |
+| break_ensure.rb:35:9:37:11 | [ensure: return] if ... | break_ensure.rb:35:12:35:12 | [ensure: return] x |
+| break_ensure.rb:35:9:37:11 | if ... | break_ensure.rb:35:12:35:12 | x |
+| break_ensure.rb:35:12:35:12 | [ensure: raise] x | break_ensure.rb:33:11:33:11 | [ensure: raise] y |
+| break_ensure.rb:35:12:35:12 | [ensure: return] x | break_ensure.rb:33:11:33:11 | [ensure: return] y |
+| break_ensure.rb:35:12:35:12 | x | break_ensure.rb:33:11:33:11 | y |
+| break_ensure.rb:36:11:36:15 | [ensure: raise] break | break_ensure.rb:35:12:35:12 | [ensure: raise] x |
+| break_ensure.rb:36:11:36:15 | [ensure: return] break | break_ensure.rb:35:12:35:12 | [ensure: return] x |
+| break_ensure.rb:36:11:36:15 | break | break_ensure.rb:35:12:35:12 | x |
+| break_ensure.rb:45:3:55:5 | while ... | break_ensure.rb:45:9:45:9 | x |
+| break_ensure.rb:45:9:45:9 | x | break_ensure.rb:44:1:56:3 | enter m4 |
+| break_ensure.rb:47:7:49:9 | if ... | break_ensure.rb:47:10:47:10 | x |
+| break_ensure.rb:47:10:47:10 | x | break_ensure.rb:45:9:45:9 | x |
+| break_ensure.rb:48:9:48:16 | self | break_ensure.rb:47:10:47:10 | x |
+| break_ensure.rb:51:7:53:9 | [ensure: raise] if ... | break_ensure.rb:51:10:51:10 | [ensure: raise] x |
+| break_ensure.rb:51:7:53:9 | if ... | break_ensure.rb:47:7:49:9 | if ... |
+| break_ensure.rb:51:10:51:10 | [ensure: raise] x | break_ensure.rb:47:10:47:10 | x |
+| break_ensure.rb:52:15:52:16 | 10 | break_ensure.rb:47:7:49:9 | if ... |
+| break_ensure.rb:52:15:52:16 | [ensure: raise] 10 | break_ensure.rb:51:10:51:10 | [ensure: raise] x |
+| case.rb:2:3:5:5 | case ... | case.rb:1:1:6:3 | enter if_in_case |
+| case.rb:3:5:3:42 | [match] when ... | case.rb:1:1:6:3 | enter if_in_case |
+| case.rb:3:5:3:42 | [no-match] when ... | case.rb:1:1:6:3 | enter if_in_case |
+| case.rb:3:18:3:41 | if ... | case.rb:3:21:3:22 | self |
+| case.rb:3:21:3:22 | self | case.rb:3:5:3:42 | [match] when ... |
+| case.rb:3:29:3:37 | self | case.rb:3:21:3:22 | self |
+| case.rb:4:5:4:24 | [match] when ... | case.rb:4:10:4:10 | 2 |
+| case.rb:4:5:4:24 | [no-match] when ... | case.rb:4:10:4:10 | 2 |
+| case.rb:4:10:4:10 | 2 | case.rb:3:5:3:42 | [no-match] when ... |
+| case.rb:4:17:4:24 | self | case.rb:4:5:4:24 | [match] when ... |
+| case.rb:9:3:17:5 | case ... | case.rb:8:1:18:3 | enter case_match |
+| case.rb:11:5:11:15 | in ... then ... | case.rb:8:1:18:3 | enter case_match |
+| case.rb:11:15:11:15 | 3 | case.rb:11:5:11:15 | in ... then ... |
+| case.rb:12:5:13:7 | in ... then ... | case.rb:11:5:11:15 | in ... then ... |
+| case.rb:13:7:13:7 | 4 | case.rb:12:5:13:7 | in ... then ... |
+| case.rb:14:5:14:25 | in ... then ... | case.rb:12:5:13:7 | in ... then ... |
+| case.rb:14:13:14:13 | x | case.rb:14:5:14:25 | in ... then ... |
+| case.rb:14:25:14:25 | 6 | case.rb:14:13:14:13 | x |
+| case.rb:15:5:15:28 | in ... then ... | case.rb:14:13:14:13 | x |
+| case.rb:15:17:15:17 | x | case.rb:15:5:15:28 | in ... then ... |
+| case.rb:15:28:15:28 | 7 | case.rb:15:17:15:17 | x |
+| case.rb:16:10:16:10 | 8 | case.rb:15:17:15:17 | x |
+| case.rb:20:1:24:3 | exit case_match_no_match | case.rb:20:1:24:3 | enter case_match_no_match |
+| case.rb:20:1:24:3 | exit case_match_no_match (abnormal) | case.rb:20:1:24:3 | enter case_match_no_match |
+| case.rb:21:3:23:5 | case ... | case.rb:20:1:24:3 | enter case_match_no_match |
+| case.rb:26:1:30:3 | exit case_match_raise | case.rb:26:1:30:3 | enter case_match_raise |
+| case.rb:26:1:30:3 | exit case_match_raise (abnormal) | case.rb:26:1:30:3 | enter case_match_raise |
+| case.rb:27:3:29:5 | case ... | case.rb:26:1:30:3 | enter case_match_raise |
+| case.rb:32:1:39:3 | exit case_match_array | case.rb:32:1:39:3 | enter case_match_array |
+| case.rb:32:1:39:3 | exit case_match_array (abnormal) | case.rb:37:5:37:27 | in ... then ... |
+| case.rb:33:3:38:5 | case ... | case.rb:32:1:39:3 | enter case_match_array |
+| case.rb:35:5:35:11 | in ... then ... | case.rb:32:1:39:3 | enter case_match_array |
+| case.rb:35:9:35:9 | x | case.rb:35:5:35:11 | in ... then ... |
+| case.rb:36:5:36:13 | in ... then ... | case.rb:35:5:35:11 | in ... then ... |
+| case.rb:36:9:36:9 | x | case.rb:36:5:36:13 | in ... then ... |
+| case.rb:37:5:37:27 | in ... then ... | case.rb:36:5:36:13 | in ... then ... |
+| case.rb:37:8:37:26 | [ ..., * ] | case.rb:37:5:37:27 | in ... then ... |
+| case.rb:37:12:37:12 | a | case.rb:37:8:37:26 | [ ..., * ] |
+| case.rb:37:15:37:15 | b | case.rb:37:12:37:12 | a |
+| case.rb:37:19:37:19 | c | case.rb:37:15:37:15 | b |
+| case.rb:37:25:37:25 | e | case.rb:37:19:37:19 | c |
+| case.rb:41:1:45:3 | exit case_match_find | case.rb:41:1:45:3 | enter case_match_find |
+| case.rb:41:1:45:3 | exit case_match_find (abnormal) | case.rb:41:1:45:3 | enter case_match_find |
+| case.rb:43:10:43:10 | x | case.rb:41:1:45:3 | enter case_match_find |
+| case.rb:43:16:43:16 | 2 | case.rb:43:10:43:10 | x |
+| case.rb:43:20:43:20 | y | case.rb:43:16:43:16 | 2 |
+| case.rb:47:1:53:3 | exit case_match_hash | case.rb:47:1:53:3 | enter case_match_hash |
+| case.rb:47:1:53:3 | exit case_match_hash (abnormal) | case.rb:51:5:51:17 | in ... then ... |
+| case.rb:48:3:52:5 | case ... | case.rb:47:1:53:3 | enter case_match_hash |
+| case.rb:49:8:49:34 | { ..., ** } | case.rb:47:1:53:3 | enter case_match_hash |
+| case.rb:49:20:49:20 | 1 | case.rb:49:8:49:34 | { ..., ** } |
+| case.rb:49:23:49:23 | a | case.rb:49:20:49:20 | 1 |
+| case.rb:49:29:49:32 | rest | case.rb:49:23:49:23 | a |
+| case.rb:50:5:50:25 | in ... then ... | case.rb:47:1:53:3 | enter case_match_hash |
+| case.rb:50:8:50:24 | { ..., ** } | case.rb:50:5:50:25 | in ... then ... |
+| case.rb:50:16:50:16 | 1 | case.rb:50:8:50:24 | { ..., ** } |
+| case.rb:51:5:51:17 | in ... then ... | case.rb:50:5:50:25 | in ... then ... |
+| case.rb:51:8:51:16 | { ..., ** } | case.rb:51:5:51:17 | in ... then ... |
+| case.rb:56:3:60:5 | case ... | case.rb:55:1:61:3 | enter case_match_variable |
+| case.rb:58:5:58:10 | in ... then ... | case.rb:55:1:61:3 | enter case_match_variable |
+| case.rb:64:3:66:5 | case ... | case.rb:63:1:67:3 | enter case_match_underscore |
+| case.rb:65:12:65:12 | _ | case.rb:63:1:67:3 | enter case_match_underscore |
+| case.rb:69:1:93:3 | exit case_match_various | case.rb:69:1:93:3 | enter case_match_various |
+| case.rb:69:1:93:3 | exit case_match_various (abnormal) | case.rb:91:23:91:24 | { ..., ** } |
+| case.rb:72:3:92:5 | case ... | case.rb:69:1:93:3 | enter case_match_various |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:69:1:93:3 | enter case_match_various |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:74:5:74:11 | in ... then ... |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:75:5:75:15 | in ... then ... |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:76:5:76:18 | in ... then ... |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:77:5:77:18 | in ... then ... |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:78:5:78:19 | in ... then ... |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:79:5:79:14 | in ... then ... |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:80:5:80:12 | in ... then ... |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:81:5:81:11 | in ... then ... |
+| case.rb:82:13:82:13 | x | case.rb:82:5:82:20 | in ... then ... |
+| case.rb:82:20:82:20 | 1 | case.rb:82:13:82:13 | x |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:82:5:82:20 | in ... then ... |
+| case.rb:83:12:83:15 | ^... | case.rb:83:5:83:26 | in ... then ... |
+| case.rb:83:20:83:25 | string | case.rb:83:12:83:15 | ^... |
+| case.rb:84:5:84:17 | in ... then ... | case.rb:83:20:83:25 | string |
+| case.rb:85:5:85:23 | in ... then ... | case.rb:84:5:84:17 | in ... then ... |
+| case.rb:86:5:86:11 | in ... then ... | case.rb:85:5:85:23 | in ... then ... |
+| case.rb:87:5:87:17 | in ... then ... | case.rb:86:5:86:11 | in ... then ... |
+| case.rb:88:5:88:15 | in ... then ... | case.rb:87:5:87:17 | in ... then ... |
+| case.rb:88:14:88:15 | 10 | case.rb:88:5:88:15 | in ... then ... |
+| case.rb:89:5:89:69 | in ... then ... | case.rb:88:14:88:15 | 10 |
+| case.rb:89:14:89:17 | self | case.rb:89:5:89:69 | in ... then ... |
+| case.rb:89:21:89:24 | true | case.rb:89:14:89:17 | self |
+| case.rb:89:28:89:32 | false | case.rb:89:21:89:24 | true |
+| case.rb:89:36:89:43 | __LINE__ | case.rb:89:28:89:32 | false |
+| case.rb:89:47:89:54 | __FILE__ | case.rb:89:36:89:43 | __LINE__ |
+| case.rb:89:58:89:69 | __ENCODING__ | case.rb:89:47:89:54 | __FILE__ |
+| case.rb:90:5:90:13 | in ... then ... | case.rb:89:58:89:69 | __ENCODING__ |
+| case.rb:91:5:91:25 | in ... then ... | case.rb:90:5:90:13 | in ... then ... |
+| case.rb:91:13:91:14 | "" | case.rb:91:5:91:25 | in ... then ... |
+| case.rb:91:18:91:19 | [ ..., * ] | case.rb:91:13:91:14 | "" |
+| case.rb:91:23:91:24 | { ..., ** } | case.rb:91:18:91:19 | [ ..., * ] |
+| case.rb:95:1:99:3 | exit case_match_guard_no_else | case.rb:97:13:97:13 | x |
+| case.rb:95:1:99:3 | exit case_match_guard_no_else (abnormal) | case.rb:97:13:97:13 | x |
+| case.rb:97:13:97:13 | x | case.rb:95:1:99:3 | enter case_match_guard_no_else |
+| case.rb:97:25:97:25 | 6 | case.rb:97:13:97:13 | x |
+| cfg.html.erb:18:14:22:16 | if ... | cfg.html.erb:5:16:31:12 | enter cfg.html.erb |
+| cfg.html.erb:19:19:19:32 | self | cfg.html.erb:5:16:31:12 | enter cfg.html.erb |
+| cfg.html.erb:21:19:21:32 | self | cfg.html.erb:5:16:31:12 | enter cfg.html.erb |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:1:1:221:1 | enter cfg.rb |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:32:9:32:9 | 1 |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:35:1:37:3 | if ... |
+| cfg.rb:42:3:42:24 | [match] when ... | cfg.rb:35:1:37:3 | if ... |
+| cfg.rb:42:3:42:24 | [no-match] when ... | cfg.rb:35:1:37:3 | if ... |
+| cfg.rb:42:15:42:24 | self | cfg.rb:42:3:42:24 | [match] when ... |
+| cfg.rb:43:3:43:31 | [match] when ... | cfg.rb:43:8:43:8 | 2 |
+| cfg.rb:43:3:43:31 | [no-match] when ... | cfg.rb:43:14:43:14 | 4 |
+| cfg.rb:43:8:43:8 | 2 | cfg.rb:42:3:42:24 | [no-match] when ... |
+| cfg.rb:43:11:43:11 | 3 | cfg.rb:43:8:43:8 | 2 |
+| cfg.rb:43:14:43:14 | 4 | cfg.rb:43:11:43:11 | 3 |
+| cfg.rb:43:21:43:31 | self | cfg.rb:43:3:43:31 | [match] when ... |
+| cfg.rb:44:8:44:18 | self | cfg.rb:43:3:43:31 | [no-match] when ... |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:41:1:45:3 | case ... |
+| cfg.rb:48:3:48:29 | [false] when ... | cfg.rb:41:1:45:3 | case ... |
+| cfg.rb:48:3:48:29 | [true] when ... | cfg.rb:41:1:45:3 | case ... |
+| cfg.rb:48:20:48:29 | self | cfg.rb:48:3:48:29 | [true] when ... |
+| cfg.rb:49:3:49:37 | [false] when ... | cfg.rb:49:16:49:16 | b |
+| cfg.rb:49:3:49:37 | [true] when ... | cfg.rb:49:8:49:8 | b |
+| cfg.rb:49:8:49:8 | b | cfg.rb:48:3:48:29 | [false] when ... |
+| cfg.rb:49:16:49:16 | b | cfg.rb:49:8:49:8 | b |
+| cfg.rb:49:27:49:37 | self | cfg.rb:49:3:49:37 | [true] when ... |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:47:1:50:3 | case ... |
+| cfg.rb:60:27:60:31 | hello | cfg.rb:47:1:50:3 | case ... |
+| cfg.rb:60:37:60:39 | bye | cfg.rb:47:1:50:3 | case ... |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:60:17:60:40 | ... ? ... : ... |
+| cfg.rb:75:15:75:15 | 0 | cfg.rb:60:17:60:40 | ... ? ... : ... |
+| cfg.rb:75:17:75:43 | elsif ... | cfg.rb:75:23:75:23 | x |
+| cfg.rb:75:23:75:23 | x | cfg.rb:60:17:60:40 | ... ? ... : ... |
+| cfg.rb:75:35:75:36 | 10 | cfg.rb:75:23:75:23 | x |
+| cfg.rb:75:43:75:43 | x | cfg.rb:75:23:75:23 | x |
+| cfg.rb:90:1:93:3 | exit { ... } (normal) | cfg.rb:90:1:93:3 | enter { ... } |
+| cfg.rb:90:5:90:5 | [false] ! ... | cfg.rb:75:1:75:47 | if ... |
+| cfg.rb:90:5:90:5 | [true] ! ... | cfg.rb:75:1:75:47 | if ... |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:75:1:75:47 | if ... |
+| cfg.rb:90:5:90:5 | x | cfg.rb:90:5:90:5 | [true] ! ... |
+| cfg.rb:91:3:91:24 | if ... | cfg.rb:90:1:93:3 | enter { ... } |
+| cfg.rb:91:17:91:20 | next | cfg.rb:90:1:93:3 | enter { ... } |
+| cfg.rb:101:24:101:25 | 42 | cfg.rb:101:1:104:3 | enter parameters |
+| cfg.rb:101:28:101:30 | key | cfg.rb:101:1:104:3 | enter parameters |
+| cfg.rb:113:1:113:9 | self | cfg.rb:90:5:90:5 | if ... |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:90:5:90:5 | if ... |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:113:1:113:19 | ... if ... |
+| cfg.rb:136:12:136:29 | self | cfg.rb:113:1:113:19 | ... if ... |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:136:1:136:29 | ... rescue ... |
+| cfg.rb:172:21:172:29 | self | cfg.rb:136:1:136:29 | ... rescue ... |
+| cfg.rb:172:36:172:45 | self | cfg.rb:136:1:136:29 | ... rescue ... |
+| cfg.rb:174:1:174:9 | self | cfg.rb:172:1:172:49 | unless ... |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:172:1:172:49 | unless ... |
+| cfg.rb:176:1:176:41 | until ... | cfg.rb:176:7:176:7 | x |
+| cfg.rb:176:7:176:7 | x | cfg.rb:174:1:174:23 | ... unless ... |
+| cfg.rb:176:17:176:17 | x | cfg.rb:176:7:176:7 | x |
+| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:179:30:179:30 | i |
+| cfg.rb:179:2:179:13 | self | cfg.rb:179:30:179:30 | i |
+| cfg.rb:179:30:179:30 | i | cfg.rb:176:1:176:41 | until ... |
+| cfg.rb:182:1:186:3 | while ... | cfg.rb:182:7:182:7 | x |
+| cfg.rb:182:7:182:7 | x | cfg.rb:179:1:179:36 | ... until ... |
+| cfg.rb:183:3:183:3 | x | cfg.rb:182:7:182:7 | x |
+| cfg.rb:184:3:184:25 | if ... | cfg.rb:183:3:183:3 | x |
+| cfg.rb:184:18:184:21 | redo | cfg.rb:183:3:183:3 | x |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:188:30:188:30 | i |
+| cfg.rb:188:2:188:13 | self | cfg.rb:188:30:188:30 | i |
+| cfg.rb:188:30:188:30 | i | cfg.rb:182:1:186:3 | while ... |
+| cfg.rb:205:1:205:3 | __synth__0__1 | cfg.rb:188:1:188:35 | ... while ... |
+| cfg.rb:205:1:205:3 | nil | cfg.rb:188:1:188:35 | ... while ... |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:188:1:188:35 | ... while ... |
+| constant_compound_assign.rb:5:18:5:20 | ... \|\| ... | constant_compound_assign.rb:1:1:22:4 | enter constant_compound_assign.rb |
+| constant_compound_assign.rb:5:22:5:24 | 123 | constant_compound_assign.rb:1:1:22:4 | enter constant_compound_assign.rb |
+| constant_compound_assign.rb:14:14:14:16 | ... \|\| ... | constant_compound_assign.rb:5:18:5:20 | ... \|\| ... |
+| constant_compound_assign.rb:14:18:14:20 | 123 | constant_compound_assign.rb:5:18:5:20 | ... \|\| ... |
+| constant_compound_assign.rb:19:17:19:19 | ... \|\| ... | constant_compound_assign.rb:14:14:14:16 | ... \|\| ... |
+| constant_compound_assign.rb:19:21:19:23 | 123 | constant_compound_assign.rb:14:14:14:16 | ... \|\| ... |
+| exit.rb:1:1:6:3 | exit m1 | exit.rb:1:1:6:3 | enter m1 |
+| exit.rb:2:3:4:5 | if ... | exit.rb:1:1:6:3 | enter m1 |
+| exit.rb:3:5:3:10 | self | exit.rb:1:1:6:3 | enter m1 |
+| exit.rb:8:1:13:3 | exit m2 | exit.rb:8:1:13:3 | enter m2 |
+| exit.rb:9:3:11:5 | if ... | exit.rb:8:1:13:3 | enter m2 |
+| exit.rb:10:5:10:18 | self | exit.rb:8:1:13:3 | enter m2 |
+| ifs.rb:2:3:8:5 | if ... | ifs.rb:1:1:9:3 | enter m1 |
+| ifs.rb:3:5:3:30 | self | ifs.rb:1:1:9:3 | enter m1 |
+| ifs.rb:4:3:7:35 | elsif ... | ifs.rb:4:9:4:9 | x |
+| ifs.rb:4:9:4:9 | x | ifs.rb:1:1:9:3 | enter m1 |
+| ifs.rb:4:9:4:24 | [false] ... and ... | ifs.rb:4:9:4:9 | x |
+| ifs.rb:4:9:4:24 | [true] ... and ... | ifs.rb:4:20:4:20 | x |
+| ifs.rb:4:9:4:38 | [false] ... and ... | ifs.rb:4:9:4:9 | x |
+| ifs.rb:4:9:4:38 | [true] ... and ... | ifs.rb:4:30:4:38 | [true] ! ... |
+| ifs.rb:4:20:4:20 | x | ifs.rb:4:9:4:9 | x |
+| ifs.rb:4:30:4:38 | [false] ! ... | ifs.rb:4:31:4:38 | [true] ( ... ) |
+| ifs.rb:4:30:4:38 | [true] ! ... | ifs.rb:4:31:4:38 | [false] ( ... ) |
+| ifs.rb:4:31:4:38 | [false] ( ... ) | ifs.rb:4:32:4:32 | x |
+| ifs.rb:4:31:4:38 | [true] ( ... ) | ifs.rb:4:32:4:32 | x |
+| ifs.rb:4:32:4:32 | x | ifs.rb:4:9:4:24 | [true] ... and ... |
+| ifs.rb:5:5:5:17 | self | ifs.rb:4:9:4:38 | [true] ... and ... |
+| ifs.rb:7:5:7:35 | self | ifs.rb:4:9:4:38 | [false] ... and ... |
+| ifs.rb:11:1:16:3 | exit m2 (normal) | ifs.rb:11:1:16:3 | enter m2 |
+| ifs.rb:12:3:14:5 | if ... | ifs.rb:11:1:16:3 | enter m2 |
+| ifs.rb:13:12:13:12 | 0 | ifs.rb:11:1:16:3 | enter m2 |
+| ifs.rb:19:3:24:5 | if ... | ifs.rb:18:1:26:3 | enter m3 |
+| ifs.rb:20:5:20:5 | x | ifs.rb:18:1:26:3 | enter m3 |
+| ifs.rb:21:5:23:7 | if ... | ifs.rb:20:5:20:5 | x |
+| ifs.rb:22:7:22:7 | x | ifs.rb:20:5:20:5 | x |
+| ifs.rb:29:10:29:23 | [false] ( ... ) | ifs.rb:29:11:29:22 | [false] ... ? ... : ... |
+| ifs.rb:29:10:29:23 | [true] ( ... ) | ifs.rb:29:11:29:22 | [true] ... ? ... : ... |
+| ifs.rb:29:10:29:51 | ... ? ... : ... | ifs.rb:28:1:30:3 | enter m4 |
+| ifs.rb:29:11:29:22 | [false] ... ? ... : ... | ifs.rb:28:1:30:3 | enter m4 |
+| ifs.rb:29:11:29:22 | [true] ... ? ... : ... | ifs.rb:28:1:30:3 | enter m4 |
+| ifs.rb:29:16:29:17 | b2 | ifs.rb:28:1:30:3 | enter m4 |
+| ifs.rb:29:21:29:22 | b3 | ifs.rb:28:1:30:3 | enter m4 |
+| ifs.rb:29:28:29:35 | b2 \|\| b3 | ifs.rb:29:10:29:23 | [true] ( ... ) |
+| ifs.rb:29:41:29:50 | !b2 \|\| !b3 | ifs.rb:29:10:29:23 | [false] ( ... ) |
+| ifs.rb:33:3:33:100 | if ... | ifs.rb:32:1:34:3 | enter m5 |
+| ifs.rb:33:6:33:49 | [false] ( ... ) | ifs.rb:33:7:33:48 | [false] if ... |
+| ifs.rb:33:6:33:49 | [true] ( ... ) | ifs.rb:33:7:33:48 | [true] if ... |
+| ifs.rb:33:7:33:48 | [false] if ... | ifs.rb:32:1:34:3 | enter m5 |
+| ifs.rb:33:7:33:48 | [true] if ... | ifs.rb:32:1:34:3 | enter m5 |
+| ifs.rb:33:13:33:19 | [false] then ... | ifs.rb:33:18:33:19 | b2 |
+| ifs.rb:33:13:33:19 | [true] then ... | ifs.rb:33:18:33:19 | b2 |
+| ifs.rb:33:18:33:19 | b2 | ifs.rb:32:1:34:3 | enter m5 |
+| ifs.rb:33:21:33:44 | [false] elsif ... | ifs.rb:33:27:33:28 | b3 |
+| ifs.rb:33:21:33:44 | [true] elsif ... | ifs.rb:33:27:33:28 | b3 |
+| ifs.rb:33:27:33:28 | b3 | ifs.rb:32:1:34:3 | enter m5 |
+| ifs.rb:33:30:33:36 | [false] then ... | ifs.rb:33:35:33:36 | b4 |
+| ifs.rb:33:30:33:36 | [true] then ... | ifs.rb:33:35:33:36 | b4 |
+| ifs.rb:33:35:33:36 | b4 | ifs.rb:33:27:33:28 | b3 |
+| ifs.rb:33:38:33:44 | [false] else ... | ifs.rb:33:43:33:44 | b5 |
+| ifs.rb:33:38:33:44 | [true] else ... | ifs.rb:33:43:33:44 | b5 |
+| ifs.rb:33:43:33:44 | b5 | ifs.rb:33:27:33:28 | b3 |
+| ifs.rb:33:57:33:70 | b2 \|\| b4 \|\| b5 | ifs.rb:33:6:33:49 | [true] ( ... ) |
+| ifs.rb:33:79:33:95 | !b2 \|\| !b4 \|\| !b5 | ifs.rb:33:6:33:49 | [false] ( ... ) |
+| ifs.rb:36:1:38:3 | conditional_method_def | ifs.rb:1:1:58:4 | enter ifs.rb |
+| ifs.rb:36:1:38:17 | ... unless ... | ifs.rb:1:1:58:4 | enter ifs.rb |
+| ifs.rb:41:3:43:5 | if ... | ifs.rb:41:6:41:10 | [false] ! ... |
+| ifs.rb:41:6:41:10 | [false] ! ... | ifs.rb:40:1:44:3 | enter constant_condition |
+| ifs.rb:47:3:50:5 | if ... | ifs.rb:46:1:52:3 | enter empty_else |
+| ifs.rb:48:5:48:15 | self | ifs.rb:46:1:52:3 | enter empty_else |
+| ifs.rb:49:3:49:6 | else ... | ifs.rb:46:1:52:3 | enter empty_else |
+| ifs.rb:55:3:57:5 | if ... | ifs.rb:54:1:58:3 | enter disjunct |
+| ifs.rb:55:6:55:15 | [false] ( ... ) | ifs.rb:55:7:55:14 | [false] ... \|\| ... |
+| ifs.rb:55:6:55:15 | [true] ( ... ) | ifs.rb:55:7:55:14 | [true] ... \|\| ... |
+| ifs.rb:55:7:55:14 | [false] ... \|\| ... | ifs.rb:55:13:55:14 | b2 |
+| ifs.rb:55:7:55:14 | [true] ... \|\| ... | ifs.rb:54:1:58:3 | enter disjunct |
+| ifs.rb:55:13:55:14 | b2 | ifs.rb:54:1:58:3 | enter disjunct |
+| ifs.rb:56:5:56:19 | self | ifs.rb:55:6:55:15 | [true] ( ... ) |
+| loops.rb:2:3:5:5 | while ... | loops.rb:2:9:2:9 | x |
+| loops.rb:2:9:2:9 | x | loops.rb:1:1:6:3 | enter m1 |
+| loops.rb:3:5:3:10 | self | loops.rb:2:9:2:9 | x |
+| loops.rb:9:3:20:5 | while ... | loops.rb:9:9:9:9 | x |
+| loops.rb:9:9:9:9 | x | loops.rb:8:1:22:3 | enter m2 |
+| loops.rb:10:5:10:10 | self | loops.rb:9:9:9:9 | x |
+| loops.rb:13:7:13:11 | break | loops.rb:10:5:10:10 | self |
+| loops.rb:14:11:14:11 | x | loops.rb:10:5:10:10 | self |
+| loops.rb:15:7:15:10 | next | loops.rb:14:11:14:11 | x |
+| loops.rb:16:5:17:10 | elsif ... | loops.rb:16:11:16:11 | x |
+| loops.rb:16:11:16:11 | x | loops.rb:14:11:14:11 | x |
+| loops.rb:17:7:17:10 | redo | loops.rb:16:11:16:11 | x |
+| loops.rb:31:3:32:5 | while ... | loops.rb:31:9:31:9 | x |
+| loops.rb:31:9:31:9 | x | loops.rb:30:1:33:3 | enter m4 |
+| loops.rb:31:15:32:5 | do ... | loops.rb:31:9:31:9 | x |
+| raise.rb:7:1:12:3 | exit m1 | raise.rb:7:1:12:3 | enter m1 |
+| raise.rb:8:3:10:5 | if ... | raise.rb:7:1:12:3 | enter m1 |
+| raise.rb:9:5:9:17 | self | raise.rb:7:1:12:3 | enter m1 |
+| raise.rb:14:1:23:3 | exit m2 | raise.rb:14:1:23:3 | enter m2 |
+| raise.rb:14:1:23:3 | exit m2 (abnormal) | raise.rb:17:7:17:22 | self |
+| raise.rb:16:5:18:7 | if ... | raise.rb:14:1:23:3 | enter m2 |
+| raise.rb:17:7:17:22 | self | raise.rb:14:1:23:3 | enter m2 |
+| raise.rb:20:5:20:18 | self | raise.rb:17:7:17:22 | self |
+| raise.rb:22:3:22:15 | self | raise.rb:14:1:23:3 | enter m2 |
+| raise.rb:27:5:29:7 | if ... | raise.rb:25:1:34:3 | enter m3 |
+| raise.rb:28:7:28:22 | self | raise.rb:25:1:34:3 | enter m3 |
+| raise.rb:33:3:33:15 | self | raise.rb:25:1:34:3 | enter m3 |
+| raise.rb:38:5:40:7 | if ... | raise.rb:36:1:45:3 | enter m4 |
+| raise.rb:39:7:39:22 | self | raise.rb:36:1:45:3 | enter m4 |
+| raise.rb:44:3:44:15 | self | raise.rb:36:1:45:3 | enter m4 |
+| raise.rb:49:5:51:7 | if ... | raise.rb:47:1:55:3 | enter m5 |
+| raise.rb:50:7:50:22 | self | raise.rb:47:1:55:3 | enter m5 |
+| raise.rb:54:3:54:15 | self | raise.rb:47:1:55:3 | enter m5 |
+| raise.rb:57:1:66:3 | exit m6 | raise.rb:57:1:66:3 | enter m6 |
+| raise.rb:57:1:66:3 | exit m6 (abnormal) | raise.rb:62:22:62:31 | ExceptionB |
+| raise.rb:59:5:61:7 | if ... | raise.rb:57:1:66:3 | enter m6 |
+| raise.rb:60:7:60:22 | self | raise.rb:57:1:66:3 | enter m6 |
+| raise.rb:62:22:62:31 | ExceptionB | raise.rb:60:7:60:22 | self |
+| raise.rb:62:36:62:36 | e | raise.rb:60:7:60:22 | self |
+| raise.rb:65:3:65:15 | self | raise.rb:57:1:66:3 | enter m6 |
+| raise.rb:68:1:77:3 | exit m7 | raise.rb:68:1:77:3 | enter m7 |
+| raise.rb:68:1:77:3 | exit m7 (normal) | raise.rb:71:9:71:9 | x |
+| raise.rb:70:5:70:17 | self | raise.rb:68:1:77:3 | enter m7 |
+| raise.rb:71:3:72:18 | elsif ... | raise.rb:71:9:71:9 | x |
+| raise.rb:71:9:71:9 | x | raise.rb:68:1:77:3 | enter m7 |
+| raise.rb:72:13:72:17 | x < 0 | raise.rb:71:9:71:9 | x |
+| raise.rb:76:3:76:15 | [ensure: raise] self | raise.rb:68:1:77:3 | enter m7 |
+| raise.rb:76:3:76:15 | self | raise.rb:71:3:72:18 | elsif ... |
+| raise.rb:79:1:92:3 | exit m8 | raise.rb:79:1:92:3 | enter m8 |
+| raise.rb:79:1:92:3 | exit m8 (normal) | raise.rb:84:11:84:11 | x |
+| raise.rb:83:7:83:19 | self | raise.rb:79:1:92:3 | enter m8 |
+| raise.rb:84:5:85:20 | elsif ... | raise.rb:84:11:84:11 | x |
+| raise.rb:84:11:84:11 | x | raise.rb:79:1:92:3 | enter m8 |
+| raise.rb:85:15:85:19 | x < 0 | raise.rb:84:11:84:11 | x |
+| raise.rb:89:5:89:17 | [ensure: raise] self | raise.rb:79:1:92:3 | enter m8 |
+| raise.rb:89:5:89:17 | self | raise.rb:84:5:85:20 | elsif ... |
+| raise.rb:94:1:119:3 | exit m9 | raise.rb:94:1:119:3 | enter m9 |
+| raise.rb:94:1:119:3 | exit m9 (abnormal) | raise.rb:94:1:119:3 | enter m9 |
+| raise.rb:94:1:119:3 | exit m9 (normal) | raise.rb:99:11:99:11 | x |
+| raise.rb:97:8:97:8 | x | raise.rb:94:1:119:3 | enter m9 |
+| raise.rb:98:7:98:19 | self | raise.rb:97:8:97:8 | x |
+| raise.rb:99:5:100:20 | elsif ... | raise.rb:99:11:99:11 | x |
+| raise.rb:99:11:99:11 | x | raise.rb:97:8:97:8 | x |
+| raise.rb:100:15:100:19 | x < 0 | raise.rb:99:11:99:11 | x |
+| raise.rb:104:5:104:23 | [ensure: raise] self | raise.rb:97:8:97:8 | x |
+| raise.rb:104:5:104:23 | self | raise.rb:99:5:100:20 | elsif ... |
+| raise.rb:106:7:108:9 | [ensure: raise] if ... | raise.rb:106:10:106:11 | [ensure: raise] b1 |
+| raise.rb:106:7:108:9 | [ensure: return] if ... | raise.rb:106:10:106:11 | [ensure: return] b1 |
+| raise.rb:106:7:108:9 | if ... | raise.rb:106:10:106:11 | b1 |
+| raise.rb:106:10:106:11 | [ensure: raise] b1 | raise.rb:104:5:104:23 | [ensure: raise] self |
+| raise.rb:106:10:106:11 | [ensure: return] b1 | raise.rb:100:15:100:19 | x < 0 |
+| raise.rb:106:10:106:11 | b1 | raise.rb:104:5:104:23 | self |
+| raise.rb:107:9:107:26 | [ensure: raise] self | raise.rb:106:10:106:11 | [ensure: raise] b1 |
+| raise.rb:107:9:107:26 | [ensure: return] self | raise.rb:106:10:106:11 | [ensure: return] b1 |
+| raise.rb:107:9:107:26 | self | raise.rb:106:10:106:11 | b1 |
+| raise.rb:109:5:110:25 | [ensure(1): raise] ensure ... | raise.rb:107:9:107:26 | self |
+| raise.rb:109:5:110:25 | [ensure: raise, ensure(1): raise] ensure ... | raise.rb:107:9:107:26 | [ensure: raise] self |
+| raise.rb:109:5:110:25 | [ensure: raise] ensure ... | raise.rb:106:7:108:9 | [ensure: raise] if ... |
+| raise.rb:109:5:110:25 | [ensure: return, ensure(1): raise] ensure ... | raise.rb:107:9:107:26 | [ensure: return] self |
+| raise.rb:109:5:110:25 | [ensure: return] ensure ... | raise.rb:106:7:108:9 | [ensure: return] if ... |
+| raise.rb:109:5:110:25 | ensure ... | raise.rb:106:7:108:9 | if ... |
+| raise.rb:115:3:115:22 | [ensure: raise] self | raise.rb:94:1:119:3 | enter m9 |
+| raise.rb:115:3:115:22 | self | raise.rb:109:5:110:25 | ensure ... |
+| raise.rb:116:3:118:5 | [ensure: raise] if ... | raise.rb:115:3:115:22 | [ensure: raise] self |
+| raise.rb:116:3:118:5 | [ensure: return] if ... | raise.rb:109:5:110:25 | [ensure: return] ensure ... |
+| raise.rb:116:3:118:5 | if ... | raise.rb:115:3:115:22 | self |
+| raise.rb:117:5:117:22 | [ensure: raise] self | raise.rb:115:3:115:22 | [ensure: raise] self |
+| raise.rb:117:5:117:22 | [ensure: return] self | raise.rb:109:5:110:25 | [ensure: return] ensure ... |
+| raise.rb:117:5:117:22 | self | raise.rb:115:3:115:22 | self |
+| raise.rb:121:1:126:3 | exit m10 | raise.rb:121:1:126:3 | enter m10 |
+| raise.rb:121:14:121:30 | self | raise.rb:121:1:126:3 | enter m10 |
+| raise.rb:125:3:125:51 | self | raise.rb:121:1:126:3 | enter m10 |
+| raise.rb:128:1:140:3 | exit m11 | raise.rb:128:1:140:3 | enter m11 |
+| raise.rb:130:5:132:7 | if ... | raise.rb:128:1:140:3 | enter m11 |
+| raise.rb:131:7:131:22 | self | raise.rb:128:1:140:3 | enter m11 |
+| raise.rb:133:3:133:19 | rescue ... | raise.rb:131:7:131:22 | self |
+| raise.rb:134:10:134:19 | ExceptionB | raise.rb:131:7:131:22 | self |
+| raise.rb:135:5:135:21 | self | raise.rb:134:10:134:19 | ExceptionB |
+| raise.rb:137:5:137:17 | [ensure: raise] self | raise.rb:134:10:134:19 | ExceptionB |
+| raise.rb:137:5:137:17 | self | raise.rb:128:1:140:3 | enter m11 |
+| raise.rb:142:1:148:3 | exit m12 (normal) | raise.rb:142:1:148:3 | enter m12 |
+| raise.rb:143:3:145:5 | if ... | raise.rb:142:1:148:3 | enter m12 |
+| raise.rb:144:5:144:12 | self | raise.rb:142:1:148:3 | enter m12 |
+| raise.rb:155:16:155:50 | exit { ... } | raise.rb:155:16:155:50 | enter { ... } |
+| raise.rb:155:25:155:32 | self | raise.rb:155:16:155:50 | enter { ... } |
+| raise.rb:155:25:155:48 | ... if ... | raise.rb:155:16:155:50 | enter { ... } |
+| raise.rb:160:9:162:7 | exit -> { ... } | raise.rb:160:9:162:7 | enter -> { ... } |
+| raise.rb:161:7:161:14 | self | raise.rb:160:9:162:7 | enter -> { ... } |
+| raise.rb:161:7:161:23 | ... unless ... | raise.rb:160:9:162:7 | enter -> { ... } |
+| raise.rb:172:1:182:3 | exit m16 | raise.rb:172:1:182:3 | enter m16 |
+| raise.rb:172:1:182:3 | exit m16 (abnormal) | raise.rb:179:10:179:19 | ExceptionA |
+| raise.rb:172:1:182:3 | exit m16 (normal) | raise.rb:172:1:182:3 | enter m16 |
+| raise.rb:174:8:174:23 | [false] ... \|\| ... | raise.rb:174:14:174:15 | b2 |
+| raise.rb:174:8:174:23 | [true] ... \|\| ... | raise.rb:172:1:182:3 | enter m16 |
+| raise.rb:174:14:174:15 | b2 | raise.rb:172:1:182:3 | enter m16 |
+| raise.rb:175:14:175:14 | 1 | raise.rb:174:8:174:23 | [true] ... \|\| ... |
+| raise.rb:177:14:177:14 | 2 | raise.rb:174:8:174:23 | [false] ... \|\| ... |
+| raise.rb:179:10:179:19 | ExceptionA | raise.rb:172:1:182:3 | enter m16 |
+| raise.rb:180:12:180:12 | 3 | raise.rb:179:10:179:19 | ExceptionA |
+controls
+| break_ensure.rb:2:3:6:5 | while ... | break_ensure.rb:9:5:9:23 | self | true |
+| break_ensure.rb:2:9:2:9 | x | break_ensure.rb:3:5:5:7 | if ... | true |
+| break_ensure.rb:2:9:2:9 | x | break_ensure.rb:3:8:3:8 | x | true |
+| break_ensure.rb:2:9:2:9 | x | break_ensure.rb:4:7:4:11 | break | true |
+| break_ensure.rb:3:8:3:8 | x | break_ensure.rb:3:5:5:7 | if ... | false |
+| break_ensure.rb:3:8:3:8 | x | break_ensure.rb:4:7:4:11 | break | true |
+| break_ensure.rb:8:6:8:13 | [ensure: raise] self | break_ensure.rb:9:5:9:23 | [ensure: raise] self | true |
+| break_ensure.rb:14:9:14:9 | x | break_ensure.rb:16:7:18:9 | if ... | true |
+| break_ensure.rb:14:9:14:9 | x | break_ensure.rb:16:10:16:10 | x | true |
+| break_ensure.rb:14:9:14:9 | x | break_ensure.rb:17:9:17:13 | break | true |
+| break_ensure.rb:14:9:14:9 | x | break_ensure.rb:20:7:22:9 | [ensure: break] if ... | true |
+| break_ensure.rb:14:9:14:9 | x | break_ensure.rb:20:7:22:9 | [ensure: raise] if ... | true |
+| break_ensure.rb:14:9:14:9 | x | break_ensure.rb:20:7:22:9 | if ... | true |
+| break_ensure.rb:14:9:14:9 | x | break_ensure.rb:20:10:20:10 | [ensure: raise] y | true |
+| break_ensure.rb:14:9:14:9 | x | break_ensure.rb:21:9:21:20 | [ensure: break] self | true |
+| break_ensure.rb:14:9:14:9 | x | break_ensure.rb:21:9:21:20 | [ensure: raise] self | true |
+| break_ensure.rb:14:9:14:9 | x | break_ensure.rb:21:9:21:20 | self | true |
+| break_ensure.rb:16:7:18:9 | if ... | break_ensure.rb:21:9:21:20 | self | true |
+| break_ensure.rb:16:10:16:10 | x | break_ensure.rb:16:7:18:9 | if ... | false |
+| break_ensure.rb:16:10:16:10 | x | break_ensure.rb:17:9:17:13 | break | true |
+| break_ensure.rb:16:10:16:10 | x | break_ensure.rb:20:7:22:9 | [ensure: break] if ... | true |
+| break_ensure.rb:16:10:16:10 | x | break_ensure.rb:20:7:22:9 | if ... | false |
+| break_ensure.rb:16:10:16:10 | x | break_ensure.rb:21:9:21:20 | [ensure: break] self | true |
+| break_ensure.rb:16:10:16:10 | x | break_ensure.rb:21:9:21:20 | self | false |
+| break_ensure.rb:17:9:17:13 | break | break_ensure.rb:21:9:21:20 | [ensure: break] self | true |
+| break_ensure.rb:20:10:20:10 | [ensure: raise] y | break_ensure.rb:21:9:21:20 | [ensure: raise] self | true |
+| break_ensure.rb:27:1:42:3 | enter m3 | break_ensure.rb:29:5:31:7 | if ... | false |
+| break_ensure.rb:27:1:42:3 | enter m3 | break_ensure.rb:30:7:30:12 | return | true |
+| break_ensure.rb:27:1:42:3 | enter m3 | break_ensure.rb:33:5:39:7 | [ensure: return] while ... | true |
+| break_ensure.rb:27:1:42:3 | enter m3 | break_ensure.rb:33:5:39:7 | while ... | false |
+| break_ensure.rb:27:1:42:3 | enter m3 | break_ensure.rb:33:11:33:11 | [ensure: return] y | true |
+| break_ensure.rb:27:1:42:3 | enter m3 | break_ensure.rb:33:11:33:11 | y | false |
+| break_ensure.rb:27:1:42:3 | enter m3 | break_ensure.rb:35:9:37:11 | [ensure: return] if ... | true |
+| break_ensure.rb:27:1:42:3 | enter m3 | break_ensure.rb:35:9:37:11 | if ... | false |
+| break_ensure.rb:27:1:42:3 | enter m3 | break_ensure.rb:35:12:35:12 | [ensure: return] x | true |
+| break_ensure.rb:27:1:42:3 | enter m3 | break_ensure.rb:35:12:35:12 | x | false |
+| break_ensure.rb:27:1:42:3 | enter m3 | break_ensure.rb:36:11:36:15 | [ensure: return] break | true |
+| break_ensure.rb:27:1:42:3 | enter m3 | break_ensure.rb:36:11:36:15 | break | false |
+| break_ensure.rb:33:11:33:11 | [ensure: raise] y | break_ensure.rb:35:9:37:11 | [ensure: raise] if ... | true |
+| break_ensure.rb:33:11:33:11 | [ensure: raise] y | break_ensure.rb:35:12:35:12 | [ensure: raise] x | true |
+| break_ensure.rb:33:11:33:11 | [ensure: raise] y | break_ensure.rb:36:11:36:15 | [ensure: raise] break | true |
+| break_ensure.rb:33:11:33:11 | [ensure: return] y | break_ensure.rb:35:9:37:11 | [ensure: return] if ... | true |
+| break_ensure.rb:33:11:33:11 | [ensure: return] y | break_ensure.rb:35:12:35:12 | [ensure: return] x | true |
+| break_ensure.rb:33:11:33:11 | [ensure: return] y | break_ensure.rb:36:11:36:15 | [ensure: return] break | true |
+| break_ensure.rb:33:11:33:11 | y | break_ensure.rb:35:9:37:11 | if ... | true |
+| break_ensure.rb:33:11:33:11 | y | break_ensure.rb:35:12:35:12 | x | true |
+| break_ensure.rb:33:11:33:11 | y | break_ensure.rb:36:11:36:15 | break | true |
+| break_ensure.rb:35:12:35:12 | [ensure: raise] x | break_ensure.rb:35:9:37:11 | [ensure: raise] if ... | false |
+| break_ensure.rb:35:12:35:12 | [ensure: raise] x | break_ensure.rb:36:11:36:15 | [ensure: raise] break | true |
+| break_ensure.rb:35:12:35:12 | [ensure: return] x | break_ensure.rb:35:9:37:11 | [ensure: return] if ... | false |
+| break_ensure.rb:35:12:35:12 | [ensure: return] x | break_ensure.rb:36:11:36:15 | [ensure: return] break | true |
+| break_ensure.rb:35:12:35:12 | x | break_ensure.rb:35:9:37:11 | if ... | false |
+| break_ensure.rb:35:12:35:12 | x | break_ensure.rb:36:11:36:15 | break | true |
+| break_ensure.rb:45:9:45:9 | x | break_ensure.rb:47:7:49:9 | if ... | true |
+| break_ensure.rb:45:9:45:9 | x | break_ensure.rb:47:10:47:10 | x | true |
+| break_ensure.rb:45:9:45:9 | x | break_ensure.rb:48:9:48:16 | self | true |
+| break_ensure.rb:45:9:45:9 | x | break_ensure.rb:51:7:53:9 | [ensure: raise] if ... | true |
+| break_ensure.rb:45:9:45:9 | x | break_ensure.rb:51:7:53:9 | if ... | true |
+| break_ensure.rb:45:9:45:9 | x | break_ensure.rb:51:10:51:10 | [ensure: raise] x | true |
+| break_ensure.rb:45:9:45:9 | x | break_ensure.rb:52:15:52:16 | 10 | true |
+| break_ensure.rb:45:9:45:9 | x | break_ensure.rb:52:15:52:16 | [ensure: raise] 10 | true |
+| break_ensure.rb:47:7:49:9 | if ... | break_ensure.rb:51:7:53:9 | if ... | false |
+| break_ensure.rb:47:7:49:9 | if ... | break_ensure.rb:52:15:52:16 | 10 | true |
+| break_ensure.rb:47:10:47:10 | x | break_ensure.rb:47:7:49:9 | if ... | false |
+| break_ensure.rb:47:10:47:10 | x | break_ensure.rb:48:9:48:16 | self | true |
+| break_ensure.rb:47:10:47:10 | x | break_ensure.rb:51:7:53:9 | if ... | false |
+| break_ensure.rb:47:10:47:10 | x | break_ensure.rb:52:15:52:16 | 10 | false |
+| break_ensure.rb:51:10:51:10 | [ensure: raise] x | break_ensure.rb:51:7:53:9 | [ensure: raise] if ... | false |
+| break_ensure.rb:51:10:51:10 | [ensure: raise] x | break_ensure.rb:52:15:52:16 | [ensure: raise] 10 | true |
+| case.rb:1:1:6:3 | enter if_in_case | case.rb:3:5:3:42 | [match] when ... | match |
+| case.rb:1:1:6:3 | enter if_in_case | case.rb:3:5:3:42 | [no-match] when ... | no-match |
+| case.rb:1:1:6:3 | enter if_in_case | case.rb:3:18:3:41 | if ... | match |
+| case.rb:1:1:6:3 | enter if_in_case | case.rb:3:21:3:22 | self | match |
+| case.rb:1:1:6:3 | enter if_in_case | case.rb:3:29:3:37 | self | match |
+| case.rb:1:1:6:3 | enter if_in_case | case.rb:4:5:4:24 | [match] when ... | no-match |
+| case.rb:1:1:6:3 | enter if_in_case | case.rb:4:5:4:24 | [no-match] when ... | no-match |
+| case.rb:1:1:6:3 | enter if_in_case | case.rb:4:10:4:10 | 2 | no-match |
+| case.rb:1:1:6:3 | enter if_in_case | case.rb:4:17:4:24 | self | no-match |
+| case.rb:3:5:3:42 | [match] when ... | case.rb:3:18:3:41 | if ... | match |
+| case.rb:3:5:3:42 | [match] when ... | case.rb:3:21:3:22 | self | match |
+| case.rb:3:5:3:42 | [match] when ... | case.rb:3:29:3:37 | self | match |
+| case.rb:3:5:3:42 | [no-match] when ... | case.rb:4:5:4:24 | [match] when ... | no-match |
+| case.rb:3:5:3:42 | [no-match] when ... | case.rb:4:5:4:24 | [no-match] when ... | no-match |
+| case.rb:3:5:3:42 | [no-match] when ... | case.rb:4:10:4:10 | 2 | no-match |
+| case.rb:3:5:3:42 | [no-match] when ... | case.rb:4:17:4:24 | self | no-match |
+| case.rb:3:21:3:22 | self | case.rb:3:29:3:37 | self | true |
+| case.rb:4:5:4:24 | [match] when ... | case.rb:4:17:4:24 | self | match |
+| case.rb:4:10:4:10 | 2 | case.rb:4:5:4:24 | [match] when ... | match |
+| case.rb:4:10:4:10 | 2 | case.rb:4:5:4:24 | [no-match] when ... | no-match |
+| case.rb:4:10:4:10 | 2 | case.rb:4:17:4:24 | self | match |
+| case.rb:8:1:18:3 | enter case_match | case.rb:11:5:11:15 | in ... then ... | no-match |
+| case.rb:8:1:18:3 | enter case_match | case.rb:11:15:11:15 | 3 | no-match |
+| case.rb:8:1:18:3 | enter case_match | case.rb:12:5:13:7 | in ... then ... | no-match |
+| case.rb:8:1:18:3 | enter case_match | case.rb:13:7:13:7 | 4 | no-match |
+| case.rb:8:1:18:3 | enter case_match | case.rb:14:5:14:25 | in ... then ... | no-match |
+| case.rb:8:1:18:3 | enter case_match | case.rb:14:13:14:13 | x | no-match |
+| case.rb:8:1:18:3 | enter case_match | case.rb:14:25:14:25 | 6 | no-match |
+| case.rb:8:1:18:3 | enter case_match | case.rb:15:5:15:28 | in ... then ... | no-match |
+| case.rb:8:1:18:3 | enter case_match | case.rb:15:17:15:17 | x | no-match |
+| case.rb:8:1:18:3 | enter case_match | case.rb:15:28:15:28 | 7 | no-match |
+| case.rb:8:1:18:3 | enter case_match | case.rb:16:10:16:10 | 8 | no-match |
+| case.rb:11:5:11:15 | in ... then ... | case.rb:11:15:11:15 | 3 | match |
+| case.rb:11:5:11:15 | in ... then ... | case.rb:12:5:13:7 | in ... then ... | no-match |
+| case.rb:11:5:11:15 | in ... then ... | case.rb:13:7:13:7 | 4 | no-match |
+| case.rb:11:5:11:15 | in ... then ... | case.rb:14:5:14:25 | in ... then ... | no-match |
+| case.rb:11:5:11:15 | in ... then ... | case.rb:14:13:14:13 | x | no-match |
+| case.rb:11:5:11:15 | in ... then ... | case.rb:14:25:14:25 | 6 | no-match |
+| case.rb:11:5:11:15 | in ... then ... | case.rb:15:5:15:28 | in ... then ... | no-match |
+| case.rb:11:5:11:15 | in ... then ... | case.rb:15:17:15:17 | x | no-match |
+| case.rb:11:5:11:15 | in ... then ... | case.rb:15:28:15:28 | 7 | no-match |
+| case.rb:11:5:11:15 | in ... then ... | case.rb:16:10:16:10 | 8 | no-match |
+| case.rb:12:5:13:7 | in ... then ... | case.rb:13:7:13:7 | 4 | match |
+| case.rb:12:5:13:7 | in ... then ... | case.rb:14:5:14:25 | in ... then ... | no-match |
+| case.rb:12:5:13:7 | in ... then ... | case.rb:14:13:14:13 | x | no-match |
+| case.rb:12:5:13:7 | in ... then ... | case.rb:14:25:14:25 | 6 | no-match |
+| case.rb:12:5:13:7 | in ... then ... | case.rb:15:5:15:28 | in ... then ... | no-match |
+| case.rb:12:5:13:7 | in ... then ... | case.rb:15:17:15:17 | x | no-match |
+| case.rb:12:5:13:7 | in ... then ... | case.rb:15:28:15:28 | 7 | no-match |
+| case.rb:12:5:13:7 | in ... then ... | case.rb:16:10:16:10 | 8 | no-match |
+| case.rb:14:5:14:25 | in ... then ... | case.rb:14:13:14:13 | x | match |
+| case.rb:14:5:14:25 | in ... then ... | case.rb:14:25:14:25 | 6 | match |
+| case.rb:14:5:14:25 | in ... then ... | case.rb:15:5:15:28 | in ... then ... | match |
+| case.rb:14:5:14:25 | in ... then ... | case.rb:15:17:15:17 | x | match |
+| case.rb:14:5:14:25 | in ... then ... | case.rb:15:28:15:28 | 7 | match |
+| case.rb:14:5:14:25 | in ... then ... | case.rb:16:10:16:10 | 8 | match |
+| case.rb:14:13:14:13 | x | case.rb:14:25:14:25 | 6 | true |
+| case.rb:14:13:14:13 | x | case.rb:15:5:15:28 | in ... then ... | false |
+| case.rb:14:13:14:13 | x | case.rb:15:17:15:17 | x | false |
+| case.rb:14:13:14:13 | x | case.rb:15:28:15:28 | 7 | false |
+| case.rb:14:13:14:13 | x | case.rb:16:10:16:10 | 8 | false |
+| case.rb:15:5:15:28 | in ... then ... | case.rb:15:17:15:17 | x | match |
+| case.rb:15:5:15:28 | in ... then ... | case.rb:15:28:15:28 | 7 | match |
+| case.rb:15:5:15:28 | in ... then ... | case.rb:16:10:16:10 | 8 | match |
+| case.rb:15:17:15:17 | x | case.rb:15:28:15:28 | 7 | false |
+| case.rb:15:17:15:17 | x | case.rb:16:10:16:10 | 8 | true |
+| case.rb:20:1:24:3 | enter case_match_no_match | case.rb:21:3:23:5 | case ... | match |
+| case.rb:26:1:30:3 | enter case_match_raise | case.rb:27:3:29:5 | case ... | match |
+| case.rb:32:1:39:3 | enter case_match_array | case.rb:32:1:39:3 | exit case_match_array (abnormal) | no-match |
+| case.rb:32:1:39:3 | enter case_match_array | case.rb:35:5:35:11 | in ... then ... | no-match |
+| case.rb:32:1:39:3 | enter case_match_array | case.rb:35:9:35:9 | x | no-match |
+| case.rb:32:1:39:3 | enter case_match_array | case.rb:36:5:36:13 | in ... then ... | no-match |
+| case.rb:32:1:39:3 | enter case_match_array | case.rb:36:9:36:9 | x | no-match |
+| case.rb:32:1:39:3 | enter case_match_array | case.rb:37:5:37:27 | in ... then ... | no-match |
+| case.rb:32:1:39:3 | enter case_match_array | case.rb:37:8:37:26 | [ ..., * ] | no-match |
+| case.rb:32:1:39:3 | enter case_match_array | case.rb:37:12:37:12 | a | no-match |
+| case.rb:32:1:39:3 | enter case_match_array | case.rb:37:15:37:15 | b | no-match |
+| case.rb:32:1:39:3 | enter case_match_array | case.rb:37:19:37:19 | c | no-match |
+| case.rb:32:1:39:3 | enter case_match_array | case.rb:37:25:37:25 | e | no-match |
+| case.rb:35:5:35:11 | in ... then ... | case.rb:32:1:39:3 | exit case_match_array (abnormal) | no-match |
+| case.rb:35:5:35:11 | in ... then ... | case.rb:35:9:35:9 | x | false |
+| case.rb:35:5:35:11 | in ... then ... | case.rb:35:9:35:9 | x | match |
+| case.rb:35:5:35:11 | in ... then ... | case.rb:35:9:35:9 | x | true |
+| case.rb:35:5:35:11 | in ... then ... | case.rb:36:5:36:13 | in ... then ... | no-match |
+| case.rb:35:5:35:11 | in ... then ... | case.rb:36:9:36:9 | x | no-match |
+| case.rb:35:5:35:11 | in ... then ... | case.rb:37:5:37:27 | in ... then ... | no-match |
+| case.rb:35:5:35:11 | in ... then ... | case.rb:37:8:37:26 | [ ..., * ] | no-match |
+| case.rb:35:5:35:11 | in ... then ... | case.rb:37:12:37:12 | a | no-match |
+| case.rb:35:5:35:11 | in ... then ... | case.rb:37:15:37:15 | b | no-match |
+| case.rb:35:5:35:11 | in ... then ... | case.rb:37:19:37:19 | c | no-match |
+| case.rb:35:5:35:11 | in ... then ... | case.rb:37:25:37:25 | e | no-match |
+| case.rb:36:5:36:13 | in ... then ... | case.rb:32:1:39:3 | exit case_match_array (abnormal) | no-match |
+| case.rb:36:5:36:13 | in ... then ... | case.rb:36:9:36:9 | x | false |
+| case.rb:36:5:36:13 | in ... then ... | case.rb:36:9:36:9 | x | match |
+| case.rb:36:5:36:13 | in ... then ... | case.rb:36:9:36:9 | x | true |
+| case.rb:36:5:36:13 | in ... then ... | case.rb:37:5:37:27 | in ... then ... | no-match |
+| case.rb:36:5:36:13 | in ... then ... | case.rb:37:8:37:26 | [ ..., * ] | no-match |
+| case.rb:36:5:36:13 | in ... then ... | case.rb:37:12:37:12 | a | no-match |
+| case.rb:36:5:36:13 | in ... then ... | case.rb:37:15:37:15 | b | no-match |
+| case.rb:36:5:36:13 | in ... then ... | case.rb:37:19:37:19 | c | no-match |
+| case.rb:36:5:36:13 | in ... then ... | case.rb:37:25:37:25 | e | no-match |
+| case.rb:37:5:37:27 | in ... then ... | case.rb:37:8:37:26 | [ ..., * ] | match |
+| case.rb:37:5:37:27 | in ... then ... | case.rb:37:12:37:12 | a | match |
+| case.rb:37:5:37:27 | in ... then ... | case.rb:37:15:37:15 | b | match |
+| case.rb:37:5:37:27 | in ... then ... | case.rb:37:19:37:19 | c | match |
+| case.rb:37:5:37:27 | in ... then ... | case.rb:37:25:37:25 | e | match |
+| case.rb:37:8:37:26 | [ ..., * ] | case.rb:37:12:37:12 | a | false |
+| case.rb:37:8:37:26 | [ ..., * ] | case.rb:37:12:37:12 | a | match |
+| case.rb:37:8:37:26 | [ ..., * ] | case.rb:37:12:37:12 | a | true |
+| case.rb:37:8:37:26 | [ ..., * ] | case.rb:37:15:37:15 | b | false |
+| case.rb:37:8:37:26 | [ ..., * ] | case.rb:37:15:37:15 | b | match |
+| case.rb:37:8:37:26 | [ ..., * ] | case.rb:37:15:37:15 | b | true |
+| case.rb:37:8:37:26 | [ ..., * ] | case.rb:37:19:37:19 | c | false |
+| case.rb:37:8:37:26 | [ ..., * ] | case.rb:37:19:37:19 | c | match |
+| case.rb:37:8:37:26 | [ ..., * ] | case.rb:37:19:37:19 | c | true |
+| case.rb:37:8:37:26 | [ ..., * ] | case.rb:37:25:37:25 | e | false |
+| case.rb:37:8:37:26 | [ ..., * ] | case.rb:37:25:37:25 | e | match |
+| case.rb:37:8:37:26 | [ ..., * ] | case.rb:37:25:37:25 | e | true |
+| case.rb:37:12:37:12 | a | case.rb:37:15:37:15 | b | match |
+| case.rb:37:12:37:12 | a | case.rb:37:19:37:19 | c | match |
+| case.rb:37:12:37:12 | a | case.rb:37:25:37:25 | e | match |
+| case.rb:37:15:37:15 | b | case.rb:37:19:37:19 | c | match |
+| case.rb:37:15:37:15 | b | case.rb:37:25:37:25 | e | match |
+| case.rb:37:19:37:19 | c | case.rb:37:25:37:25 | e | match |
+| case.rb:41:1:45:3 | enter case_match_find | case.rb:43:10:43:10 | x | false |
+| case.rb:41:1:45:3 | enter case_match_find | case.rb:43:10:43:10 | x | match |
+| case.rb:41:1:45:3 | enter case_match_find | case.rb:43:10:43:10 | x | true |
+| case.rb:41:1:45:3 | enter case_match_find | case.rb:43:16:43:16 | 2 | false |
+| case.rb:41:1:45:3 | enter case_match_find | case.rb:43:16:43:16 | 2 | match |
+| case.rb:41:1:45:3 | enter case_match_find | case.rb:43:16:43:16 | 2 | true |
+| case.rb:41:1:45:3 | enter case_match_find | case.rb:43:20:43:20 | y | false |
+| case.rb:41:1:45:3 | enter case_match_find | case.rb:43:20:43:20 | y | match |
+| case.rb:41:1:45:3 | enter case_match_find | case.rb:43:20:43:20 | y | true |
+| case.rb:43:10:43:10 | x | case.rb:43:16:43:16 | 2 | match |
+| case.rb:43:10:43:10 | x | case.rb:43:20:43:20 | y | match |
+| case.rb:43:16:43:16 | 2 | case.rb:43:20:43:20 | y | match |
+| case.rb:47:1:53:3 | enter case_match_hash | case.rb:49:8:49:34 | { ..., ** } | match |
+| case.rb:47:1:53:3 | enter case_match_hash | case.rb:49:20:49:20 | 1 | match |
+| case.rb:47:1:53:3 | enter case_match_hash | case.rb:49:23:49:23 | a | match |
+| case.rb:47:1:53:3 | enter case_match_hash | case.rb:49:29:49:32 | rest | match |
+| case.rb:49:8:49:34 | { ..., ** } | case.rb:49:20:49:20 | 1 | false |
+| case.rb:49:8:49:34 | { ..., ** } | case.rb:49:20:49:20 | 1 | match |
+| case.rb:49:8:49:34 | { ..., ** } | case.rb:49:20:49:20 | 1 | true |
+| case.rb:49:8:49:34 | { ..., ** } | case.rb:49:23:49:23 | a | false |
+| case.rb:49:8:49:34 | { ..., ** } | case.rb:49:23:49:23 | a | match |
+| case.rb:49:8:49:34 | { ..., ** } | case.rb:49:23:49:23 | a | true |
+| case.rb:49:8:49:34 | { ..., ** } | case.rb:49:29:49:32 | rest | false |
+| case.rb:49:8:49:34 | { ..., ** } | case.rb:49:29:49:32 | rest | match |
+| case.rb:49:8:49:34 | { ..., ** } | case.rb:49:29:49:32 | rest | true |
+| case.rb:49:20:49:20 | 1 | case.rb:49:23:49:23 | a | match |
+| case.rb:49:20:49:20 | 1 | case.rb:49:29:49:32 | rest | match |
+| case.rb:49:23:49:23 | a | case.rb:49:29:49:32 | rest | match |
+| case.rb:50:5:50:25 | in ... then ... | case.rb:50:8:50:24 | { ..., ** } | match |
+| case.rb:50:5:50:25 | in ... then ... | case.rb:50:16:50:16 | 1 | match |
+| case.rb:50:8:50:24 | { ..., ** } | case.rb:50:16:50:16 | 1 | false |
+| case.rb:50:8:50:24 | { ..., ** } | case.rb:50:16:50:16 | 1 | match |
+| case.rb:50:8:50:24 | { ..., ** } | case.rb:50:16:50:16 | 1 | true |
+| case.rb:51:5:51:17 | in ... then ... | case.rb:51:8:51:16 | { ..., ** } | match |
+| case.rb:55:1:61:3 | enter case_match_variable | case.rb:58:5:58:10 | in ... then ... | no-match |
+| case.rb:63:1:67:3 | enter case_match_underscore | case.rb:65:12:65:12 | _ | no-match |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:69:1:93:3 | exit case_match_various (abnormal) | no-match |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:74:5:74:11 | in ... then ... | no-match |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:75:5:75:15 | in ... then ... | no-match |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:76:5:76:18 | in ... then ... | no-match |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:77:5:77:18 | in ... then ... | no-match |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:78:5:78:19 | in ... then ... | no-match |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:79:5:79:14 | in ... then ... | no-match |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:80:5:80:12 | in ... then ... | no-match |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:81:5:81:11 | in ... then ... | no-match |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:82:5:82:20 | in ... then ... | no-match |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:82:13:82:13 | x | no-match |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:82:20:82:20 | 1 | no-match |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:83:5:83:26 | in ... then ... | no-match |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:83:12:83:15 | ^... | no-match |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:83:20:83:25 | string | no-match |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:84:5:84:17 | in ... then ... | no-match |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:85:5:85:23 | in ... then ... | no-match |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:86:5:86:11 | in ... then ... | no-match |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:87:5:87:17 | in ... then ... | no-match |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:88:5:88:15 | in ... then ... | no-match |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:88:14:88:15 | 10 | no-match |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:89:5:89:69 | in ... then ... | no-match |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:89:14:89:17 | self | no-match |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:89:21:89:24 | true | no-match |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:89:28:89:32 | false | no-match |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:89:36:89:43 | __LINE__ | no-match |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:89:47:89:54 | __FILE__ | no-match |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:89:58:89:69 | __ENCODING__ | no-match |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:90:5:90:13 | in ... then ... | no-match |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:91:5:91:25 | in ... then ... | no-match |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:91:13:91:14 | "" | no-match |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:91:18:91:19 | [ ..., * ] | no-match |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:91:23:91:24 | { ..., ** } | no-match |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:69:1:93:3 | exit case_match_various (abnormal) | no-match |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:75:5:75:15 | in ... then ... | no-match |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:76:5:76:18 | in ... then ... | no-match |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:77:5:77:18 | in ... then ... | no-match |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:78:5:78:19 | in ... then ... | no-match |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:79:5:79:14 | in ... then ... | no-match |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:80:5:80:12 | in ... then ... | no-match |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:81:5:81:11 | in ... then ... | no-match |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:82:5:82:20 | in ... then ... | no-match |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:82:13:82:13 | x | no-match |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:82:20:82:20 | 1 | no-match |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:83:5:83:26 | in ... then ... | no-match |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:83:12:83:15 | ^... | no-match |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:83:20:83:25 | string | no-match |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:84:5:84:17 | in ... then ... | no-match |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:85:5:85:23 | in ... then ... | no-match |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:86:5:86:11 | in ... then ... | no-match |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:87:5:87:17 | in ... then ... | no-match |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:88:5:88:15 | in ... then ... | no-match |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:88:14:88:15 | 10 | no-match |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:89:5:89:69 | in ... then ... | no-match |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:89:14:89:17 | self | no-match |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:89:21:89:24 | true | no-match |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:89:28:89:32 | false | no-match |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:89:36:89:43 | __LINE__ | no-match |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:89:47:89:54 | __FILE__ | no-match |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:89:58:89:69 | __ENCODING__ | no-match |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:90:5:90:13 | in ... then ... | no-match |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:91:5:91:25 | in ... then ... | no-match |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:91:13:91:14 | "" | no-match |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:91:18:91:19 | [ ..., * ] | no-match |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:91:23:91:24 | { ..., ** } | no-match |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:69:1:93:3 | exit case_match_various (abnormal) | no-match |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:76:5:76:18 | in ... then ... | no-match |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:77:5:77:18 | in ... then ... | no-match |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:78:5:78:19 | in ... then ... | no-match |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:79:5:79:14 | in ... then ... | no-match |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:80:5:80:12 | in ... then ... | no-match |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:81:5:81:11 | in ... then ... | no-match |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:82:5:82:20 | in ... then ... | no-match |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:82:13:82:13 | x | no-match |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:82:20:82:20 | 1 | no-match |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:83:5:83:26 | in ... then ... | no-match |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:83:12:83:15 | ^... | no-match |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:83:20:83:25 | string | no-match |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:84:5:84:17 | in ... then ... | no-match |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:85:5:85:23 | in ... then ... | no-match |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:86:5:86:11 | in ... then ... | no-match |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:87:5:87:17 | in ... then ... | no-match |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:88:5:88:15 | in ... then ... | no-match |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:88:14:88:15 | 10 | no-match |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:89:5:89:69 | in ... then ... | no-match |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:89:14:89:17 | self | no-match |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:89:21:89:24 | true | no-match |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:89:28:89:32 | false | no-match |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:89:36:89:43 | __LINE__ | no-match |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:89:47:89:54 | __FILE__ | no-match |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:89:58:89:69 | __ENCODING__ | no-match |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:90:5:90:13 | in ... then ... | no-match |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:91:5:91:25 | in ... then ... | no-match |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:91:13:91:14 | "" | no-match |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:91:18:91:19 | [ ..., * ] | no-match |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:91:23:91:24 | { ..., ** } | no-match |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:69:1:93:3 | exit case_match_various (abnormal) | no-match |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:77:5:77:18 | in ... then ... | no-match |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:78:5:78:19 | in ... then ... | no-match |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:79:5:79:14 | in ... then ... | no-match |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:80:5:80:12 | in ... then ... | no-match |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:81:5:81:11 | in ... then ... | no-match |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:82:5:82:20 | in ... then ... | no-match |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:82:13:82:13 | x | no-match |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:82:20:82:20 | 1 | no-match |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:83:5:83:26 | in ... then ... | no-match |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:83:12:83:15 | ^... | no-match |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:83:20:83:25 | string | no-match |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:84:5:84:17 | in ... then ... | no-match |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:85:5:85:23 | in ... then ... | no-match |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:86:5:86:11 | in ... then ... | no-match |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:87:5:87:17 | in ... then ... | no-match |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:88:5:88:15 | in ... then ... | no-match |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:88:14:88:15 | 10 | no-match |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:89:5:89:69 | in ... then ... | no-match |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:89:14:89:17 | self | no-match |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:89:21:89:24 | true | no-match |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:89:28:89:32 | false | no-match |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:89:36:89:43 | __LINE__ | no-match |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:89:47:89:54 | __FILE__ | no-match |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:89:58:89:69 | __ENCODING__ | no-match |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:90:5:90:13 | in ... then ... | no-match |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:91:5:91:25 | in ... then ... | no-match |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:91:13:91:14 | "" | no-match |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:91:18:91:19 | [ ..., * ] | no-match |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:91:23:91:24 | { ..., ** } | no-match |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:69:1:93:3 | exit case_match_various (abnormal) | no-match |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:78:5:78:19 | in ... then ... | no-match |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:79:5:79:14 | in ... then ... | no-match |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:80:5:80:12 | in ... then ... | no-match |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:81:5:81:11 | in ... then ... | no-match |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:82:5:82:20 | in ... then ... | no-match |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:82:13:82:13 | x | no-match |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:82:20:82:20 | 1 | no-match |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:83:5:83:26 | in ... then ... | no-match |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:83:12:83:15 | ^... | no-match |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:83:20:83:25 | string | no-match |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:84:5:84:17 | in ... then ... | no-match |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:85:5:85:23 | in ... then ... | no-match |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:86:5:86:11 | in ... then ... | no-match |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:87:5:87:17 | in ... then ... | no-match |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:88:5:88:15 | in ... then ... | no-match |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:88:14:88:15 | 10 | no-match |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:89:5:89:69 | in ... then ... | no-match |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:89:14:89:17 | self | no-match |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:89:21:89:24 | true | no-match |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:89:28:89:32 | false | no-match |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:89:36:89:43 | __LINE__ | no-match |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:89:47:89:54 | __FILE__ | no-match |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:89:58:89:69 | __ENCODING__ | no-match |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:90:5:90:13 | in ... then ... | no-match |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:91:5:91:25 | in ... then ... | no-match |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:91:13:91:14 | "" | no-match |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:91:18:91:19 | [ ..., * ] | no-match |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:91:23:91:24 | { ..., ** } | no-match |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:69:1:93:3 | exit case_match_various (abnormal) | no-match |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:79:5:79:14 | in ... then ... | no-match |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:80:5:80:12 | in ... then ... | no-match |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:81:5:81:11 | in ... then ... | no-match |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:82:5:82:20 | in ... then ... | no-match |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:82:13:82:13 | x | no-match |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:82:20:82:20 | 1 | no-match |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:83:5:83:26 | in ... then ... | no-match |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:83:12:83:15 | ^... | no-match |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:83:20:83:25 | string | no-match |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:84:5:84:17 | in ... then ... | no-match |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:85:5:85:23 | in ... then ... | no-match |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:86:5:86:11 | in ... then ... | no-match |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:87:5:87:17 | in ... then ... | no-match |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:88:5:88:15 | in ... then ... | no-match |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:88:14:88:15 | 10 | no-match |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:89:5:89:69 | in ... then ... | no-match |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:89:14:89:17 | self | no-match |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:89:21:89:24 | true | no-match |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:89:28:89:32 | false | no-match |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:89:36:89:43 | __LINE__ | no-match |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:89:47:89:54 | __FILE__ | no-match |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:89:58:89:69 | __ENCODING__ | no-match |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:90:5:90:13 | in ... then ... | no-match |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:91:5:91:25 | in ... then ... | no-match |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:91:13:91:14 | "" | no-match |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:91:18:91:19 | [ ..., * ] | no-match |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:91:23:91:24 | { ..., ** } | no-match |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:69:1:93:3 | exit case_match_various (abnormal) | no-match |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:80:5:80:12 | in ... then ... | no-match |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:81:5:81:11 | in ... then ... | no-match |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:82:5:82:20 | in ... then ... | no-match |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:82:13:82:13 | x | no-match |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:82:20:82:20 | 1 | no-match |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:83:5:83:26 | in ... then ... | no-match |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:83:12:83:15 | ^... | no-match |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:83:20:83:25 | string | no-match |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:84:5:84:17 | in ... then ... | no-match |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:85:5:85:23 | in ... then ... | no-match |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:86:5:86:11 | in ... then ... | no-match |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:87:5:87:17 | in ... then ... | no-match |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:88:5:88:15 | in ... then ... | no-match |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:88:14:88:15 | 10 | no-match |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:89:5:89:69 | in ... then ... | no-match |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:89:14:89:17 | self | no-match |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:89:21:89:24 | true | no-match |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:89:28:89:32 | false | no-match |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:89:36:89:43 | __LINE__ | no-match |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:89:47:89:54 | __FILE__ | no-match |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:89:58:89:69 | __ENCODING__ | no-match |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:90:5:90:13 | in ... then ... | no-match |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:91:5:91:25 | in ... then ... | no-match |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:91:13:91:14 | "" | no-match |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:91:18:91:19 | [ ..., * ] | no-match |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:91:23:91:24 | { ..., ** } | no-match |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:69:1:93:3 | exit case_match_various (abnormal) | no-match |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:81:5:81:11 | in ... then ... | no-match |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:82:5:82:20 | in ... then ... | no-match |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:82:13:82:13 | x | no-match |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:82:20:82:20 | 1 | no-match |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:83:5:83:26 | in ... then ... | no-match |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:83:12:83:15 | ^... | no-match |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:83:20:83:25 | string | no-match |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:84:5:84:17 | in ... then ... | no-match |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:85:5:85:23 | in ... then ... | no-match |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:86:5:86:11 | in ... then ... | no-match |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:87:5:87:17 | in ... then ... | no-match |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:88:5:88:15 | in ... then ... | no-match |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:88:14:88:15 | 10 | no-match |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:89:5:89:69 | in ... then ... | no-match |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:89:14:89:17 | self | no-match |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:89:21:89:24 | true | no-match |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:89:28:89:32 | false | no-match |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:89:36:89:43 | __LINE__ | no-match |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:89:47:89:54 | __FILE__ | no-match |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:89:58:89:69 | __ENCODING__ | no-match |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:90:5:90:13 | in ... then ... | no-match |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:91:5:91:25 | in ... then ... | no-match |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:91:13:91:14 | "" | no-match |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:91:18:91:19 | [ ..., * ] | no-match |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:91:23:91:24 | { ..., ** } | no-match |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:69:1:93:3 | exit case_match_various (abnormal) | no-match |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:82:5:82:20 | in ... then ... | no-match |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:82:13:82:13 | x | no-match |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:82:20:82:20 | 1 | no-match |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:83:5:83:26 | in ... then ... | no-match |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:83:12:83:15 | ^... | no-match |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:83:20:83:25 | string | no-match |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:84:5:84:17 | in ... then ... | no-match |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:85:5:85:23 | in ... then ... | no-match |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:86:5:86:11 | in ... then ... | no-match |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:87:5:87:17 | in ... then ... | no-match |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:88:5:88:15 | in ... then ... | no-match |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:88:14:88:15 | 10 | no-match |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:89:5:89:69 | in ... then ... | no-match |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:89:14:89:17 | self | no-match |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:89:21:89:24 | true | no-match |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:89:28:89:32 | false | no-match |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:89:36:89:43 | __LINE__ | no-match |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:89:47:89:54 | __FILE__ | no-match |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:89:58:89:69 | __ENCODING__ | no-match |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:90:5:90:13 | in ... then ... | no-match |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:91:5:91:25 | in ... then ... | no-match |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:91:13:91:14 | "" | no-match |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:91:18:91:19 | [ ..., * ] | no-match |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:91:23:91:24 | { ..., ** } | no-match |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:69:1:93:3 | exit case_match_various (abnormal) | no-match |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:82:13:82:13 | x | match |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:82:20:82:20 | 1 | match |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:83:5:83:26 | in ... then ... | no-match |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:83:12:83:15 | ^... | no-match |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:83:20:83:25 | string | no-match |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:84:5:84:17 | in ... then ... | no-match |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:85:5:85:23 | in ... then ... | no-match |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:86:5:86:11 | in ... then ... | no-match |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:87:5:87:17 | in ... then ... | no-match |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:88:5:88:15 | in ... then ... | no-match |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:88:14:88:15 | 10 | no-match |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:89:5:89:69 | in ... then ... | no-match |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:89:14:89:17 | self | no-match |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:89:21:89:24 | true | no-match |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:89:28:89:32 | false | no-match |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:89:36:89:43 | __LINE__ | no-match |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:89:47:89:54 | __FILE__ | no-match |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:89:58:89:69 | __ENCODING__ | no-match |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:90:5:90:13 | in ... then ... | no-match |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:91:5:91:25 | in ... then ... | no-match |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:91:13:91:14 | "" | no-match |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:91:18:91:19 | [ ..., * ] | no-match |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:91:23:91:24 | { ..., ** } | no-match |
+| case.rb:82:13:82:13 | x | case.rb:82:20:82:20 | 1 | match |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:69:1:93:3 | exit case_match_various (abnormal) | no-match |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:83:12:83:15 | ^... | no-match |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:83:20:83:25 | string | no-match |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:84:5:84:17 | in ... then ... | no-match |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:85:5:85:23 | in ... then ... | no-match |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:86:5:86:11 | in ... then ... | no-match |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:87:5:87:17 | in ... then ... | no-match |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:88:5:88:15 | in ... then ... | no-match |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:88:14:88:15 | 10 | no-match |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:89:5:89:69 | in ... then ... | no-match |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:89:14:89:17 | self | no-match |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:89:21:89:24 | true | no-match |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:89:28:89:32 | false | no-match |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:89:36:89:43 | __LINE__ | no-match |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:89:47:89:54 | __FILE__ | no-match |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:89:58:89:69 | __ENCODING__ | no-match |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:90:5:90:13 | in ... then ... | no-match |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:91:5:91:25 | in ... then ... | no-match |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:91:13:91:14 | "" | no-match |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:91:18:91:19 | [ ..., * ] | no-match |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:91:23:91:24 | { ..., ** } | no-match |
+| case.rb:83:12:83:15 | ^... | case.rb:69:1:93:3 | exit case_match_various (abnormal) | no-match |
+| case.rb:83:12:83:15 | ^... | case.rb:83:20:83:25 | string | no-match |
+| case.rb:83:12:83:15 | ^... | case.rb:84:5:84:17 | in ... then ... | no-match |
+| case.rb:83:12:83:15 | ^... | case.rb:85:5:85:23 | in ... then ... | no-match |
+| case.rb:83:12:83:15 | ^... | case.rb:86:5:86:11 | in ... then ... | no-match |
+| case.rb:83:12:83:15 | ^... | case.rb:87:5:87:17 | in ... then ... | no-match |
+| case.rb:83:12:83:15 | ^... | case.rb:88:5:88:15 | in ... then ... | no-match |
+| case.rb:83:12:83:15 | ^... | case.rb:88:14:88:15 | 10 | no-match |
+| case.rb:83:12:83:15 | ^... | case.rb:89:5:89:69 | in ... then ... | no-match |
+| case.rb:83:12:83:15 | ^... | case.rb:89:14:89:17 | self | no-match |
+| case.rb:83:12:83:15 | ^... | case.rb:89:21:89:24 | true | no-match |
+| case.rb:83:12:83:15 | ^... | case.rb:89:28:89:32 | false | no-match |
+| case.rb:83:12:83:15 | ^... | case.rb:89:36:89:43 | __LINE__ | no-match |
+| case.rb:83:12:83:15 | ^... | case.rb:89:47:89:54 | __FILE__ | no-match |
+| case.rb:83:12:83:15 | ^... | case.rb:89:58:89:69 | __ENCODING__ | no-match |
+| case.rb:83:12:83:15 | ^... | case.rb:90:5:90:13 | in ... then ... | no-match |
+| case.rb:83:12:83:15 | ^... | case.rb:91:5:91:25 | in ... then ... | no-match |
+| case.rb:83:12:83:15 | ^... | case.rb:91:13:91:14 | "" | no-match |
+| case.rb:83:12:83:15 | ^... | case.rb:91:18:91:19 | [ ..., * ] | no-match |
+| case.rb:83:12:83:15 | ^... | case.rb:91:23:91:24 | { ..., ** } | no-match |
+| case.rb:83:20:83:25 | string | case.rb:69:1:93:3 | exit case_match_various (abnormal) | no-match |
+| case.rb:83:20:83:25 | string | case.rb:84:5:84:17 | in ... then ... | no-match |
+| case.rb:83:20:83:25 | string | case.rb:85:5:85:23 | in ... then ... | no-match |
+| case.rb:83:20:83:25 | string | case.rb:86:5:86:11 | in ... then ... | no-match |
+| case.rb:83:20:83:25 | string | case.rb:87:5:87:17 | in ... then ... | no-match |
+| case.rb:83:20:83:25 | string | case.rb:88:5:88:15 | in ... then ... | no-match |
+| case.rb:83:20:83:25 | string | case.rb:88:14:88:15 | 10 | no-match |
+| case.rb:83:20:83:25 | string | case.rb:89:5:89:69 | in ... then ... | no-match |
+| case.rb:83:20:83:25 | string | case.rb:89:14:89:17 | self | no-match |
+| case.rb:83:20:83:25 | string | case.rb:89:21:89:24 | true | no-match |
+| case.rb:83:20:83:25 | string | case.rb:89:28:89:32 | false | no-match |
+| case.rb:83:20:83:25 | string | case.rb:89:36:89:43 | __LINE__ | no-match |
+| case.rb:83:20:83:25 | string | case.rb:89:47:89:54 | __FILE__ | no-match |
+| case.rb:83:20:83:25 | string | case.rb:89:58:89:69 | __ENCODING__ | no-match |
+| case.rb:83:20:83:25 | string | case.rb:90:5:90:13 | in ... then ... | no-match |
+| case.rb:83:20:83:25 | string | case.rb:91:5:91:25 | in ... then ... | no-match |
+| case.rb:83:20:83:25 | string | case.rb:91:13:91:14 | "" | no-match |
+| case.rb:83:20:83:25 | string | case.rb:91:18:91:19 | [ ..., * ] | no-match |
+| case.rb:83:20:83:25 | string | case.rb:91:23:91:24 | { ..., ** } | no-match |
+| case.rb:84:5:84:17 | in ... then ... | case.rb:69:1:93:3 | exit case_match_various (abnormal) | no-match |
+| case.rb:84:5:84:17 | in ... then ... | case.rb:85:5:85:23 | in ... then ... | no-match |
+| case.rb:84:5:84:17 | in ... then ... | case.rb:86:5:86:11 | in ... then ... | no-match |
+| case.rb:84:5:84:17 | in ... then ... | case.rb:87:5:87:17 | in ... then ... | no-match |
+| case.rb:84:5:84:17 | in ... then ... | case.rb:88:5:88:15 | in ... then ... | no-match |
+| case.rb:84:5:84:17 | in ... then ... | case.rb:88:14:88:15 | 10 | no-match |
+| case.rb:84:5:84:17 | in ... then ... | case.rb:89:5:89:69 | in ... then ... | no-match |
+| case.rb:84:5:84:17 | in ... then ... | case.rb:89:14:89:17 | self | no-match |
+| case.rb:84:5:84:17 | in ... then ... | case.rb:89:21:89:24 | true | no-match |
+| case.rb:84:5:84:17 | in ... then ... | case.rb:89:28:89:32 | false | no-match |
+| case.rb:84:5:84:17 | in ... then ... | case.rb:89:36:89:43 | __LINE__ | no-match |
+| case.rb:84:5:84:17 | in ... then ... | case.rb:89:47:89:54 | __FILE__ | no-match |
+| case.rb:84:5:84:17 | in ... then ... | case.rb:89:58:89:69 | __ENCODING__ | no-match |
+| case.rb:84:5:84:17 | in ... then ... | case.rb:90:5:90:13 | in ... then ... | no-match |
+| case.rb:84:5:84:17 | in ... then ... | case.rb:91:5:91:25 | in ... then ... | no-match |
+| case.rb:84:5:84:17 | in ... then ... | case.rb:91:13:91:14 | "" | no-match |
+| case.rb:84:5:84:17 | in ... then ... | case.rb:91:18:91:19 | [ ..., * ] | no-match |
+| case.rb:84:5:84:17 | in ... then ... | case.rb:91:23:91:24 | { ..., ** } | no-match |
+| case.rb:85:5:85:23 | in ... then ... | case.rb:69:1:93:3 | exit case_match_various (abnormal) | no-match |
+| case.rb:85:5:85:23 | in ... then ... | case.rb:86:5:86:11 | in ... then ... | no-match |
+| case.rb:85:5:85:23 | in ... then ... | case.rb:87:5:87:17 | in ... then ... | no-match |
+| case.rb:85:5:85:23 | in ... then ... | case.rb:88:5:88:15 | in ... then ... | no-match |
+| case.rb:85:5:85:23 | in ... then ... | case.rb:88:14:88:15 | 10 | no-match |
+| case.rb:85:5:85:23 | in ... then ... | case.rb:89:5:89:69 | in ... then ... | no-match |
+| case.rb:85:5:85:23 | in ... then ... | case.rb:89:14:89:17 | self | no-match |
+| case.rb:85:5:85:23 | in ... then ... | case.rb:89:21:89:24 | true | no-match |
+| case.rb:85:5:85:23 | in ... then ... | case.rb:89:28:89:32 | false | no-match |
+| case.rb:85:5:85:23 | in ... then ... | case.rb:89:36:89:43 | __LINE__ | no-match |
+| case.rb:85:5:85:23 | in ... then ... | case.rb:89:47:89:54 | __FILE__ | no-match |
+| case.rb:85:5:85:23 | in ... then ... | case.rb:89:58:89:69 | __ENCODING__ | no-match |
+| case.rb:85:5:85:23 | in ... then ... | case.rb:90:5:90:13 | in ... then ... | no-match |
+| case.rb:85:5:85:23 | in ... then ... | case.rb:91:5:91:25 | in ... then ... | no-match |
+| case.rb:85:5:85:23 | in ... then ... | case.rb:91:13:91:14 | "" | no-match |
+| case.rb:85:5:85:23 | in ... then ... | case.rb:91:18:91:19 | [ ..., * ] | no-match |
+| case.rb:85:5:85:23 | in ... then ... | case.rb:91:23:91:24 | { ..., ** } | no-match |
+| case.rb:86:5:86:11 | in ... then ... | case.rb:69:1:93:3 | exit case_match_various (abnormal) | no-match |
+| case.rb:86:5:86:11 | in ... then ... | case.rb:87:5:87:17 | in ... then ... | no-match |
+| case.rb:86:5:86:11 | in ... then ... | case.rb:88:5:88:15 | in ... then ... | no-match |
+| case.rb:86:5:86:11 | in ... then ... | case.rb:88:14:88:15 | 10 | no-match |
+| case.rb:86:5:86:11 | in ... then ... | case.rb:89:5:89:69 | in ... then ... | no-match |
+| case.rb:86:5:86:11 | in ... then ... | case.rb:89:14:89:17 | self | no-match |
+| case.rb:86:5:86:11 | in ... then ... | case.rb:89:21:89:24 | true | no-match |
+| case.rb:86:5:86:11 | in ... then ... | case.rb:89:28:89:32 | false | no-match |
+| case.rb:86:5:86:11 | in ... then ... | case.rb:89:36:89:43 | __LINE__ | no-match |
+| case.rb:86:5:86:11 | in ... then ... | case.rb:89:47:89:54 | __FILE__ | no-match |
+| case.rb:86:5:86:11 | in ... then ... | case.rb:89:58:89:69 | __ENCODING__ | no-match |
+| case.rb:86:5:86:11 | in ... then ... | case.rb:90:5:90:13 | in ... then ... | no-match |
+| case.rb:86:5:86:11 | in ... then ... | case.rb:91:5:91:25 | in ... then ... | no-match |
+| case.rb:86:5:86:11 | in ... then ... | case.rb:91:13:91:14 | "" | no-match |
+| case.rb:86:5:86:11 | in ... then ... | case.rb:91:18:91:19 | [ ..., * ] | no-match |
+| case.rb:86:5:86:11 | in ... then ... | case.rb:91:23:91:24 | { ..., ** } | no-match |
+| case.rb:87:5:87:17 | in ... then ... | case.rb:69:1:93:3 | exit case_match_various (abnormal) | no-match |
+| case.rb:87:5:87:17 | in ... then ... | case.rb:88:5:88:15 | in ... then ... | no-match |
+| case.rb:87:5:87:17 | in ... then ... | case.rb:88:14:88:15 | 10 | no-match |
+| case.rb:87:5:87:17 | in ... then ... | case.rb:89:5:89:69 | in ... then ... | no-match |
+| case.rb:87:5:87:17 | in ... then ... | case.rb:89:14:89:17 | self | no-match |
+| case.rb:87:5:87:17 | in ... then ... | case.rb:89:21:89:24 | true | no-match |
+| case.rb:87:5:87:17 | in ... then ... | case.rb:89:28:89:32 | false | no-match |
+| case.rb:87:5:87:17 | in ... then ... | case.rb:89:36:89:43 | __LINE__ | no-match |
+| case.rb:87:5:87:17 | in ... then ... | case.rb:89:47:89:54 | __FILE__ | no-match |
+| case.rb:87:5:87:17 | in ... then ... | case.rb:89:58:89:69 | __ENCODING__ | no-match |
+| case.rb:87:5:87:17 | in ... then ... | case.rb:90:5:90:13 | in ... then ... | no-match |
+| case.rb:87:5:87:17 | in ... then ... | case.rb:91:5:91:25 | in ... then ... | no-match |
+| case.rb:87:5:87:17 | in ... then ... | case.rb:91:13:91:14 | "" | no-match |
+| case.rb:87:5:87:17 | in ... then ... | case.rb:91:18:91:19 | [ ..., * ] | no-match |
+| case.rb:87:5:87:17 | in ... then ... | case.rb:91:23:91:24 | { ..., ** } | no-match |
+| case.rb:88:5:88:15 | in ... then ... | case.rb:69:1:93:3 | exit case_match_various (abnormal) | no-match |
+| case.rb:88:5:88:15 | in ... then ... | case.rb:88:14:88:15 | 10 | no-match |
+| case.rb:88:5:88:15 | in ... then ... | case.rb:89:5:89:69 | in ... then ... | no-match |
+| case.rb:88:5:88:15 | in ... then ... | case.rb:89:14:89:17 | self | no-match |
+| case.rb:88:5:88:15 | in ... then ... | case.rb:89:21:89:24 | true | no-match |
+| case.rb:88:5:88:15 | in ... then ... | case.rb:89:28:89:32 | false | no-match |
+| case.rb:88:5:88:15 | in ... then ... | case.rb:89:36:89:43 | __LINE__ | no-match |
+| case.rb:88:5:88:15 | in ... then ... | case.rb:89:47:89:54 | __FILE__ | no-match |
+| case.rb:88:5:88:15 | in ... then ... | case.rb:89:58:89:69 | __ENCODING__ | no-match |
+| case.rb:88:5:88:15 | in ... then ... | case.rb:90:5:90:13 | in ... then ... | no-match |
+| case.rb:88:5:88:15 | in ... then ... | case.rb:91:5:91:25 | in ... then ... | no-match |
+| case.rb:88:5:88:15 | in ... then ... | case.rb:91:13:91:14 | "" | no-match |
+| case.rb:88:5:88:15 | in ... then ... | case.rb:91:18:91:19 | [ ..., * ] | no-match |
+| case.rb:88:5:88:15 | in ... then ... | case.rb:91:23:91:24 | { ..., ** } | no-match |
+| case.rb:88:14:88:15 | 10 | case.rb:69:1:93:3 | exit case_match_various (abnormal) | no-match |
+| case.rb:88:14:88:15 | 10 | case.rb:89:5:89:69 | in ... then ... | no-match |
+| case.rb:88:14:88:15 | 10 | case.rb:89:14:89:17 | self | no-match |
+| case.rb:88:14:88:15 | 10 | case.rb:89:21:89:24 | true | no-match |
+| case.rb:88:14:88:15 | 10 | case.rb:89:28:89:32 | false | no-match |
+| case.rb:88:14:88:15 | 10 | case.rb:89:36:89:43 | __LINE__ | no-match |
+| case.rb:88:14:88:15 | 10 | case.rb:89:47:89:54 | __FILE__ | no-match |
+| case.rb:88:14:88:15 | 10 | case.rb:89:58:89:69 | __ENCODING__ | no-match |
+| case.rb:88:14:88:15 | 10 | case.rb:90:5:90:13 | in ... then ... | no-match |
+| case.rb:88:14:88:15 | 10 | case.rb:91:5:91:25 | in ... then ... | no-match |
+| case.rb:88:14:88:15 | 10 | case.rb:91:13:91:14 | "" | no-match |
+| case.rb:88:14:88:15 | 10 | case.rb:91:18:91:19 | [ ..., * ] | no-match |
+| case.rb:88:14:88:15 | 10 | case.rb:91:23:91:24 | { ..., ** } | no-match |
+| case.rb:89:5:89:69 | in ... then ... | case.rb:69:1:93:3 | exit case_match_various (abnormal) | no-match |
+| case.rb:89:5:89:69 | in ... then ... | case.rb:89:14:89:17 | self | no-match |
+| case.rb:89:5:89:69 | in ... then ... | case.rb:89:21:89:24 | true | no-match |
+| case.rb:89:5:89:69 | in ... then ... | case.rb:89:28:89:32 | false | no-match |
+| case.rb:89:5:89:69 | in ... then ... | case.rb:89:36:89:43 | __LINE__ | no-match |
+| case.rb:89:5:89:69 | in ... then ... | case.rb:89:47:89:54 | __FILE__ | no-match |
+| case.rb:89:5:89:69 | in ... then ... | case.rb:89:58:89:69 | __ENCODING__ | no-match |
+| case.rb:89:5:89:69 | in ... then ... | case.rb:90:5:90:13 | in ... then ... | no-match |
+| case.rb:89:5:89:69 | in ... then ... | case.rb:91:5:91:25 | in ... then ... | no-match |
+| case.rb:89:5:89:69 | in ... then ... | case.rb:91:13:91:14 | "" | no-match |
+| case.rb:89:5:89:69 | in ... then ... | case.rb:91:18:91:19 | [ ..., * ] | no-match |
+| case.rb:89:5:89:69 | in ... then ... | case.rb:91:23:91:24 | { ..., ** } | no-match |
+| case.rb:89:14:89:17 | self | case.rb:69:1:93:3 | exit case_match_various (abnormal) | no-match |
+| case.rb:89:14:89:17 | self | case.rb:89:21:89:24 | true | no-match |
+| case.rb:89:14:89:17 | self | case.rb:89:28:89:32 | false | no-match |
+| case.rb:89:14:89:17 | self | case.rb:89:36:89:43 | __LINE__ | no-match |
+| case.rb:89:14:89:17 | self | case.rb:89:47:89:54 | __FILE__ | no-match |
+| case.rb:89:14:89:17 | self | case.rb:89:58:89:69 | __ENCODING__ | no-match |
+| case.rb:89:14:89:17 | self | case.rb:90:5:90:13 | in ... then ... | no-match |
+| case.rb:89:14:89:17 | self | case.rb:91:5:91:25 | in ... then ... | no-match |
+| case.rb:89:14:89:17 | self | case.rb:91:13:91:14 | "" | no-match |
+| case.rb:89:14:89:17 | self | case.rb:91:18:91:19 | [ ..., * ] | no-match |
+| case.rb:89:14:89:17 | self | case.rb:91:23:91:24 | { ..., ** } | no-match |
+| case.rb:89:21:89:24 | true | case.rb:69:1:93:3 | exit case_match_various (abnormal) | no-match |
+| case.rb:89:21:89:24 | true | case.rb:89:28:89:32 | false | no-match |
+| case.rb:89:21:89:24 | true | case.rb:89:36:89:43 | __LINE__ | no-match |
+| case.rb:89:21:89:24 | true | case.rb:89:47:89:54 | __FILE__ | no-match |
+| case.rb:89:21:89:24 | true | case.rb:89:58:89:69 | __ENCODING__ | no-match |
+| case.rb:89:21:89:24 | true | case.rb:90:5:90:13 | in ... then ... | no-match |
+| case.rb:89:21:89:24 | true | case.rb:91:5:91:25 | in ... then ... | no-match |
+| case.rb:89:21:89:24 | true | case.rb:91:13:91:14 | "" | no-match |
+| case.rb:89:21:89:24 | true | case.rb:91:18:91:19 | [ ..., * ] | no-match |
+| case.rb:89:21:89:24 | true | case.rb:91:23:91:24 | { ..., ** } | no-match |
+| case.rb:89:28:89:32 | false | case.rb:69:1:93:3 | exit case_match_various (abnormal) | no-match |
+| case.rb:89:28:89:32 | false | case.rb:89:36:89:43 | __LINE__ | no-match |
+| case.rb:89:28:89:32 | false | case.rb:89:47:89:54 | __FILE__ | no-match |
+| case.rb:89:28:89:32 | false | case.rb:89:58:89:69 | __ENCODING__ | no-match |
+| case.rb:89:28:89:32 | false | case.rb:90:5:90:13 | in ... then ... | no-match |
+| case.rb:89:28:89:32 | false | case.rb:91:5:91:25 | in ... then ... | no-match |
+| case.rb:89:28:89:32 | false | case.rb:91:13:91:14 | "" | no-match |
+| case.rb:89:28:89:32 | false | case.rb:91:18:91:19 | [ ..., * ] | no-match |
+| case.rb:89:28:89:32 | false | case.rb:91:23:91:24 | { ..., ** } | no-match |
+| case.rb:89:36:89:43 | __LINE__ | case.rb:69:1:93:3 | exit case_match_various (abnormal) | no-match |
+| case.rb:89:36:89:43 | __LINE__ | case.rb:89:47:89:54 | __FILE__ | no-match |
+| case.rb:89:36:89:43 | __LINE__ | case.rb:89:58:89:69 | __ENCODING__ | no-match |
+| case.rb:89:36:89:43 | __LINE__ | case.rb:90:5:90:13 | in ... then ... | no-match |
+| case.rb:89:36:89:43 | __LINE__ | case.rb:91:5:91:25 | in ... then ... | no-match |
+| case.rb:89:36:89:43 | __LINE__ | case.rb:91:13:91:14 | "" | no-match |
+| case.rb:89:36:89:43 | __LINE__ | case.rb:91:18:91:19 | [ ..., * ] | no-match |
+| case.rb:89:36:89:43 | __LINE__ | case.rb:91:23:91:24 | { ..., ** } | no-match |
+| case.rb:89:47:89:54 | __FILE__ | case.rb:69:1:93:3 | exit case_match_various (abnormal) | no-match |
+| case.rb:89:47:89:54 | __FILE__ | case.rb:89:58:89:69 | __ENCODING__ | no-match |
+| case.rb:89:47:89:54 | __FILE__ | case.rb:90:5:90:13 | in ... then ... | no-match |
+| case.rb:89:47:89:54 | __FILE__ | case.rb:91:5:91:25 | in ... then ... | no-match |
+| case.rb:89:47:89:54 | __FILE__ | case.rb:91:13:91:14 | "" | no-match |
+| case.rb:89:47:89:54 | __FILE__ | case.rb:91:18:91:19 | [ ..., * ] | no-match |
+| case.rb:89:47:89:54 | __FILE__ | case.rb:91:23:91:24 | { ..., ** } | no-match |
+| case.rb:89:58:89:69 | __ENCODING__ | case.rb:69:1:93:3 | exit case_match_various (abnormal) | no-match |
+| case.rb:89:58:89:69 | __ENCODING__ | case.rb:90:5:90:13 | in ... then ... | no-match |
+| case.rb:89:58:89:69 | __ENCODING__ | case.rb:91:5:91:25 | in ... then ... | no-match |
+| case.rb:89:58:89:69 | __ENCODING__ | case.rb:91:13:91:14 | "" | no-match |
+| case.rb:89:58:89:69 | __ENCODING__ | case.rb:91:18:91:19 | [ ..., * ] | no-match |
+| case.rb:89:58:89:69 | __ENCODING__ | case.rb:91:23:91:24 | { ..., ** } | no-match |
+| case.rb:90:5:90:13 | in ... then ... | case.rb:69:1:93:3 | exit case_match_various (abnormal) | no-match |
+| case.rb:90:5:90:13 | in ... then ... | case.rb:91:5:91:25 | in ... then ... | no-match |
+| case.rb:90:5:90:13 | in ... then ... | case.rb:91:13:91:14 | "" | no-match |
+| case.rb:90:5:90:13 | in ... then ... | case.rb:91:18:91:19 | [ ..., * ] | no-match |
+| case.rb:90:5:90:13 | in ... then ... | case.rb:91:23:91:24 | { ..., ** } | no-match |
+| case.rb:91:5:91:25 | in ... then ... | case.rb:69:1:93:3 | exit case_match_various (abnormal) | no-match |
+| case.rb:91:5:91:25 | in ... then ... | case.rb:91:13:91:14 | "" | no-match |
+| case.rb:91:5:91:25 | in ... then ... | case.rb:91:18:91:19 | [ ..., * ] | no-match |
+| case.rb:91:5:91:25 | in ... then ... | case.rb:91:23:91:24 | { ..., ** } | no-match |
+| case.rb:91:13:91:14 | "" | case.rb:69:1:93:3 | exit case_match_various (abnormal) | no-match |
+| case.rb:91:13:91:14 | "" | case.rb:91:18:91:19 | [ ..., * ] | no-match |
+| case.rb:91:13:91:14 | "" | case.rb:91:23:91:24 | { ..., ** } | no-match |
+| case.rb:91:18:91:19 | [ ..., * ] | case.rb:69:1:93:3 | exit case_match_various (abnormal) | no-match |
+| case.rb:91:18:91:19 | [ ..., * ] | case.rb:91:23:91:24 | { ..., ** } | no-match |
+| case.rb:95:1:99:3 | enter case_match_guard_no_else | case.rb:95:1:99:3 | exit case_match_guard_no_else | match |
+| case.rb:95:1:99:3 | enter case_match_guard_no_else | case.rb:95:1:99:3 | exit case_match_guard_no_else (abnormal) | match |
+| case.rb:95:1:99:3 | enter case_match_guard_no_else | case.rb:97:13:97:13 | x | match |
+| case.rb:95:1:99:3 | enter case_match_guard_no_else | case.rb:97:25:97:25 | 6 | match |
+| case.rb:97:13:97:13 | x | case.rb:97:25:97:25 | 6 | true |
+| cfg.html.erb:5:16:31:12 | enter cfg.html.erb | cfg.html.erb:19:19:19:32 | self | true |
+| cfg.html.erb:5:16:31:12 | enter cfg.html.erb | cfg.html.erb:21:19:21:32 | self | false |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:32:9:32:9 | 1 | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:35:1:37:3 | if ... | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:41:1:45:3 | case ... | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:42:3:42:24 | [match] when ... | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:42:3:42:24 | [no-match] when ... | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:42:15:42:24 | self | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:43:3:43:31 | [match] when ... | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:43:3:43:31 | [no-match] when ... | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:43:8:43:8 | 2 | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:43:11:43:11 | 3 | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:43:14:43:14 | 4 | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:43:21:43:31 | self | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:44:8:44:18 | self | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:47:1:50:3 | case ... | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:48:3:48:29 | [false] when ... | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:48:3:48:29 | [true] when ... | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:48:20:48:29 | self | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:49:3:49:37 | [false] when ... | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:49:3:49:37 | [true] when ... | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:49:8:49:8 | b | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:49:16:49:16 | b | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:49:27:49:37 | self | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:60:17:60:40 | ... ? ... : ... | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:60:27:60:31 | hello | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:60:37:60:39 | bye | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:75:1:75:47 | if ... | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:75:15:75:15 | 0 | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:75:17:75:43 | elsif ... | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:75:23:75:23 | x | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:75:35:75:36 | 10 | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:75:43:75:43 | x | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:90:5:90:5 | [false] ! ... | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:90:5:90:5 | [true] ! ... | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:90:5:90:5 | if ... | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:90:5:90:5 | x | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:113:1:113:9 | self | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:113:1:113:19 | ... if ... | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:136:1:136:29 | ... rescue ... | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:136:12:136:29 | self | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:172:1:172:49 | unless ... | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:172:21:172:29 | self | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:172:36:172:45 | self | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:174:1:174:9 | self | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:174:1:174:23 | ... unless ... | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:176:1:176:41 | until ... | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:176:7:176:7 | x | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:176:17:176:17 | x | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:179:1:179:36 | ... until ... | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:179:2:179:13 | self | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:179:30:179:30 | i | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:182:1:186:3 | while ... | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:182:7:182:7 | x | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:183:3:183:3 | x | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:184:3:184:25 | if ... | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:184:18:184:21 | redo | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:188:1:188:35 | ... while ... | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:188:2:188:13 | self | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:188:30:188:30 | i | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:205:1:205:3 | __synth__0__1 | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:205:1:205:3 | nil | true |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:205:4:205:5 | if ... | true |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:35:1:37:3 | if ... | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:41:1:45:3 | case ... | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:42:3:42:24 | [match] when ... | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:42:3:42:24 | [no-match] when ... | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:42:15:42:24 | self | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:43:3:43:31 | [match] when ... | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:43:3:43:31 | [no-match] when ... | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:43:8:43:8 | 2 | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:43:11:43:11 | 3 | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:43:14:43:14 | 4 | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:43:21:43:31 | self | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:44:8:44:18 | self | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:47:1:50:3 | case ... | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:48:3:48:29 | [false] when ... | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:48:3:48:29 | [true] when ... | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:48:20:48:29 | self | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:49:3:49:37 | [false] when ... | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:49:3:49:37 | [true] when ... | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:49:8:49:8 | b | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:49:16:49:16 | b | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:49:27:49:37 | self | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:60:17:60:40 | ... ? ... : ... | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:60:27:60:31 | hello | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:60:37:60:39 | bye | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:75:1:75:47 | if ... | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:75:15:75:15 | 0 | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:75:17:75:43 | elsif ... | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:75:23:75:23 | x | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:75:35:75:36 | 10 | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:75:43:75:43 | x | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:90:5:90:5 | [false] ! ... | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:90:5:90:5 | [true] ! ... | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:90:5:90:5 | if ... | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:90:5:90:5 | x | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:113:1:113:9 | self | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:113:1:113:19 | ... if ... | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:136:1:136:29 | ... rescue ... | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:136:12:136:29 | self | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:172:1:172:49 | unless ... | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:172:21:172:29 | self | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:172:36:172:45 | self | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:174:1:174:9 | self | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:174:1:174:23 | ... unless ... | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:176:1:176:41 | until ... | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:176:7:176:7 | x | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:176:17:176:17 | x | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:179:1:179:36 | ... until ... | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:179:2:179:13 | self | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:179:30:179:30 | i | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:182:1:186:3 | while ... | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:182:7:182:7 | x | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:183:3:183:3 | x | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:184:3:184:25 | if ... | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:184:18:184:21 | redo | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:188:1:188:35 | ... while ... | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:188:2:188:13 | self | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:188:30:188:30 | i | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:205:1:205:3 | __synth__0__1 | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:205:1:205:3 | nil | false |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:205:4:205:5 | if ... | false |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:42:3:42:24 | [match] when ... | match |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:42:3:42:24 | [no-match] when ... | no-match |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:42:15:42:24 | self | match |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:43:3:43:31 | [match] when ... | no-match |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:43:3:43:31 | [no-match] when ... | no-match |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:43:8:43:8 | 2 | no-match |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:43:11:43:11 | 3 | no-match |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:43:14:43:14 | 4 | no-match |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:43:21:43:31 | self | no-match |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:44:8:44:18 | self | no-match |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:48:3:48:29 | [false] when ... | false |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:48:3:48:29 | [true] when ... | true |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:48:20:48:29 | self | true |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:49:3:49:37 | [false] when ... | false |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:49:3:49:37 | [true] when ... | false |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:49:8:49:8 | b | false |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:49:16:49:16 | b | false |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:49:27:49:37 | self | false |
+| cfg.rb:42:3:42:24 | [match] when ... | cfg.rb:42:15:42:24 | self | match |
+| cfg.rb:42:3:42:24 | [no-match] when ... | cfg.rb:43:3:43:31 | [match] when ... | no-match |
+| cfg.rb:42:3:42:24 | [no-match] when ... | cfg.rb:43:3:43:31 | [no-match] when ... | no-match |
+| cfg.rb:42:3:42:24 | [no-match] when ... | cfg.rb:43:8:43:8 | 2 | no-match |
+| cfg.rb:42:3:42:24 | [no-match] when ... | cfg.rb:43:11:43:11 | 3 | no-match |
+| cfg.rb:42:3:42:24 | [no-match] when ... | cfg.rb:43:14:43:14 | 4 | no-match |
+| cfg.rb:42:3:42:24 | [no-match] when ... | cfg.rb:43:21:43:31 | self | no-match |
+| cfg.rb:42:3:42:24 | [no-match] when ... | cfg.rb:44:8:44:18 | self | no-match |
+| cfg.rb:43:3:43:31 | [match] when ... | cfg.rb:43:21:43:31 | self | match |
+| cfg.rb:43:3:43:31 | [no-match] when ... | cfg.rb:44:8:44:18 | self | no-match |
+| cfg.rb:43:8:43:8 | 2 | cfg.rb:43:3:43:31 | [no-match] when ... | no-match |
+| cfg.rb:43:8:43:8 | 2 | cfg.rb:43:11:43:11 | 3 | no-match |
+| cfg.rb:43:8:43:8 | 2 | cfg.rb:43:14:43:14 | 4 | no-match |
+| cfg.rb:43:8:43:8 | 2 | cfg.rb:44:8:44:18 | self | no-match |
+| cfg.rb:43:11:43:11 | 3 | cfg.rb:43:3:43:31 | [no-match] when ... | no-match |
+| cfg.rb:43:11:43:11 | 3 | cfg.rb:43:14:43:14 | 4 | no-match |
+| cfg.rb:43:11:43:11 | 3 | cfg.rb:44:8:44:18 | self | no-match |
+| cfg.rb:43:14:43:14 | 4 | cfg.rb:43:3:43:31 | [no-match] when ... | no-match |
+| cfg.rb:43:14:43:14 | 4 | cfg.rb:44:8:44:18 | self | no-match |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:60:27:60:31 | hello | true |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:60:37:60:39 | bye | false |
+| cfg.rb:48:3:48:29 | [false] when ... | cfg.rb:49:3:49:37 | [false] when ... | false |
+| cfg.rb:48:3:48:29 | [false] when ... | cfg.rb:49:3:49:37 | [true] when ... | false |
+| cfg.rb:48:3:48:29 | [false] when ... | cfg.rb:49:8:49:8 | b | false |
+| cfg.rb:48:3:48:29 | [false] when ... | cfg.rb:49:16:49:16 | b | false |
+| cfg.rb:48:3:48:29 | [false] when ... | cfg.rb:49:27:49:37 | self | false |
+| cfg.rb:48:3:48:29 | [true] when ... | cfg.rb:48:20:48:29 | self | true |
+| cfg.rb:49:3:49:37 | [true] when ... | cfg.rb:49:27:49:37 | self | true |
+| cfg.rb:49:8:49:8 | b | cfg.rb:49:3:49:37 | [false] when ... | false |
+| cfg.rb:49:8:49:8 | b | cfg.rb:49:16:49:16 | b | false |
+| cfg.rb:49:16:49:16 | b | cfg.rb:49:3:49:37 | [false] when ... | false |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:75:15:75:15 | 0 | true |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:75:17:75:43 | elsif ... | false |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:75:23:75:23 | x | false |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:75:35:75:36 | 10 | false |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:75:43:75:43 | x | false |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:90:5:90:5 | [false] ! ... | true |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:90:5:90:5 | [true] ! ... | false |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:90:5:90:5 | x | false |
+| cfg.rb:75:23:75:23 | x | cfg.rb:75:35:75:36 | 10 | true |
+| cfg.rb:75:23:75:23 | x | cfg.rb:75:43:75:43 | x | false |
+| cfg.rb:90:1:93:3 | enter { ... } | cfg.rb:91:3:91:24 | if ... | false |
+| cfg.rb:90:1:93:3 | enter { ... } | cfg.rb:91:17:91:20 | next | true |
+| cfg.rb:90:5:90:5 | [true] ! ... | cfg.rb:90:5:90:5 | x | true |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:113:1:113:9 | self | true |
+| cfg.rb:101:1:104:3 | enter parameters | cfg.rb:101:24:101:25 | 42 | false |
+| cfg.rb:101:1:104:3 | enter parameters | cfg.rb:101:24:101:25 | 42 | no-match |
+| cfg.rb:101:1:104:3 | enter parameters | cfg.rb:101:24:101:25 | 42 | true |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:172:21:172:29 | self | false |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:172:36:172:45 | self | true |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:174:1:174:9 | self | false |
+| cfg.rb:176:7:176:7 | x | cfg.rb:176:1:176:41 | until ... | true |
+| cfg.rb:176:7:176:7 | x | cfg.rb:176:17:176:17 | x | false |
+| cfg.rb:176:7:176:7 | x | cfg.rb:179:1:179:36 | ... until ... | true |
+| cfg.rb:176:7:176:7 | x | cfg.rb:179:2:179:13 | self | true |
+| cfg.rb:176:7:176:7 | x | cfg.rb:179:30:179:30 | i | true |
+| cfg.rb:176:7:176:7 | x | cfg.rb:182:1:186:3 | while ... | true |
+| cfg.rb:176:7:176:7 | x | cfg.rb:182:7:182:7 | x | true |
+| cfg.rb:176:7:176:7 | x | cfg.rb:183:3:183:3 | x | true |
+| cfg.rb:176:7:176:7 | x | cfg.rb:184:3:184:25 | if ... | true |
+| cfg.rb:176:7:176:7 | x | cfg.rb:184:18:184:21 | redo | true |
+| cfg.rb:176:7:176:7 | x | cfg.rb:188:1:188:35 | ... while ... | true |
+| cfg.rb:176:7:176:7 | x | cfg.rb:188:2:188:13 | self | true |
+| cfg.rb:176:7:176:7 | x | cfg.rb:188:30:188:30 | i | true |
+| cfg.rb:176:7:176:7 | x | cfg.rb:205:1:205:3 | __synth__0__1 | true |
+| cfg.rb:176:7:176:7 | x | cfg.rb:205:1:205:3 | nil | true |
+| cfg.rb:176:7:176:7 | x | cfg.rb:205:4:205:5 | if ... | true |
+| cfg.rb:179:30:179:30 | i | cfg.rb:179:1:179:36 | ... until ... | true |
+| cfg.rb:179:30:179:30 | i | cfg.rb:179:2:179:13 | self | false |
+| cfg.rb:179:30:179:30 | i | cfg.rb:182:1:186:3 | while ... | true |
+| cfg.rb:179:30:179:30 | i | cfg.rb:182:7:182:7 | x | true |
+| cfg.rb:179:30:179:30 | i | cfg.rb:183:3:183:3 | x | true |
+| cfg.rb:179:30:179:30 | i | cfg.rb:184:3:184:25 | if ... | true |
+| cfg.rb:179:30:179:30 | i | cfg.rb:184:18:184:21 | redo | true |
+| cfg.rb:179:30:179:30 | i | cfg.rb:188:1:188:35 | ... while ... | true |
+| cfg.rb:179:30:179:30 | i | cfg.rb:188:2:188:13 | self | true |
+| cfg.rb:179:30:179:30 | i | cfg.rb:188:30:188:30 | i | true |
+| cfg.rb:179:30:179:30 | i | cfg.rb:205:1:205:3 | __synth__0__1 | true |
+| cfg.rb:179:30:179:30 | i | cfg.rb:205:1:205:3 | nil | true |
+| cfg.rb:179:30:179:30 | i | cfg.rb:205:4:205:5 | if ... | true |
+| cfg.rb:182:7:182:7 | x | cfg.rb:182:1:186:3 | while ... | false |
+| cfg.rb:182:7:182:7 | x | cfg.rb:183:3:183:3 | x | true |
+| cfg.rb:182:7:182:7 | x | cfg.rb:184:3:184:25 | if ... | true |
+| cfg.rb:182:7:182:7 | x | cfg.rb:184:18:184:21 | redo | true |
+| cfg.rb:182:7:182:7 | x | cfg.rb:188:1:188:35 | ... while ... | false |
+| cfg.rb:182:7:182:7 | x | cfg.rb:188:2:188:13 | self | false |
+| cfg.rb:182:7:182:7 | x | cfg.rb:188:30:188:30 | i | false |
+| cfg.rb:182:7:182:7 | x | cfg.rb:205:1:205:3 | __synth__0__1 | false |
+| cfg.rb:182:7:182:7 | x | cfg.rb:205:1:205:3 | nil | false |
+| cfg.rb:182:7:182:7 | x | cfg.rb:205:4:205:5 | if ... | false |
+| cfg.rb:183:3:183:3 | x | cfg.rb:184:3:184:25 | if ... | false |
+| cfg.rb:183:3:183:3 | x | cfg.rb:184:18:184:21 | redo | true |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:205:1:205:3 | __synth__0__1 | false |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:205:1:205:3 | nil | true |
+| cfg.rb:188:30:188:30 | i | cfg.rb:188:1:188:35 | ... while ... | false |
+| cfg.rb:188:30:188:30 | i | cfg.rb:188:2:188:13 | self | true |
+| cfg.rb:188:30:188:30 | i | cfg.rb:205:1:205:3 | __synth__0__1 | false |
+| cfg.rb:188:30:188:30 | i | cfg.rb:205:1:205:3 | nil | false |
+| cfg.rb:188:30:188:30 | i | cfg.rb:205:4:205:5 | if ... | false |
+| constant_compound_assign.rb:1:1:22:4 | enter constant_compound_assign.rb | constant_compound_assign.rb:5:22:5:24 | 123 | false |
+| constant_compound_assign.rb:5:18:5:20 | ... \|\| ... | constant_compound_assign.rb:14:18:14:20 | 123 | false |
+| constant_compound_assign.rb:14:14:14:16 | ... \|\| ... | constant_compound_assign.rb:19:21:19:23 | 123 | false |
+| exit.rb:1:1:6:3 | enter m1 | exit.rb:2:3:4:5 | if ... | false |
+| exit.rb:1:1:6:3 | enter m1 | exit.rb:3:5:3:10 | self | true |
+| exit.rb:8:1:13:3 | enter m2 | exit.rb:9:3:11:5 | if ... | false |
+| exit.rb:8:1:13:3 | enter m2 | exit.rb:10:5:10:18 | self | true |
+| ifs.rb:1:1:9:3 | enter m1 | ifs.rb:3:5:3:30 | self | true |
+| ifs.rb:1:1:9:3 | enter m1 | ifs.rb:4:3:7:35 | elsif ... | false |
+| ifs.rb:1:1:9:3 | enter m1 | ifs.rb:4:9:4:9 | x | false |
+| ifs.rb:1:1:9:3 | enter m1 | ifs.rb:4:9:4:24 | [false] ... and ... | false |
+| ifs.rb:1:1:9:3 | enter m1 | ifs.rb:4:9:4:24 | [true] ... and ... | false |
+| ifs.rb:1:1:9:3 | enter m1 | ifs.rb:4:9:4:38 | [false] ... and ... | false |
+| ifs.rb:1:1:9:3 | enter m1 | ifs.rb:4:9:4:38 | [true] ... and ... | false |
+| ifs.rb:1:1:9:3 | enter m1 | ifs.rb:4:20:4:20 | x | false |
+| ifs.rb:1:1:9:3 | enter m1 | ifs.rb:4:30:4:38 | [false] ! ... | false |
+| ifs.rb:1:1:9:3 | enter m1 | ifs.rb:4:30:4:38 | [true] ! ... | false |
+| ifs.rb:1:1:9:3 | enter m1 | ifs.rb:4:31:4:38 | [false] ( ... ) | false |
+| ifs.rb:1:1:9:3 | enter m1 | ifs.rb:4:31:4:38 | [true] ( ... ) | false |
+| ifs.rb:1:1:9:3 | enter m1 | ifs.rb:4:32:4:32 | x | false |
+| ifs.rb:1:1:9:3 | enter m1 | ifs.rb:5:5:5:17 | self | false |
+| ifs.rb:1:1:9:3 | enter m1 | ifs.rb:7:5:7:35 | self | false |
+| ifs.rb:1:1:58:4 | enter ifs.rb | ifs.rb:36:1:38:3 | conditional_method_def | false |
+| ifs.rb:4:9:4:9 | x | ifs.rb:4:9:4:24 | [true] ... and ... | true |
+| ifs.rb:4:9:4:9 | x | ifs.rb:4:9:4:38 | [true] ... and ... | true |
+| ifs.rb:4:9:4:9 | x | ifs.rb:4:20:4:20 | x | true |
+| ifs.rb:4:9:4:9 | x | ifs.rb:4:30:4:38 | [false] ! ... | true |
+| ifs.rb:4:9:4:9 | x | ifs.rb:4:30:4:38 | [true] ! ... | true |
+| ifs.rb:4:9:4:9 | x | ifs.rb:4:31:4:38 | [false] ( ... ) | true |
+| ifs.rb:4:9:4:9 | x | ifs.rb:4:31:4:38 | [true] ( ... ) | true |
+| ifs.rb:4:9:4:9 | x | ifs.rb:4:32:4:32 | x | true |
+| ifs.rb:4:9:4:9 | x | ifs.rb:5:5:5:17 | self | true |
+| ifs.rb:4:9:4:24 | [true] ... and ... | ifs.rb:4:9:4:38 | [true] ... and ... | true |
+| ifs.rb:4:9:4:24 | [true] ... and ... | ifs.rb:4:30:4:38 | [false] ! ... | true |
+| ifs.rb:4:9:4:24 | [true] ... and ... | ifs.rb:4:30:4:38 | [true] ! ... | true |
+| ifs.rb:4:9:4:24 | [true] ... and ... | ifs.rb:4:31:4:38 | [false] ( ... ) | true |
+| ifs.rb:4:9:4:24 | [true] ... and ... | ifs.rb:4:31:4:38 | [true] ( ... ) | true |
+| ifs.rb:4:9:4:24 | [true] ... and ... | ifs.rb:4:32:4:32 | x | true |
+| ifs.rb:4:9:4:24 | [true] ... and ... | ifs.rb:5:5:5:17 | self | true |
+| ifs.rb:4:9:4:38 | [false] ... and ... | ifs.rb:7:5:7:35 | self | false |
+| ifs.rb:4:9:4:38 | [true] ... and ... | ifs.rb:5:5:5:17 | self | true |
+| ifs.rb:4:20:4:20 | x | ifs.rb:4:9:4:24 | [true] ... and ... | true |
+| ifs.rb:4:20:4:20 | x | ifs.rb:4:9:4:38 | [true] ... and ... | true |
+| ifs.rb:4:20:4:20 | x | ifs.rb:4:30:4:38 | [false] ! ... | true |
+| ifs.rb:4:20:4:20 | x | ifs.rb:4:30:4:38 | [true] ! ... | true |
+| ifs.rb:4:20:4:20 | x | ifs.rb:4:31:4:38 | [false] ( ... ) | true |
+| ifs.rb:4:20:4:20 | x | ifs.rb:4:31:4:38 | [true] ( ... ) | true |
+| ifs.rb:4:20:4:20 | x | ifs.rb:4:32:4:32 | x | true |
+| ifs.rb:4:20:4:20 | x | ifs.rb:5:5:5:17 | self | true |
+| ifs.rb:4:30:4:38 | [true] ! ... | ifs.rb:4:9:4:38 | [true] ... and ... | true |
+| ifs.rb:4:30:4:38 | [true] ! ... | ifs.rb:5:5:5:17 | self | true |
+| ifs.rb:4:31:4:38 | [false] ( ... ) | ifs.rb:4:9:4:38 | [true] ... and ... | false |
+| ifs.rb:4:31:4:38 | [false] ( ... ) | ifs.rb:4:30:4:38 | [true] ! ... | false |
+| ifs.rb:4:31:4:38 | [false] ( ... ) | ifs.rb:5:5:5:17 | self | false |
+| ifs.rb:4:31:4:38 | [true] ( ... ) | ifs.rb:4:30:4:38 | [false] ! ... | true |
+| ifs.rb:4:32:4:32 | x | ifs.rb:4:9:4:38 | [true] ... and ... | false |
+| ifs.rb:4:32:4:32 | x | ifs.rb:4:30:4:38 | [false] ! ... | true |
+| ifs.rb:4:32:4:32 | x | ifs.rb:4:30:4:38 | [true] ! ... | false |
+| ifs.rb:4:32:4:32 | x | ifs.rb:4:31:4:38 | [false] ( ... ) | false |
+| ifs.rb:4:32:4:32 | x | ifs.rb:4:31:4:38 | [true] ( ... ) | true |
+| ifs.rb:4:32:4:32 | x | ifs.rb:5:5:5:17 | self | false |
+| ifs.rb:11:1:16:3 | enter m2 | ifs.rb:12:3:14:5 | if ... | false |
+| ifs.rb:11:1:16:3 | enter m2 | ifs.rb:13:12:13:12 | 0 | true |
+| ifs.rb:18:1:26:3 | enter m3 | ifs.rb:20:5:20:5 | x | true |
+| ifs.rb:18:1:26:3 | enter m3 | ifs.rb:21:5:23:7 | if ... | true |
+| ifs.rb:18:1:26:3 | enter m3 | ifs.rb:22:7:22:7 | x | true |
+| ifs.rb:20:5:20:5 | x | ifs.rb:22:7:22:7 | x | true |
+| ifs.rb:28:1:30:3 | enter m4 | ifs.rb:29:16:29:17 | b2 | true |
+| ifs.rb:28:1:30:3 | enter m4 | ifs.rb:29:21:29:22 | b3 | false |
+| ifs.rb:29:10:29:23 | [false] ( ... ) | ifs.rb:29:41:29:50 | !b2 \|\| !b3 | false |
+| ifs.rb:29:10:29:23 | [true] ( ... ) | ifs.rb:29:28:29:35 | b2 \|\| b3 | true |
+| ifs.rb:29:11:29:22 | [false] ... ? ... : ... | ifs.rb:29:10:29:23 | [false] ( ... ) | false |
+| ifs.rb:29:11:29:22 | [false] ... ? ... : ... | ifs.rb:29:41:29:50 | !b2 \|\| !b3 | false |
+| ifs.rb:29:11:29:22 | [true] ... ? ... : ... | ifs.rb:29:10:29:23 | [true] ( ... ) | true |
+| ifs.rb:29:11:29:22 | [true] ... ? ... : ... | ifs.rb:29:28:29:35 | b2 \|\| b3 | true |
+| ifs.rb:32:1:34:3 | enter m5 | ifs.rb:33:13:33:19 | [false] then ... | true |
+| ifs.rb:32:1:34:3 | enter m5 | ifs.rb:33:13:33:19 | [true] then ... | true |
+| ifs.rb:32:1:34:3 | enter m5 | ifs.rb:33:18:33:19 | b2 | true |
+| ifs.rb:32:1:34:3 | enter m5 | ifs.rb:33:21:33:44 | [false] elsif ... | false |
+| ifs.rb:32:1:34:3 | enter m5 | ifs.rb:33:21:33:44 | [true] elsif ... | false |
+| ifs.rb:32:1:34:3 | enter m5 | ifs.rb:33:27:33:28 | b3 | false |
+| ifs.rb:32:1:34:3 | enter m5 | ifs.rb:33:30:33:36 | [false] then ... | false |
+| ifs.rb:32:1:34:3 | enter m5 | ifs.rb:33:30:33:36 | [true] then ... | false |
+| ifs.rb:32:1:34:3 | enter m5 | ifs.rb:33:35:33:36 | b4 | false |
+| ifs.rb:32:1:34:3 | enter m5 | ifs.rb:33:38:33:44 | [false] else ... | false |
+| ifs.rb:32:1:34:3 | enter m5 | ifs.rb:33:38:33:44 | [true] else ... | false |
+| ifs.rb:32:1:34:3 | enter m5 | ifs.rb:33:43:33:44 | b5 | false |
+| ifs.rb:33:6:33:49 | [false] ( ... ) | ifs.rb:33:79:33:95 | !b2 \|\| !b4 \|\| !b5 | false |
+| ifs.rb:33:6:33:49 | [true] ( ... ) | ifs.rb:33:57:33:70 | b2 \|\| b4 \|\| b5 | true |
+| ifs.rb:33:7:33:48 | [false] if ... | ifs.rb:33:6:33:49 | [false] ( ... ) | false |
+| ifs.rb:33:7:33:48 | [false] if ... | ifs.rb:33:79:33:95 | !b2 \|\| !b4 \|\| !b5 | false |
+| ifs.rb:33:7:33:48 | [true] if ... | ifs.rb:33:6:33:49 | [true] ( ... ) | true |
+| ifs.rb:33:7:33:48 | [true] if ... | ifs.rb:33:57:33:70 | b2 \|\| b4 \|\| b5 | true |
+| ifs.rb:33:18:33:19 | b2 | ifs.rb:33:13:33:19 | [false] then ... | false |
+| ifs.rb:33:18:33:19 | b2 | ifs.rb:33:13:33:19 | [true] then ... | true |
+| ifs.rb:33:27:33:28 | b3 | ifs.rb:33:30:33:36 | [false] then ... | true |
+| ifs.rb:33:27:33:28 | b3 | ifs.rb:33:30:33:36 | [true] then ... | true |
+| ifs.rb:33:27:33:28 | b3 | ifs.rb:33:35:33:36 | b4 | true |
+| ifs.rb:33:27:33:28 | b3 | ifs.rb:33:38:33:44 | [false] else ... | false |
+| ifs.rb:33:27:33:28 | b3 | ifs.rb:33:38:33:44 | [true] else ... | false |
+| ifs.rb:33:27:33:28 | b3 | ifs.rb:33:43:33:44 | b5 | false |
+| ifs.rb:33:35:33:36 | b4 | ifs.rb:33:30:33:36 | [false] then ... | false |
+| ifs.rb:33:35:33:36 | b4 | ifs.rb:33:30:33:36 | [true] then ... | true |
+| ifs.rb:33:43:33:44 | b5 | ifs.rb:33:38:33:44 | [false] else ... | false |
+| ifs.rb:33:43:33:44 | b5 | ifs.rb:33:38:33:44 | [true] else ... | true |
+| ifs.rb:40:1:44:3 | enter constant_condition | ifs.rb:41:3:43:5 | if ... | true |
+| ifs.rb:40:1:44:3 | enter constant_condition | ifs.rb:41:6:41:10 | [false] ! ... | true |
+| ifs.rb:41:6:41:10 | [false] ! ... | ifs.rb:41:3:43:5 | if ... | false |
+| ifs.rb:46:1:52:3 | enter empty_else | ifs.rb:48:5:48:15 | self | true |
+| ifs.rb:46:1:52:3 | enter empty_else | ifs.rb:49:3:49:6 | else ... | false |
+| ifs.rb:54:1:58:3 | enter disjunct | ifs.rb:55:6:55:15 | [false] ( ... ) | false |
+| ifs.rb:54:1:58:3 | enter disjunct | ifs.rb:55:7:55:14 | [false] ... \|\| ... | false |
+| ifs.rb:54:1:58:3 | enter disjunct | ifs.rb:55:13:55:14 | b2 | false |
+| ifs.rb:55:6:55:15 | [true] ( ... ) | ifs.rb:56:5:56:19 | self | true |
+| ifs.rb:55:7:55:14 | [false] ... \|\| ... | ifs.rb:55:6:55:15 | [false] ( ... ) | false |
+| ifs.rb:55:7:55:14 | [true] ... \|\| ... | ifs.rb:55:6:55:15 | [true] ( ... ) | true |
+| ifs.rb:55:7:55:14 | [true] ... \|\| ... | ifs.rb:56:5:56:19 | self | true |
+| ifs.rb:55:13:55:14 | b2 | ifs.rb:55:6:55:15 | [false] ( ... ) | false |
+| ifs.rb:55:13:55:14 | b2 | ifs.rb:55:7:55:14 | [false] ... \|\| ... | false |
+| loops.rb:2:9:2:9 | x | loops.rb:2:3:5:5 | while ... | false |
+| loops.rb:2:9:2:9 | x | loops.rb:3:5:3:10 | self | true |
+| loops.rb:9:9:9:9 | x | loops.rb:10:5:10:10 | self | true |
+| loops.rb:9:9:9:9 | x | loops.rb:13:7:13:11 | break | true |
+| loops.rb:9:9:9:9 | x | loops.rb:14:11:14:11 | x | true |
+| loops.rb:9:9:9:9 | x | loops.rb:15:7:15:10 | next | true |
+| loops.rb:9:9:9:9 | x | loops.rb:16:5:17:10 | elsif ... | true |
+| loops.rb:9:9:9:9 | x | loops.rb:16:11:16:11 | x | true |
+| loops.rb:9:9:9:9 | x | loops.rb:17:7:17:10 | redo | true |
+| loops.rb:10:5:10:10 | self | loops.rb:13:7:13:11 | break | true |
+| loops.rb:10:5:10:10 | self | loops.rb:14:11:14:11 | x | false |
+| loops.rb:10:5:10:10 | self | loops.rb:15:7:15:10 | next | false |
+| loops.rb:10:5:10:10 | self | loops.rb:16:5:17:10 | elsif ... | false |
+| loops.rb:10:5:10:10 | self | loops.rb:16:11:16:11 | x | false |
+| loops.rb:10:5:10:10 | self | loops.rb:17:7:17:10 | redo | false |
+| loops.rb:14:11:14:11 | x | loops.rb:15:7:15:10 | next | true |
+| loops.rb:14:11:14:11 | x | loops.rb:16:5:17:10 | elsif ... | false |
+| loops.rb:14:11:14:11 | x | loops.rb:16:11:16:11 | x | false |
+| loops.rb:14:11:14:11 | x | loops.rb:17:7:17:10 | redo | false |
+| loops.rb:16:11:16:11 | x | loops.rb:16:5:17:10 | elsif ... | false |
+| loops.rb:16:11:16:11 | x | loops.rb:17:7:17:10 | redo | true |
+| loops.rb:31:9:31:9 | x | loops.rb:31:3:32:5 | while ... | false |
+| loops.rb:31:9:31:9 | x | loops.rb:31:15:32:5 | do ... | true |
+| raise.rb:7:1:12:3 | enter m1 | raise.rb:8:3:10:5 | if ... | false |
+| raise.rb:7:1:12:3 | enter m1 | raise.rb:9:5:9:17 | self | true |
+| raise.rb:14:1:23:3 | enter m2 | raise.rb:14:1:23:3 | exit m2 (abnormal) | true |
+| raise.rb:14:1:23:3 | enter m2 | raise.rb:16:5:18:7 | if ... | false |
+| raise.rb:14:1:23:3 | enter m2 | raise.rb:17:7:17:22 | self | true |
+| raise.rb:14:1:23:3 | enter m2 | raise.rb:20:5:20:18 | self | true |
+| raise.rb:17:7:17:22 | self | raise.rb:20:5:20:18 | self | match |
+| raise.rb:25:1:34:3 | enter m3 | raise.rb:27:5:29:7 | if ... | false |
+| raise.rb:25:1:34:3 | enter m3 | raise.rb:28:7:28:22 | self | true |
+| raise.rb:36:1:45:3 | enter m4 | raise.rb:38:5:40:7 | if ... | false |
+| raise.rb:36:1:45:3 | enter m4 | raise.rb:39:7:39:22 | self | true |
+| raise.rb:47:1:55:3 | enter m5 | raise.rb:49:5:51:7 | if ... | false |
+| raise.rb:47:1:55:3 | enter m5 | raise.rb:50:7:50:22 | self | true |
+| raise.rb:57:1:66:3 | enter m6 | raise.rb:57:1:66:3 | exit m6 (abnormal) | true |
+| raise.rb:57:1:66:3 | enter m6 | raise.rb:59:5:61:7 | if ... | false |
+| raise.rb:57:1:66:3 | enter m6 | raise.rb:60:7:60:22 | self | true |
+| raise.rb:57:1:66:3 | enter m6 | raise.rb:62:22:62:31 | ExceptionB | true |
+| raise.rb:57:1:66:3 | enter m6 | raise.rb:62:36:62:36 | e | true |
+| raise.rb:60:7:60:22 | self | raise.rb:57:1:66:3 | exit m6 (abnormal) | no-match |
+| raise.rb:60:7:60:22 | self | raise.rb:62:22:62:31 | ExceptionB | no-match |
+| raise.rb:68:1:77:3 | enter m7 | raise.rb:68:1:77:3 | exit m7 (normal) | false |
+| raise.rb:68:1:77:3 | enter m7 | raise.rb:70:5:70:17 | self | true |
+| raise.rb:68:1:77:3 | enter m7 | raise.rb:71:3:72:18 | elsif ... | false |
+| raise.rb:68:1:77:3 | enter m7 | raise.rb:71:9:71:9 | x | false |
+| raise.rb:68:1:77:3 | enter m7 | raise.rb:72:13:72:17 | x < 0 | false |
+| raise.rb:68:1:77:3 | enter m7 | raise.rb:76:3:76:15 | self | false |
+| raise.rb:71:9:71:9 | x | raise.rb:71:3:72:18 | elsif ... | false |
+| raise.rb:71:9:71:9 | x | raise.rb:72:13:72:17 | x < 0 | true |
+| raise.rb:71:9:71:9 | x | raise.rb:76:3:76:15 | self | false |
+| raise.rb:79:1:92:3 | enter m8 | raise.rb:79:1:92:3 | exit m8 (normal) | false |
+| raise.rb:79:1:92:3 | enter m8 | raise.rb:83:7:83:19 | self | true |
+| raise.rb:79:1:92:3 | enter m8 | raise.rb:84:5:85:20 | elsif ... | false |
+| raise.rb:79:1:92:3 | enter m8 | raise.rb:84:11:84:11 | x | false |
+| raise.rb:79:1:92:3 | enter m8 | raise.rb:85:15:85:19 | x < 0 | false |
+| raise.rb:79:1:92:3 | enter m8 | raise.rb:89:5:89:17 | self | false |
+| raise.rb:84:11:84:11 | x | raise.rb:84:5:85:20 | elsif ... | false |
+| raise.rb:84:11:84:11 | x | raise.rb:85:15:85:19 | x < 0 | true |
+| raise.rb:84:11:84:11 | x | raise.rb:89:5:89:17 | self | false |
+| raise.rb:97:8:97:8 | x | raise.rb:94:1:119:3 | exit m9 (normal) | false |
+| raise.rb:97:8:97:8 | x | raise.rb:98:7:98:19 | self | true |
+| raise.rb:97:8:97:8 | x | raise.rb:99:5:100:20 | elsif ... | false |
+| raise.rb:97:8:97:8 | x | raise.rb:99:11:99:11 | x | false |
+| raise.rb:97:8:97:8 | x | raise.rb:100:15:100:19 | x < 0 | false |
+| raise.rb:97:8:97:8 | x | raise.rb:104:5:104:23 | self | false |
+| raise.rb:97:8:97:8 | x | raise.rb:106:7:108:9 | [ensure: return] if ... | false |
+| raise.rb:97:8:97:8 | x | raise.rb:106:7:108:9 | if ... | false |
+| raise.rb:97:8:97:8 | x | raise.rb:106:10:106:11 | [ensure: return] b1 | false |
+| raise.rb:97:8:97:8 | x | raise.rb:106:10:106:11 | b1 | false |
+| raise.rb:97:8:97:8 | x | raise.rb:107:9:107:26 | [ensure: return] self | false |
+| raise.rb:97:8:97:8 | x | raise.rb:107:9:107:26 | self | false |
+| raise.rb:97:8:97:8 | x | raise.rb:109:5:110:25 | [ensure(1): raise] ensure ... | false |
+| raise.rb:97:8:97:8 | x | raise.rb:109:5:110:25 | [ensure: return, ensure(1): raise] ensure ... | false |
+| raise.rb:97:8:97:8 | x | raise.rb:109:5:110:25 | [ensure: return] ensure ... | false |
+| raise.rb:97:8:97:8 | x | raise.rb:109:5:110:25 | ensure ... | false |
+| raise.rb:97:8:97:8 | x | raise.rb:115:3:115:22 | self | false |
+| raise.rb:97:8:97:8 | x | raise.rb:116:3:118:5 | [ensure: return] if ... | false |
+| raise.rb:97:8:97:8 | x | raise.rb:116:3:118:5 | if ... | false |
+| raise.rb:97:8:97:8 | x | raise.rb:117:5:117:22 | [ensure: return] self | false |
+| raise.rb:97:8:97:8 | x | raise.rb:117:5:117:22 | self | false |
+| raise.rb:99:11:99:11 | x | raise.rb:99:5:100:20 | elsif ... | false |
+| raise.rb:99:11:99:11 | x | raise.rb:100:15:100:19 | x < 0 | true |
+| raise.rb:99:11:99:11 | x | raise.rb:104:5:104:23 | self | false |
+| raise.rb:99:11:99:11 | x | raise.rb:106:7:108:9 | [ensure: return] if ... | true |
+| raise.rb:99:11:99:11 | x | raise.rb:106:7:108:9 | if ... | false |
+| raise.rb:99:11:99:11 | x | raise.rb:106:10:106:11 | [ensure: return] b1 | true |
+| raise.rb:99:11:99:11 | x | raise.rb:106:10:106:11 | b1 | false |
+| raise.rb:99:11:99:11 | x | raise.rb:107:9:107:26 | [ensure: return] self | true |
+| raise.rb:99:11:99:11 | x | raise.rb:107:9:107:26 | self | false |
+| raise.rb:99:11:99:11 | x | raise.rb:109:5:110:25 | [ensure(1): raise] ensure ... | false |
+| raise.rb:99:11:99:11 | x | raise.rb:109:5:110:25 | [ensure: return, ensure(1): raise] ensure ... | true |
+| raise.rb:99:11:99:11 | x | raise.rb:109:5:110:25 | [ensure: return] ensure ... | true |
+| raise.rb:99:11:99:11 | x | raise.rb:109:5:110:25 | ensure ... | false |
+| raise.rb:99:11:99:11 | x | raise.rb:115:3:115:22 | self | false |
+| raise.rb:99:11:99:11 | x | raise.rb:116:3:118:5 | [ensure: return] if ... | true |
+| raise.rb:99:11:99:11 | x | raise.rb:116:3:118:5 | if ... | false |
+| raise.rb:99:11:99:11 | x | raise.rb:117:5:117:22 | [ensure: return] self | true |
+| raise.rb:99:11:99:11 | x | raise.rb:117:5:117:22 | self | false |
+| raise.rb:106:10:106:11 | [ensure: raise] b1 | raise.rb:106:7:108:9 | [ensure: raise] if ... | false |
+| raise.rb:106:10:106:11 | [ensure: raise] b1 | raise.rb:107:9:107:26 | [ensure: raise] self | true |
+| raise.rb:106:10:106:11 | [ensure: raise] b1 | raise.rb:109:5:110:25 | [ensure: raise, ensure(1): raise] ensure ... | true |
+| raise.rb:106:10:106:11 | [ensure: raise] b1 | raise.rb:109:5:110:25 | [ensure: raise] ensure ... | false |
+| raise.rb:106:10:106:11 | [ensure: return] b1 | raise.rb:106:7:108:9 | [ensure: return] if ... | false |
+| raise.rb:106:10:106:11 | [ensure: return] b1 | raise.rb:107:9:107:26 | [ensure: return] self | true |
+| raise.rb:106:10:106:11 | [ensure: return] b1 | raise.rb:109:5:110:25 | [ensure: return, ensure(1): raise] ensure ... | true |
+| raise.rb:106:10:106:11 | [ensure: return] b1 | raise.rb:109:5:110:25 | [ensure: return] ensure ... | false |
+| raise.rb:106:10:106:11 | [ensure: return] b1 | raise.rb:116:3:118:5 | [ensure: return] if ... | false |
+| raise.rb:106:10:106:11 | [ensure: return] b1 | raise.rb:117:5:117:22 | [ensure: return] self | false |
+| raise.rb:106:10:106:11 | b1 | raise.rb:106:7:108:9 | if ... | false |
+| raise.rb:106:10:106:11 | b1 | raise.rb:107:9:107:26 | self | true |
+| raise.rb:106:10:106:11 | b1 | raise.rb:109:5:110:25 | [ensure(1): raise] ensure ... | true |
+| raise.rb:106:10:106:11 | b1 | raise.rb:109:5:110:25 | ensure ... | false |
+| raise.rb:106:10:106:11 | b1 | raise.rb:115:3:115:22 | self | false |
+| raise.rb:106:10:106:11 | b1 | raise.rb:116:3:118:5 | if ... | false |
+| raise.rb:106:10:106:11 | b1 | raise.rb:117:5:117:22 | self | false |
+| raise.rb:109:5:110:25 | [ensure: return] ensure ... | raise.rb:116:3:118:5 | [ensure: return] if ... | false |
+| raise.rb:109:5:110:25 | [ensure: return] ensure ... | raise.rb:117:5:117:22 | [ensure: return] self | true |
+| raise.rb:115:3:115:22 | [ensure: raise] self | raise.rb:116:3:118:5 | [ensure: raise] if ... | false |
+| raise.rb:115:3:115:22 | [ensure: raise] self | raise.rb:117:5:117:22 | [ensure: raise] self | true |
+| raise.rb:115:3:115:22 | self | raise.rb:116:3:118:5 | if ... | false |
+| raise.rb:115:3:115:22 | self | raise.rb:117:5:117:22 | self | true |
+| raise.rb:121:1:126:3 | enter m10 | raise.rb:121:14:121:30 | self | false |
+| raise.rb:121:1:126:3 | enter m10 | raise.rb:121:14:121:30 | self | no-match |
+| raise.rb:121:1:126:3 | enter m10 | raise.rb:121:14:121:30 | self | true |
+| raise.rb:121:1:126:3 | enter m10 | raise.rb:125:3:125:51 | self | match |
+| raise.rb:128:1:140:3 | enter m11 | raise.rb:130:5:132:7 | if ... | false |
+| raise.rb:128:1:140:3 | enter m11 | raise.rb:131:7:131:22 | self | true |
+| raise.rb:128:1:140:3 | enter m11 | raise.rb:133:3:133:19 | rescue ... | true |
+| raise.rb:128:1:140:3 | enter m11 | raise.rb:134:10:134:19 | ExceptionB | true |
+| raise.rb:128:1:140:3 | enter m11 | raise.rb:135:5:135:21 | self | true |
+| raise.rb:128:1:140:3 | enter m11 | raise.rb:137:5:137:17 | [ensure: raise] self | true |
+| raise.rb:131:7:131:22 | self | raise.rb:133:3:133:19 | rescue ... | match |
+| raise.rb:131:7:131:22 | self | raise.rb:134:10:134:19 | ExceptionB | no-match |
+| raise.rb:131:7:131:22 | self | raise.rb:135:5:135:21 | self | no-match |
+| raise.rb:131:7:131:22 | self | raise.rb:137:5:137:17 | [ensure: raise] self | no-match |
+| raise.rb:134:10:134:19 | ExceptionB | raise.rb:135:5:135:21 | self | match |
+| raise.rb:142:1:148:3 | enter m12 | raise.rb:143:3:145:5 | if ... | false |
+| raise.rb:142:1:148:3 | enter m12 | raise.rb:144:5:144:12 | self | true |
+| raise.rb:155:16:155:50 | enter { ... } | raise.rb:155:25:155:32 | self | true |
+| raise.rb:155:16:155:50 | enter { ... } | raise.rb:155:25:155:48 | ... if ... | false |
+| raise.rb:160:9:162:7 | enter -> { ... } | raise.rb:161:7:161:14 | self | false |
+| raise.rb:160:9:162:7 | enter -> { ... } | raise.rb:161:7:161:23 | ... unless ... | true |
+| raise.rb:172:1:182:3 | enter m16 | raise.rb:174:8:174:23 | [false] ... \|\| ... | false |
+| raise.rb:172:1:182:3 | enter m16 | raise.rb:174:14:174:15 | b2 | false |
+| raise.rb:172:1:182:3 | enter m16 | raise.rb:177:14:177:14 | 2 | false |
+| raise.rb:174:8:174:23 | [false] ... \|\| ... | raise.rb:177:14:177:14 | 2 | false |
+| raise.rb:174:8:174:23 | [true] ... \|\| ... | raise.rb:175:14:175:14 | 1 | true |
+| raise.rb:174:14:174:15 | b2 | raise.rb:174:8:174:23 | [false] ... \|\| ... | false |
+| raise.rb:174:14:174:15 | b2 | raise.rb:177:14:177:14 | 2 | false |
+| raise.rb:179:10:179:19 | ExceptionA | raise.rb:180:12:180:12 | 3 | match |
+successor
+| break_ensure.rb:2:3:6:5 | while ... | break_ensure.rb:8:3:10:5 | if ... | false |
+| break_ensure.rb:2:3:6:5 | while ... | break_ensure.rb:9:5:9:23 | self | true |
+| break_ensure.rb:2:9:2:9 | x | break_ensure.rb:2:3:6:5 | while ... | false |
+| break_ensure.rb:2:9:2:9 | x | break_ensure.rb:3:8:3:8 | x | true |
+| break_ensure.rb:2:9:2:9 | x | break_ensure.rb:8:6:8:13 | [ensure: raise] self | raise |
+| break_ensure.rb:3:8:3:8 | x | break_ensure.rb:2:3:6:5 | while ... | raise |
+| break_ensure.rb:3:8:3:8 | x | break_ensure.rb:3:5:5:7 | if ... | false |
+| break_ensure.rb:3:8:3:8 | x | break_ensure.rb:4:7:4:11 | break | true |
+| break_ensure.rb:8:6:8:13 | [ensure: raise] self | break_ensure.rb:8:3:10:5 | [ensure: raise] if ... | false |
+| break_ensure.rb:8:6:8:13 | [ensure: raise] self | break_ensure.rb:9:5:9:23 | [ensure: raise] self | true |
+| break_ensure.rb:14:9:14:9 | x | break_ensure.rb:14:3:24:5 | while ... | false |
+| break_ensure.rb:14:9:14:9 | x | break_ensure.rb:16:10:16:10 | x | true |
+| break_ensure.rb:16:7:18:9 | if ... | break_ensure.rb:20:7:22:9 | if ... | false |
+| break_ensure.rb:16:7:18:9 | if ... | break_ensure.rb:21:9:21:20 | self | true |
+| break_ensure.rb:16:10:16:10 | x | break_ensure.rb:16:7:18:9 | if ... | false |
+| break_ensure.rb:16:10:16:10 | x | break_ensure.rb:17:9:17:13 | break | true |
+| break_ensure.rb:16:10:16:10 | x | break_ensure.rb:20:10:20:10 | [ensure: raise] y | raise |
+| break_ensure.rb:17:9:17:13 | break | break_ensure.rb:20:7:22:9 | [ensure: break] if ... | false |
+| break_ensure.rb:17:9:17:13 | break | break_ensure.rb:21:9:21:20 | [ensure: break] self | true |
+| break_ensure.rb:20:10:20:10 | [ensure: raise] y | break_ensure.rb:20:7:22:9 | [ensure: raise] if ... | false |
+| break_ensure.rb:20:10:20:10 | [ensure: raise] y | break_ensure.rb:21:9:21:20 | [ensure: raise] self | true |
+| break_ensure.rb:27:1:42:3 | enter m3 | break_ensure.rb:29:5:31:7 | if ... | false |
+| break_ensure.rb:27:1:42:3 | enter m3 | break_ensure.rb:30:7:30:12 | return | true |
+| break_ensure.rb:27:1:42:3 | enter m3 | break_ensure.rb:33:11:33:11 | [ensure: raise] y | raise |
+| break_ensure.rb:33:11:33:11 | [ensure: raise] y | break_ensure.rb:33:5:39:7 | [ensure: raise] while ... | false |
+| break_ensure.rb:33:11:33:11 | [ensure: raise] y | break_ensure.rb:35:12:35:12 | [ensure: raise] x | true |
+| break_ensure.rb:33:11:33:11 | [ensure: return] y | break_ensure.rb:33:5:39:7 | [ensure: return] while ... | false |
+| break_ensure.rb:33:11:33:11 | [ensure: return] y | break_ensure.rb:35:12:35:12 | [ensure: return] x | true |
+| break_ensure.rb:33:11:33:11 | y | break_ensure.rb:33:5:39:7 | while ... | false |
+| break_ensure.rb:33:11:33:11 | y | break_ensure.rb:35:12:35:12 | x | true |
+| break_ensure.rb:35:12:35:12 | [ensure: raise] x | break_ensure.rb:35:9:37:11 | [ensure: raise] if ... | false |
+| break_ensure.rb:35:12:35:12 | [ensure: raise] x | break_ensure.rb:36:11:36:15 | [ensure: raise] break | true |
+| break_ensure.rb:35:12:35:12 | [ensure: return] x | break_ensure.rb:35:9:37:11 | [ensure: return] if ... | false |
+| break_ensure.rb:35:12:35:12 | [ensure: return] x | break_ensure.rb:36:11:36:15 | [ensure: return] break | true |
+| break_ensure.rb:35:12:35:12 | x | break_ensure.rb:35:9:37:11 | if ... | false |
+| break_ensure.rb:35:12:35:12 | x | break_ensure.rb:36:11:36:15 | break | true |
+| break_ensure.rb:45:9:45:9 | x | break_ensure.rb:45:3:55:5 | while ... | false |
+| break_ensure.rb:45:9:45:9 | x | break_ensure.rb:47:10:47:10 | x | true |
+| break_ensure.rb:47:7:49:9 | if ... | break_ensure.rb:51:7:53:9 | if ... | false |
+| break_ensure.rb:47:7:49:9 | if ... | break_ensure.rb:52:15:52:16 | 10 | true |
+| break_ensure.rb:47:10:47:10 | x | break_ensure.rb:47:7:49:9 | if ... | false |
+| break_ensure.rb:47:10:47:10 | x | break_ensure.rb:48:9:48:16 | self | true |
+| break_ensure.rb:47:10:47:10 | x | break_ensure.rb:51:10:51:10 | [ensure: raise] x | raise |
+| break_ensure.rb:51:10:51:10 | [ensure: raise] x | break_ensure.rb:51:7:53:9 | [ensure: raise] if ... | false |
+| break_ensure.rb:51:10:51:10 | [ensure: raise] x | break_ensure.rb:52:15:52:16 | [ensure: raise] 10 | true |
+| case.rb:1:1:6:3 | enter if_in_case | case.rb:3:5:3:42 | [match] when ... | match |
+| case.rb:1:1:6:3 | enter if_in_case | case.rb:3:5:3:42 | [no-match] when ... | no-match |
+| case.rb:3:5:3:42 | [match] when ... | case.rb:3:21:3:22 | self | match |
+| case.rb:3:5:3:42 | [no-match] when ... | case.rb:4:10:4:10 | 2 | no-match |
+| case.rb:3:21:3:22 | self | case.rb:3:18:3:41 | if ... | false |
+| case.rb:3:21:3:22 | self | case.rb:3:29:3:37 | self | true |
+| case.rb:4:5:4:24 | [match] when ... | case.rb:4:17:4:24 | self | match |
+| case.rb:4:5:4:24 | [no-match] when ... | case.rb:2:3:5:5 | case ... | no-match |
+| case.rb:4:10:4:10 | 2 | case.rb:4:5:4:24 | [match] when ... | match |
+| case.rb:4:10:4:10 | 2 | case.rb:4:5:4:24 | [no-match] when ... | no-match |
+| case.rb:8:1:18:3 | enter case_match | case.rb:9:3:17:5 | case ... | match |
+| case.rb:8:1:18:3 | enter case_match | case.rb:11:5:11:15 | in ... then ... | no-match |
+| case.rb:11:5:11:15 | in ... then ... | case.rb:11:15:11:15 | 3 | match |
+| case.rb:11:5:11:15 | in ... then ... | case.rb:12:5:13:7 | in ... then ... | no-match |
+| case.rb:12:5:13:7 | in ... then ... | case.rb:13:7:13:7 | 4 | match |
+| case.rb:12:5:13:7 | in ... then ... | case.rb:14:5:14:25 | in ... then ... | no-match |
+| case.rb:14:5:14:25 | in ... then ... | case.rb:14:13:14:13 | x | match |
+| case.rb:14:13:14:13 | x | case.rb:14:25:14:25 | 6 | true |
+| case.rb:14:13:14:13 | x | case.rb:15:5:15:28 | in ... then ... | false |
+| case.rb:15:5:15:28 | in ... then ... | case.rb:15:17:15:17 | x | match |
+| case.rb:15:17:15:17 | x | case.rb:15:28:15:28 | 7 | false |
+| case.rb:15:17:15:17 | x | case.rb:16:10:16:10 | 8 | true |
+| case.rb:20:1:24:3 | enter case_match_no_match | case.rb:20:1:24:3 | exit case_match_no_match (abnormal) | raise |
+| case.rb:20:1:24:3 | enter case_match_no_match | case.rb:21:3:23:5 | case ... | match |
+| case.rb:26:1:30:3 | enter case_match_raise | case.rb:26:1:30:3 | exit case_match_raise (abnormal) | raise |
+| case.rb:26:1:30:3 | enter case_match_raise | case.rb:27:3:29:5 | case ... | match |
+| case.rb:32:1:39:3 | enter case_match_array | case.rb:33:3:38:5 | case ... | match |
+| case.rb:32:1:39:3 | enter case_match_array | case.rb:35:5:35:11 | in ... then ... | no-match |
+| case.rb:35:5:35:11 | in ... then ... | case.rb:35:9:35:9 | x | false |
+| case.rb:35:5:35:11 | in ... then ... | case.rb:35:9:35:9 | x | match |
+| case.rb:35:5:35:11 | in ... then ... | case.rb:35:9:35:9 | x | true |
+| case.rb:35:5:35:11 | in ... then ... | case.rb:36:5:36:13 | in ... then ... | no-match |
+| case.rb:35:9:35:9 | x | case.rb:33:3:38:5 | case ... | match |
+| case.rb:36:5:36:13 | in ... then ... | case.rb:36:9:36:9 | x | false |
+| case.rb:36:5:36:13 | in ... then ... | case.rb:36:9:36:9 | x | match |
+| case.rb:36:5:36:13 | in ... then ... | case.rb:36:9:36:9 | x | true |
+| case.rb:36:5:36:13 | in ... then ... | case.rb:37:5:37:27 | in ... then ... | no-match |
+| case.rb:36:9:36:9 | x | case.rb:33:3:38:5 | case ... | match |
+| case.rb:37:5:37:27 | in ... then ... | case.rb:32:1:39:3 | exit case_match_array (abnormal) | raise |
+| case.rb:37:5:37:27 | in ... then ... | case.rb:37:8:37:26 | [ ..., * ] | match |
+| case.rb:37:8:37:26 | [ ..., * ] | case.rb:32:1:39:3 | exit case_match_array (abnormal) | raise |
+| case.rb:37:8:37:26 | [ ..., * ] | case.rb:37:12:37:12 | a | false |
+| case.rb:37:8:37:26 | [ ..., * ] | case.rb:37:12:37:12 | a | match |
+| case.rb:37:8:37:26 | [ ..., * ] | case.rb:37:12:37:12 | a | true |
+| case.rb:37:12:37:12 | a | case.rb:37:15:37:15 | b | match |
+| case.rb:37:15:37:15 | b | case.rb:37:19:37:19 | c | match |
+| case.rb:37:19:37:19 | c | case.rb:37:25:37:25 | e | match |
+| case.rb:37:25:37:25 | e | case.rb:33:3:38:5 | case ... | match |
+| case.rb:41:1:45:3 | enter case_match_find | case.rb:41:1:45:3 | exit case_match_find (abnormal) | raise |
+| case.rb:41:1:45:3 | enter case_match_find | case.rb:43:10:43:10 | x | false |
+| case.rb:41:1:45:3 | enter case_match_find | case.rb:43:10:43:10 | x | match |
+| case.rb:41:1:45:3 | enter case_match_find | case.rb:43:10:43:10 | x | true |
+| case.rb:43:10:43:10 | x | case.rb:41:1:45:3 | exit case_match_find (abnormal) | raise |
+| case.rb:43:10:43:10 | x | case.rb:43:16:43:16 | 2 | match |
+| case.rb:43:16:43:16 | 2 | case.rb:41:1:45:3 | exit case_match_find (abnormal) | raise |
+| case.rb:43:16:43:16 | 2 | case.rb:43:20:43:20 | y | match |
+| case.rb:47:1:53:3 | enter case_match_hash | case.rb:49:8:49:34 | { ..., ** } | match |
+| case.rb:47:1:53:3 | enter case_match_hash | case.rb:50:5:50:25 | in ... then ... | no-match |
+| case.rb:49:8:49:34 | { ..., ** } | case.rb:49:20:49:20 | 1 | false |
+| case.rb:49:8:49:34 | { ..., ** } | case.rb:49:20:49:20 | 1 | match |
+| case.rb:49:8:49:34 | { ..., ** } | case.rb:49:20:49:20 | 1 | true |
+| case.rb:49:8:49:34 | { ..., ** } | case.rb:50:5:50:25 | in ... then ... | no-match |
+| case.rb:49:20:49:20 | 1 | case.rb:49:23:49:23 | a | match |
+| case.rb:49:20:49:20 | 1 | case.rb:50:5:50:25 | in ... then ... | no-match |
+| case.rb:49:23:49:23 | a | case.rb:49:29:49:32 | rest | match |
+| case.rb:50:5:50:25 | in ... then ... | case.rb:50:8:50:24 | { ..., ** } | match |
+| case.rb:50:5:50:25 | in ... then ... | case.rb:51:5:51:17 | in ... then ... | no-match |
+| case.rb:50:8:50:24 | { ..., ** } | case.rb:50:16:50:16 | 1 | false |
+| case.rb:50:8:50:24 | { ..., ** } | case.rb:50:16:50:16 | 1 | match |
+| case.rb:50:8:50:24 | { ..., ** } | case.rb:50:16:50:16 | 1 | true |
+| case.rb:50:8:50:24 | { ..., ** } | case.rb:51:5:51:17 | in ... then ... | no-match |
+| case.rb:50:16:50:16 | 1 | case.rb:48:3:52:5 | case ... | match |
+| case.rb:50:16:50:16 | 1 | case.rb:51:5:51:17 | in ... then ... | no-match |
+| case.rb:51:5:51:17 | in ... then ... | case.rb:47:1:53:3 | exit case_match_hash (abnormal) | raise |
+| case.rb:51:5:51:17 | in ... then ... | case.rb:51:8:51:16 | { ..., ** } | match |
+| case.rb:51:8:51:16 | { ..., ** } | case.rb:47:1:53:3 | exit case_match_hash (abnormal) | raise |
+| case.rb:51:8:51:16 | { ..., ** } | case.rb:48:3:52:5 | case ... | false |
+| case.rb:51:8:51:16 | { ..., ** } | case.rb:48:3:52:5 | case ... | match |
+| case.rb:51:8:51:16 | { ..., ** } | case.rb:48:3:52:5 | case ... | true |
+| case.rb:55:1:61:3 | enter case_match_variable | case.rb:56:3:60:5 | case ... | match |
+| case.rb:55:1:61:3 | enter case_match_variable | case.rb:58:5:58:10 | in ... then ... | no-match |
+| case.rb:58:5:58:10 | in ... then ... | case.rb:56:3:60:5 | case ... | match |
+| case.rb:63:1:67:3 | enter case_match_underscore | case.rb:64:3:66:5 | case ... | match |
+| case.rb:63:1:67:3 | enter case_match_underscore | case.rb:65:12:65:12 | _ | no-match |
+| case.rb:65:12:65:12 | _ | case.rb:64:3:66:5 | case ... | match |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:72:3:92:5 | case ... | match |
+| case.rb:69:1:93:3 | enter case_match_various | case.rb:74:5:74:11 | in ... then ... | no-match |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:72:3:92:5 | case ... | match |
+| case.rb:74:5:74:11 | in ... then ... | case.rb:75:5:75:15 | in ... then ... | no-match |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:72:3:92:5 | case ... | match |
+| case.rb:75:5:75:15 | in ... then ... | case.rb:76:5:76:18 | in ... then ... | no-match |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:72:3:92:5 | case ... | match |
+| case.rb:76:5:76:18 | in ... then ... | case.rb:77:5:77:18 | in ... then ... | no-match |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:72:3:92:5 | case ... | match |
+| case.rb:77:5:77:18 | in ... then ... | case.rb:78:5:78:19 | in ... then ... | no-match |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:72:3:92:5 | case ... | match |
+| case.rb:78:5:78:19 | in ... then ... | case.rb:79:5:79:14 | in ... then ... | no-match |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:72:3:92:5 | case ... | match |
+| case.rb:79:5:79:14 | in ... then ... | case.rb:80:5:80:12 | in ... then ... | no-match |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:72:3:92:5 | case ... | match |
+| case.rb:80:5:80:12 | in ... then ... | case.rb:81:5:81:11 | in ... then ... | no-match |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:72:3:92:5 | case ... | match |
+| case.rb:81:5:81:11 | in ... then ... | case.rb:82:5:82:20 | in ... then ... | no-match |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:82:13:82:13 | x | match |
+| case.rb:82:5:82:20 | in ... then ... | case.rb:83:5:83:26 | in ... then ... | no-match |
+| case.rb:82:13:82:13 | x | case.rb:82:20:82:20 | 1 | match |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:72:3:92:5 | case ... | match |
+| case.rb:83:5:83:26 | in ... then ... | case.rb:83:12:83:15 | ^... | no-match |
+| case.rb:83:12:83:15 | ^... | case.rb:72:3:92:5 | case ... | match |
+| case.rb:83:12:83:15 | ^... | case.rb:83:20:83:25 | string | no-match |
+| case.rb:83:20:83:25 | string | case.rb:72:3:92:5 | case ... | match |
+| case.rb:83:20:83:25 | string | case.rb:84:5:84:17 | in ... then ... | no-match |
+| case.rb:84:5:84:17 | in ... then ... | case.rb:72:3:92:5 | case ... | match |
+| case.rb:84:5:84:17 | in ... then ... | case.rb:85:5:85:23 | in ... then ... | no-match |
+| case.rb:85:5:85:23 | in ... then ... | case.rb:72:3:92:5 | case ... | match |
+| case.rb:85:5:85:23 | in ... then ... | case.rb:86:5:86:11 | in ... then ... | no-match |
+| case.rb:86:5:86:11 | in ... then ... | case.rb:72:3:92:5 | case ... | match |
+| case.rb:86:5:86:11 | in ... then ... | case.rb:87:5:87:17 | in ... then ... | no-match |
+| case.rb:87:5:87:17 | in ... then ... | case.rb:72:3:92:5 | case ... | match |
+| case.rb:87:5:87:17 | in ... then ... | case.rb:88:5:88:15 | in ... then ... | no-match |
+| case.rb:88:5:88:15 | in ... then ... | case.rb:72:3:92:5 | case ... | match |
+| case.rb:88:5:88:15 | in ... then ... | case.rb:88:14:88:15 | 10 | no-match |
+| case.rb:88:14:88:15 | 10 | case.rb:72:3:92:5 | case ... | match |
+| case.rb:88:14:88:15 | 10 | case.rb:89:5:89:69 | in ... then ... | no-match |
+| case.rb:89:5:89:69 | in ... then ... | case.rb:72:3:92:5 | case ... | match |
+| case.rb:89:5:89:69 | in ... then ... | case.rb:89:14:89:17 | self | no-match |
+| case.rb:89:14:89:17 | self | case.rb:72:3:92:5 | case ... | match |
+| case.rb:89:14:89:17 | self | case.rb:89:21:89:24 | true | no-match |
+| case.rb:89:21:89:24 | true | case.rb:72:3:92:5 | case ... | match |
+| case.rb:89:21:89:24 | true | case.rb:89:28:89:32 | false | no-match |
+| case.rb:89:28:89:32 | false | case.rb:72:3:92:5 | case ... | match |
+| case.rb:89:28:89:32 | false | case.rb:89:36:89:43 | __LINE__ | no-match |
+| case.rb:89:36:89:43 | __LINE__ | case.rb:72:3:92:5 | case ... | match |
+| case.rb:89:36:89:43 | __LINE__ | case.rb:89:47:89:54 | __FILE__ | no-match |
+| case.rb:89:47:89:54 | __FILE__ | case.rb:72:3:92:5 | case ... | match |
+| case.rb:89:47:89:54 | __FILE__ | case.rb:89:58:89:69 | __ENCODING__ | no-match |
+| case.rb:89:58:89:69 | __ENCODING__ | case.rb:72:3:92:5 | case ... | match |
+| case.rb:89:58:89:69 | __ENCODING__ | case.rb:90:5:90:13 | in ... then ... | no-match |
+| case.rb:90:5:90:13 | in ... then ... | case.rb:72:3:92:5 | case ... | match |
+| case.rb:90:5:90:13 | in ... then ... | case.rb:91:5:91:25 | in ... then ... | no-match |
+| case.rb:91:5:91:25 | in ... then ... | case.rb:72:3:92:5 | case ... | match |
+| case.rb:91:5:91:25 | in ... then ... | case.rb:91:13:91:14 | "" | no-match |
+| case.rb:91:13:91:14 | "" | case.rb:72:3:92:5 | case ... | match |
+| case.rb:91:13:91:14 | "" | case.rb:91:18:91:19 | [ ..., * ] | no-match |
+| case.rb:91:18:91:19 | [ ..., * ] | case.rb:72:3:92:5 | case ... | match |
+| case.rb:91:18:91:19 | [ ..., * ] | case.rb:91:23:91:24 | { ..., ** } | no-match |
+| case.rb:91:23:91:24 | { ..., ** } | case.rb:69:1:93:3 | exit case_match_various (abnormal) | raise |
+| case.rb:91:23:91:24 | { ..., ** } | case.rb:72:3:92:5 | case ... | false |
+| case.rb:91:23:91:24 | { ..., ** } | case.rb:72:3:92:5 | case ... | match |
+| case.rb:91:23:91:24 | { ..., ** } | case.rb:72:3:92:5 | case ... | true |
+| case.rb:95:1:99:3 | enter case_match_guard_no_else | case.rb:97:13:97:13 | x | match |
+| case.rb:97:13:97:13 | x | case.rb:95:1:99:3 | exit case_match_guard_no_else (abnormal) | raise |
+| case.rb:97:13:97:13 | x | case.rb:97:25:97:25 | 6 | true |
+| cfg.html.erb:5:16:31:12 | enter cfg.html.erb | cfg.html.erb:19:19:19:32 | self | true |
+| cfg.html.erb:5:16:31:12 | enter cfg.html.erb | cfg.html.erb:21:19:21:32 | self | false |
+| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:32:9:32:9 | 1 | true |
+| cfg.rb:32:9:32:9 | 1 | cfg.rb:35:1:37:3 | if ... | false |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:42:3:42:24 | [match] when ... | match |
+| cfg.rb:35:1:37:3 | if ... | cfg.rb:42:3:42:24 | [no-match] when ... | no-match |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:48:3:48:29 | [false] when ... | false |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:48:3:48:29 | [true] when ... | true |
+| cfg.rb:42:3:42:24 | [match] when ... | cfg.rb:42:15:42:24 | self | match |
+| cfg.rb:42:3:42:24 | [no-match] when ... | cfg.rb:43:8:43:8 | 2 | no-match |
+| cfg.rb:43:3:43:31 | [match] when ... | cfg.rb:43:21:43:31 | self | match |
+| cfg.rb:43:3:43:31 | [no-match] when ... | cfg.rb:44:8:44:18 | self | no-match |
+| cfg.rb:43:8:43:8 | 2 | cfg.rb:43:3:43:31 | [match] when ... | match |
+| cfg.rb:43:8:43:8 | 2 | cfg.rb:43:11:43:11 | 3 | no-match |
+| cfg.rb:43:11:43:11 | 3 | cfg.rb:43:3:43:31 | [match] when ... | match |
+| cfg.rb:43:11:43:11 | 3 | cfg.rb:43:14:43:14 | 4 | no-match |
+| cfg.rb:43:14:43:14 | 4 | cfg.rb:43:3:43:31 | [match] when ... | match |
+| cfg.rb:43:14:43:14 | 4 | cfg.rb:43:3:43:31 | [no-match] when ... | no-match |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:60:27:60:31 | hello | true |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:60:37:60:39 | bye | false |
+| cfg.rb:48:3:48:29 | [false] when ... | cfg.rb:49:8:49:8 | b | false |
+| cfg.rb:48:3:48:29 | [true] when ... | cfg.rb:48:20:48:29 | self | true |
+| cfg.rb:49:3:49:37 | [false] when ... | cfg.rb:47:1:50:3 | case ... | false |
+| cfg.rb:49:3:49:37 | [true] when ... | cfg.rb:49:27:49:37 | self | true |
+| cfg.rb:49:8:49:8 | b | cfg.rb:49:3:49:37 | [true] when ... | true |
+| cfg.rb:49:8:49:8 | b | cfg.rb:49:16:49:16 | b | false |
+| cfg.rb:49:16:49:16 | b | cfg.rb:49:3:49:37 | [false] when ... | false |
+| cfg.rb:49:16:49:16 | b | cfg.rb:49:3:49:37 | [true] when ... | true |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:75:15:75:15 | 0 | true |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:75:23:75:23 | x | false |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:90:5:90:5 | [false] ! ... | true |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:90:5:90:5 | [true] ! ... | false |
+| cfg.rb:75:23:75:23 | x | cfg.rb:75:35:75:36 | 10 | true |
+| cfg.rb:75:23:75:23 | x | cfg.rb:75:43:75:43 | x | false |
+| cfg.rb:90:1:93:3 | enter { ... } | cfg.rb:91:3:91:24 | if ... | false |
+| cfg.rb:90:1:93:3 | enter { ... } | cfg.rb:91:17:91:20 | next | true |
+| cfg.rb:90:5:90:5 | [false] ! ... | cfg.rb:90:5:90:5 | if ... | false |
+| cfg.rb:90:5:90:5 | [true] ! ... | cfg.rb:90:5:90:5 | x | true |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:113:1:113:9 | self | true |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:113:1:113:19 | ... if ... | false |
+| cfg.rb:101:1:104:3 | enter parameters | cfg.rb:101:24:101:25 | 42 | false |
+| cfg.rb:101:1:104:3 | enter parameters | cfg.rb:101:24:101:25 | 42 | no-match |
+| cfg.rb:101:1:104:3 | enter parameters | cfg.rb:101:24:101:25 | 42 | true |
+| cfg.rb:101:1:104:3 | enter parameters | cfg.rb:101:28:101:30 | key | match |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:172:21:172:29 | self | false |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:172:36:172:45 | self | true |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:174:1:174:9 | self | false |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:174:1:174:23 | ... unless ... | true |
+| cfg.rb:176:7:176:7 | x | cfg.rb:176:1:176:41 | until ... | true |
+| cfg.rb:176:7:176:7 | x | cfg.rb:176:17:176:17 | x | false |
+| cfg.rb:179:30:179:30 | i | cfg.rb:179:1:179:36 | ... until ... | true |
+| cfg.rb:179:30:179:30 | i | cfg.rb:179:2:179:13 | self | false |
+| cfg.rb:182:7:182:7 | x | cfg.rb:182:1:186:3 | while ... | false |
+| cfg.rb:182:7:182:7 | x | cfg.rb:183:3:183:3 | x | true |
+| cfg.rb:183:3:183:3 | x | cfg.rb:184:3:184:25 | if ... | false |
+| cfg.rb:183:3:183:3 | x | cfg.rb:184:18:184:21 | redo | true |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:205:1:205:3 | __synth__0__1 | false |
+| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:205:1:205:3 | nil | true |
+| cfg.rb:188:30:188:30 | i | cfg.rb:188:1:188:35 | ... while ... | false |
+| cfg.rb:188:30:188:30 | i | cfg.rb:188:2:188:13 | self | true |
+| constant_compound_assign.rb:1:1:22:4 | enter constant_compound_assign.rb | constant_compound_assign.rb:5:18:5:20 | ... \|\| ... | true |
+| constant_compound_assign.rb:1:1:22:4 | enter constant_compound_assign.rb | constant_compound_assign.rb:5:22:5:24 | 123 | false |
+| constant_compound_assign.rb:5:18:5:20 | ... \|\| ... | constant_compound_assign.rb:14:14:14:16 | ... \|\| ... | true |
+| constant_compound_assign.rb:5:18:5:20 | ... \|\| ... | constant_compound_assign.rb:14:18:14:20 | 123 | false |
+| constant_compound_assign.rb:14:14:14:16 | ... \|\| ... | constant_compound_assign.rb:19:17:19:19 | ... \|\| ... | true |
+| constant_compound_assign.rb:14:14:14:16 | ... \|\| ... | constant_compound_assign.rb:19:21:19:23 | 123 | false |
+| exit.rb:1:1:6:3 | enter m1 | exit.rb:2:3:4:5 | if ... | false |
+| exit.rb:1:1:6:3 | enter m1 | exit.rb:3:5:3:10 | self | true |
+| exit.rb:8:1:13:3 | enter m2 | exit.rb:9:3:11:5 | if ... | false |
+| exit.rb:8:1:13:3 | enter m2 | exit.rb:10:5:10:18 | self | true |
+| ifs.rb:1:1:9:3 | enter m1 | ifs.rb:3:5:3:30 | self | true |
+| ifs.rb:1:1:9:3 | enter m1 | ifs.rb:4:9:4:9 | x | false |
+| ifs.rb:1:1:58:4 | enter ifs.rb | ifs.rb:36:1:38:3 | conditional_method_def | false |
+| ifs.rb:1:1:58:4 | enter ifs.rb | ifs.rb:36:1:38:17 | ... unless ... | true |
+| ifs.rb:4:9:4:9 | x | ifs.rb:4:9:4:24 | [false] ... and ... | false |
+| ifs.rb:4:9:4:9 | x | ifs.rb:4:20:4:20 | x | true |
+| ifs.rb:4:9:4:24 | [false] ... and ... | ifs.rb:4:9:4:38 | [false] ... and ... | false |
+| ifs.rb:4:9:4:24 | [true] ... and ... | ifs.rb:4:32:4:32 | x | true |
+| ifs.rb:4:9:4:38 | [false] ... and ... | ifs.rb:7:5:7:35 | self | false |
+| ifs.rb:4:9:4:38 | [true] ... and ... | ifs.rb:5:5:5:17 | self | true |
+| ifs.rb:4:20:4:20 | x | ifs.rb:4:9:4:24 | [false] ... and ... | false |
+| ifs.rb:4:20:4:20 | x | ifs.rb:4:9:4:24 | [true] ... and ... | true |
+| ifs.rb:4:30:4:38 | [false] ! ... | ifs.rb:4:9:4:38 | [false] ... and ... | false |
+| ifs.rb:4:30:4:38 | [true] ! ... | ifs.rb:4:9:4:38 | [true] ... and ... | true |
+| ifs.rb:4:31:4:38 | [false] ( ... ) | ifs.rb:4:30:4:38 | [true] ! ... | false |
+| ifs.rb:4:31:4:38 | [true] ( ... ) | ifs.rb:4:30:4:38 | [false] ! ... | true |
+| ifs.rb:4:32:4:32 | x | ifs.rb:4:31:4:38 | [false] ( ... ) | false |
+| ifs.rb:4:32:4:32 | x | ifs.rb:4:31:4:38 | [true] ( ... ) | true |
+| ifs.rb:11:1:16:3 | enter m2 | ifs.rb:12:3:14:5 | if ... | false |
+| ifs.rb:11:1:16:3 | enter m2 | ifs.rb:13:12:13:12 | 0 | true |
+| ifs.rb:18:1:26:3 | enter m3 | ifs.rb:19:3:24:5 | if ... | false |
+| ifs.rb:18:1:26:3 | enter m3 | ifs.rb:20:5:20:5 | x | true |
+| ifs.rb:20:5:20:5 | x | ifs.rb:21:5:23:7 | if ... | false |
+| ifs.rb:20:5:20:5 | x | ifs.rb:22:7:22:7 | x | true |
+| ifs.rb:28:1:30:3 | enter m4 | ifs.rb:29:16:29:17 | b2 | true |
+| ifs.rb:28:1:30:3 | enter m4 | ifs.rb:29:21:29:22 | b3 | false |
+| ifs.rb:29:10:29:23 | [false] ( ... ) | ifs.rb:29:41:29:50 | !b2 \|\| !b3 | false |
+| ifs.rb:29:10:29:23 | [true] ( ... ) | ifs.rb:29:28:29:35 | b2 \|\| b3 | true |
+| ifs.rb:29:11:29:22 | [false] ... ? ... : ... | ifs.rb:29:10:29:23 | [false] ( ... ) | false |
+| ifs.rb:29:11:29:22 | [true] ... ? ... : ... | ifs.rb:29:10:29:23 | [true] ( ... ) | true |
+| ifs.rb:29:16:29:17 | b2 | ifs.rb:29:11:29:22 | [false] ... ? ... : ... | false |
+| ifs.rb:29:16:29:17 | b2 | ifs.rb:29:11:29:22 | [true] ... ? ... : ... | true |
+| ifs.rb:29:21:29:22 | b3 | ifs.rb:29:11:29:22 | [false] ... ? ... : ... | false |
+| ifs.rb:29:21:29:22 | b3 | ifs.rb:29:11:29:22 | [true] ... ? ... : ... | true |
+| ifs.rb:32:1:34:3 | enter m5 | ifs.rb:33:18:33:19 | b2 | true |
+| ifs.rb:32:1:34:3 | enter m5 | ifs.rb:33:27:33:28 | b3 | false |
+| ifs.rb:33:6:33:49 | [false] ( ... ) | ifs.rb:33:79:33:95 | !b2 \|\| !b4 \|\| !b5 | false |
+| ifs.rb:33:6:33:49 | [true] ( ... ) | ifs.rb:33:57:33:70 | b2 \|\| b4 \|\| b5 | true |
+| ifs.rb:33:7:33:48 | [false] if ... | ifs.rb:33:6:33:49 | [false] ( ... ) | false |
+| ifs.rb:33:7:33:48 | [true] if ... | ifs.rb:33:6:33:49 | [true] ( ... ) | true |
+| ifs.rb:33:13:33:19 | [false] then ... | ifs.rb:33:7:33:48 | [false] if ... | false |
+| ifs.rb:33:13:33:19 | [true] then ... | ifs.rb:33:7:33:48 | [true] if ... | true |
+| ifs.rb:33:18:33:19 | b2 | ifs.rb:33:13:33:19 | [false] then ... | false |
+| ifs.rb:33:18:33:19 | b2 | ifs.rb:33:13:33:19 | [true] then ... | true |
+| ifs.rb:33:21:33:44 | [false] elsif ... | ifs.rb:33:7:33:48 | [false] if ... | false |
+| ifs.rb:33:21:33:44 | [true] elsif ... | ifs.rb:33:7:33:48 | [true] if ... | true |
+| ifs.rb:33:27:33:28 | b3 | ifs.rb:33:35:33:36 | b4 | true |
+| ifs.rb:33:27:33:28 | b3 | ifs.rb:33:43:33:44 | b5 | false |
+| ifs.rb:33:30:33:36 | [false] then ... | ifs.rb:33:21:33:44 | [false] elsif ... | false |
+| ifs.rb:33:30:33:36 | [true] then ... | ifs.rb:33:21:33:44 | [true] elsif ... | true |
+| ifs.rb:33:35:33:36 | b4 | ifs.rb:33:30:33:36 | [false] then ... | false |
+| ifs.rb:33:35:33:36 | b4 | ifs.rb:33:30:33:36 | [true] then ... | true |
+| ifs.rb:33:38:33:44 | [false] else ... | ifs.rb:33:21:33:44 | [false] elsif ... | false |
+| ifs.rb:33:38:33:44 | [true] else ... | ifs.rb:33:21:33:44 | [true] elsif ... | true |
+| ifs.rb:33:43:33:44 | b5 | ifs.rb:33:38:33:44 | [false] else ... | false |
+| ifs.rb:33:43:33:44 | b5 | ifs.rb:33:38:33:44 | [true] else ... | true |
+| ifs.rb:40:1:44:3 | enter constant_condition | ifs.rb:41:6:41:10 | [false] ! ... | true |
+| ifs.rb:41:6:41:10 | [false] ! ... | ifs.rb:41:3:43:5 | if ... | false |
+| ifs.rb:46:1:52:3 | enter empty_else | ifs.rb:48:5:48:15 | self | true |
+| ifs.rb:46:1:52:3 | enter empty_else | ifs.rb:49:3:49:6 | else ... | false |
+| ifs.rb:54:1:58:3 | enter disjunct | ifs.rb:55:7:55:14 | [true] ... \|\| ... | true |
+| ifs.rb:54:1:58:3 | enter disjunct | ifs.rb:55:13:55:14 | b2 | false |
+| ifs.rb:55:6:55:15 | [false] ( ... ) | ifs.rb:55:3:57:5 | if ... | false |
+| ifs.rb:55:6:55:15 | [true] ( ... ) | ifs.rb:56:5:56:19 | self | true |
+| ifs.rb:55:7:55:14 | [false] ... \|\| ... | ifs.rb:55:6:55:15 | [false] ( ... ) | false |
+| ifs.rb:55:7:55:14 | [true] ... \|\| ... | ifs.rb:55:6:55:15 | [true] ( ... ) | true |
+| ifs.rb:55:13:55:14 | b2 | ifs.rb:55:7:55:14 | [false] ... \|\| ... | false |
+| ifs.rb:55:13:55:14 | b2 | ifs.rb:55:7:55:14 | [true] ... \|\| ... | true |
+| loops.rb:2:9:2:9 | x | loops.rb:2:3:5:5 | while ... | false |
+| loops.rb:2:9:2:9 | x | loops.rb:3:5:3:10 | self | true |
+| loops.rb:9:9:9:9 | x | loops.rb:9:3:20:5 | while ... | false |
+| loops.rb:9:9:9:9 | x | loops.rb:10:5:10:10 | self | true |
+| loops.rb:10:5:10:10 | self | loops.rb:13:7:13:11 | break | true |
+| loops.rb:10:5:10:10 | self | loops.rb:14:11:14:11 | x | false |
+| loops.rb:14:11:14:11 | x | loops.rb:15:7:15:10 | next | true |
+| loops.rb:14:11:14:11 | x | loops.rb:16:11:16:11 | x | false |
+| loops.rb:16:11:16:11 | x | loops.rb:16:5:17:10 | elsif ... | false |
+| loops.rb:16:11:16:11 | x | loops.rb:17:7:17:10 | redo | true |
+| loops.rb:31:9:31:9 | x | loops.rb:31:3:32:5 | while ... | false |
+| loops.rb:31:9:31:9 | x | loops.rb:31:15:32:5 | do ... | true |
+| raise.rb:7:1:12:3 | enter m1 | raise.rb:8:3:10:5 | if ... | false |
+| raise.rb:7:1:12:3 | enter m1 | raise.rb:9:5:9:17 | self | true |
+| raise.rb:14:1:23:3 | enter m2 | raise.rb:16:5:18:7 | if ... | false |
+| raise.rb:14:1:23:3 | enter m2 | raise.rb:17:7:17:22 | self | true |
+| raise.rb:17:7:17:22 | self | raise.rb:14:1:23:3 | exit m2 (abnormal) | raise |
+| raise.rb:17:7:17:22 | self | raise.rb:20:5:20:18 | self | match |
+| raise.rb:25:1:34:3 | enter m3 | raise.rb:27:5:29:7 | if ... | false |
+| raise.rb:25:1:34:3 | enter m3 | raise.rb:28:7:28:22 | self | true |
+| raise.rb:36:1:45:3 | enter m4 | raise.rb:38:5:40:7 | if ... | false |
+| raise.rb:36:1:45:3 | enter m4 | raise.rb:39:7:39:22 | self | true |
+| raise.rb:47:1:55:3 | enter m5 | raise.rb:49:5:51:7 | if ... | false |
+| raise.rb:47:1:55:3 | enter m5 | raise.rb:50:7:50:22 | self | true |
+| raise.rb:57:1:66:3 | enter m6 | raise.rb:59:5:61:7 | if ... | false |
+| raise.rb:57:1:66:3 | enter m6 | raise.rb:60:7:60:22 | self | true |
+| raise.rb:60:7:60:22 | self | raise.rb:62:22:62:31 | ExceptionB | no-match |
+| raise.rb:60:7:60:22 | self | raise.rb:62:36:62:36 | e | match |
+| raise.rb:62:22:62:31 | ExceptionB | raise.rb:57:1:66:3 | exit m6 (abnormal) | raise |
+| raise.rb:62:22:62:31 | ExceptionB | raise.rb:62:36:62:36 | e | match |
+| raise.rb:68:1:77:3 | enter m7 | raise.rb:70:5:70:17 | self | true |
+| raise.rb:68:1:77:3 | enter m7 | raise.rb:71:9:71:9 | x | false |
+| raise.rb:68:1:77:3 | enter m7 | raise.rb:76:3:76:15 | [ensure: raise] self | raise |
+| raise.rb:71:9:71:9 | x | raise.rb:71:3:72:18 | elsif ... | false |
+| raise.rb:71:9:71:9 | x | raise.rb:72:13:72:17 | x < 0 | true |
+| raise.rb:71:9:71:9 | x | raise.rb:76:3:76:15 | [ensure: raise] self | raise |
+| raise.rb:79:1:92:3 | enter m8 | raise.rb:83:7:83:19 | self | true |
+| raise.rb:79:1:92:3 | enter m8 | raise.rb:84:11:84:11 | x | false |
+| raise.rb:79:1:92:3 | enter m8 | raise.rb:89:5:89:17 | [ensure: raise] self | raise |
+| raise.rb:84:11:84:11 | x | raise.rb:84:5:85:20 | elsif ... | false |
+| raise.rb:84:11:84:11 | x | raise.rb:85:15:85:19 | x < 0 | true |
+| raise.rb:84:11:84:11 | x | raise.rb:89:5:89:17 | [ensure: raise] self | raise |
+| raise.rb:97:8:97:8 | x | raise.rb:98:7:98:19 | self | true |
+| raise.rb:97:8:97:8 | x | raise.rb:99:11:99:11 | x | false |
+| raise.rb:97:8:97:8 | x | raise.rb:104:5:104:23 | [ensure: raise] self | raise |
+| raise.rb:99:11:99:11 | x | raise.rb:99:5:100:20 | elsif ... | false |
+| raise.rb:99:11:99:11 | x | raise.rb:100:15:100:19 | x < 0 | true |
+| raise.rb:99:11:99:11 | x | raise.rb:104:5:104:23 | [ensure: raise] self | raise |
+| raise.rb:106:10:106:11 | [ensure: raise] b1 | raise.rb:106:7:108:9 | [ensure: raise] if ... | false |
+| raise.rb:106:10:106:11 | [ensure: raise] b1 | raise.rb:107:9:107:26 | [ensure: raise] self | true |
+| raise.rb:106:10:106:11 | [ensure: return] b1 | raise.rb:106:7:108:9 | [ensure: return] if ... | false |
+| raise.rb:106:10:106:11 | [ensure: return] b1 | raise.rb:107:9:107:26 | [ensure: return] self | true |
+| raise.rb:106:10:106:11 | b1 | raise.rb:106:7:108:9 | if ... | false |
+| raise.rb:106:10:106:11 | b1 | raise.rb:107:9:107:26 | self | true |
+| raise.rb:109:5:110:25 | [ensure: return] ensure ... | raise.rb:116:3:118:5 | [ensure: return] if ... | false |
+| raise.rb:109:5:110:25 | [ensure: return] ensure ... | raise.rb:117:5:117:22 | [ensure: return] self | true |
+| raise.rb:115:3:115:22 | [ensure: raise] self | raise.rb:116:3:118:5 | [ensure: raise] if ... | false |
+| raise.rb:115:3:115:22 | [ensure: raise] self | raise.rb:117:5:117:22 | [ensure: raise] self | true |
+| raise.rb:115:3:115:22 | self | raise.rb:116:3:118:5 | if ... | false |
+| raise.rb:115:3:115:22 | self | raise.rb:117:5:117:22 | self | true |
+| raise.rb:121:1:126:3 | enter m10 | raise.rb:121:14:121:30 | self | false |
+| raise.rb:121:1:126:3 | enter m10 | raise.rb:121:14:121:30 | self | no-match |
+| raise.rb:121:1:126:3 | enter m10 | raise.rb:121:14:121:30 | self | true |
+| raise.rb:121:1:126:3 | enter m10 | raise.rb:125:3:125:51 | self | match |
+| raise.rb:128:1:140:3 | enter m11 | raise.rb:130:5:132:7 | if ... | false |
+| raise.rb:128:1:140:3 | enter m11 | raise.rb:131:7:131:22 | self | true |
+| raise.rb:131:7:131:22 | self | raise.rb:133:3:133:19 | rescue ... | match |
+| raise.rb:131:7:131:22 | self | raise.rb:134:10:134:19 | ExceptionB | no-match |
+| raise.rb:134:10:134:19 | ExceptionB | raise.rb:135:5:135:21 | self | match |
+| raise.rb:134:10:134:19 | ExceptionB | raise.rb:137:5:137:17 | [ensure: raise] self | raise |
+| raise.rb:142:1:148:3 | enter m12 | raise.rb:143:3:145:5 | if ... | false |
+| raise.rb:142:1:148:3 | enter m12 | raise.rb:144:5:144:12 | self | true |
+| raise.rb:155:16:155:50 | enter { ... } | raise.rb:155:25:155:32 | self | true |
+| raise.rb:155:16:155:50 | enter { ... } | raise.rb:155:25:155:48 | ... if ... | false |
+| raise.rb:160:9:162:7 | enter -> { ... } | raise.rb:161:7:161:14 | self | false |
+| raise.rb:160:9:162:7 | enter -> { ... } | raise.rb:161:7:161:23 | ... unless ... | true |
+| raise.rb:172:1:182:3 | enter m16 | raise.rb:174:8:174:23 | [true] ... \|\| ... | true |
+| raise.rb:172:1:182:3 | enter m16 | raise.rb:174:14:174:15 | b2 | false |
+| raise.rb:174:8:174:23 | [false] ... \|\| ... | raise.rb:177:14:177:14 | 2 | false |
+| raise.rb:174:8:174:23 | [false] ... \|\| ... | raise.rb:179:10:179:19 | ExceptionA | raise |
+| raise.rb:174:8:174:23 | [true] ... \|\| ... | raise.rb:175:14:175:14 | 1 | true |
+| raise.rb:174:8:174:23 | [true] ... \|\| ... | raise.rb:179:10:179:19 | ExceptionA | raise |
+| raise.rb:174:14:174:15 | b2 | raise.rb:174:8:174:23 | [false] ... \|\| ... | false |
+| raise.rb:174:14:174:15 | b2 | raise.rb:174:8:174:23 | [true] ... \|\| ... | true |
+| raise.rb:174:14:174:15 | b2 | raise.rb:179:10:179:19 | ExceptionA | raise |
+| raise.rb:179:10:179:19 | ExceptionA | raise.rb:172:1:182:3 | exit m16 (abnormal) | raise |
+| raise.rb:179:10:179:19 | ExceptionA | raise.rb:180:12:180:12 | 3 | match |
+joinBlockPredecessor
+| break_ensure.rb:1:1:11:3 | exit m1 | break_ensure.rb:8:3:10:5 | [ensure: raise] if ... | 1 |
+| break_ensure.rb:1:1:11:3 | exit m1 | break_ensure.rb:8:3:10:5 | if ... | 0 |
+| break_ensure.rb:2:3:6:5 | while ... | break_ensure.rb:2:9:2:9 | x | 0 |
+| break_ensure.rb:2:3:6:5 | while ... | break_ensure.rb:3:8:3:8 | x | 1 |
+| break_ensure.rb:2:3:6:5 | while ... | break_ensure.rb:4:7:4:11 | break | 2 |
+| break_ensure.rb:2:9:2:9 | x | break_ensure.rb:1:1:11:3 | enter m1 | 0 |
+| break_ensure.rb:2:9:2:9 | x | break_ensure.rb:3:5:5:7 | if ... | 1 |
+| break_ensure.rb:8:3:10:5 | [ensure: raise] if ... | break_ensure.rb:8:6:8:13 | [ensure: raise] self | 0 |
+| break_ensure.rb:8:3:10:5 | [ensure: raise] if ... | break_ensure.rb:9:5:9:23 | [ensure: raise] self | 1 |
+| break_ensure.rb:8:3:10:5 | if ... | break_ensure.rb:2:3:6:5 | while ... | 0 |
+| break_ensure.rb:8:3:10:5 | if ... | break_ensure.rb:9:5:9:23 | self | 1 |
+| break_ensure.rb:14:3:24:5 | while ... | break_ensure.rb:14:9:14:9 | x | 0 |
+| break_ensure.rb:14:3:24:5 | while ... | break_ensure.rb:20:7:22:9 | [ensure: break] if ... | 1 |
+| break_ensure.rb:14:3:24:5 | while ... | break_ensure.rb:20:7:22:9 | [ensure: raise] if ... | 2 |
+| break_ensure.rb:14:9:14:9 | x | break_ensure.rb:13:1:25:3 | enter m2 | 0 |
+| break_ensure.rb:14:9:14:9 | x | break_ensure.rb:20:7:22:9 | if ... | 1 |
+| break_ensure.rb:20:7:22:9 | [ensure: break] if ... | break_ensure.rb:17:9:17:13 | break | 0 |
+| break_ensure.rb:20:7:22:9 | [ensure: break] if ... | break_ensure.rb:21:9:21:20 | [ensure: break] self | 1 |
+| break_ensure.rb:20:7:22:9 | [ensure: raise] if ... | break_ensure.rb:20:10:20:10 | [ensure: raise] y | 0 |
+| break_ensure.rb:20:7:22:9 | [ensure: raise] if ... | break_ensure.rb:21:9:21:20 | [ensure: raise] self | 1 |
+| break_ensure.rb:20:7:22:9 | if ... | break_ensure.rb:16:7:18:9 | if ... | 0 |
+| break_ensure.rb:20:7:22:9 | if ... | break_ensure.rb:21:9:21:20 | self | 1 |
+| break_ensure.rb:27:1:42:3 | exit m3 | break_ensure.rb:33:5:39:7 | [ensure: raise] while ... | 0 |
+| break_ensure.rb:27:1:42:3 | exit m3 (normal) | break_ensure.rb:33:5:39:7 | [ensure: return] while ... | 1 |
+| break_ensure.rb:27:1:42:3 | exit m3 (normal) | break_ensure.rb:33:5:39:7 | while ... | 0 |
+| break_ensure.rb:33:5:39:7 | [ensure: raise] while ... | break_ensure.rb:33:11:33:11 | [ensure: raise] y | 0 |
+| break_ensure.rb:33:5:39:7 | [ensure: raise] while ... | break_ensure.rb:36:11:36:15 | [ensure: raise] break | 1 |
+| break_ensure.rb:33:5:39:7 | [ensure: return] while ... | break_ensure.rb:33:11:33:11 | [ensure: return] y | 0 |
+| break_ensure.rb:33:5:39:7 | [ensure: return] while ... | break_ensure.rb:36:11:36:15 | [ensure: return] break | 1 |
+| break_ensure.rb:33:5:39:7 | while ... | break_ensure.rb:33:11:33:11 | y | 0 |
+| break_ensure.rb:33:5:39:7 | while ... | break_ensure.rb:36:11:36:15 | break | 1 |
+| break_ensure.rb:33:11:33:11 | [ensure: raise] y | break_ensure.rb:27:1:42:3 | enter m3 | 0 |
+| break_ensure.rb:33:11:33:11 | [ensure: raise] y | break_ensure.rb:35:9:37:11 | [ensure: raise] if ... | 1 |
+| break_ensure.rb:33:11:33:11 | [ensure: return] y | break_ensure.rb:30:7:30:12 | return | 0 |
+| break_ensure.rb:33:11:33:11 | [ensure: return] y | break_ensure.rb:35:9:37:11 | [ensure: return] if ... | 1 |
+| break_ensure.rb:33:11:33:11 | y | break_ensure.rb:29:5:31:7 | if ... | 0 |
+| break_ensure.rb:33:11:33:11 | y | break_ensure.rb:35:9:37:11 | if ... | 1 |
+| break_ensure.rb:45:3:55:5 | while ... | break_ensure.rb:45:9:45:9 | x | 0 |
+| break_ensure.rb:45:3:55:5 | while ... | break_ensure.rb:51:7:53:9 | [ensure: raise] if ... | 1 |
+| break_ensure.rb:45:3:55:5 | while ... | break_ensure.rb:52:15:52:16 | 10 | 2 |
+| break_ensure.rb:45:3:55:5 | while ... | break_ensure.rb:52:15:52:16 | [ensure: raise] 10 | 3 |
+| break_ensure.rb:45:9:45:9 | x | break_ensure.rb:44:1:56:3 | enter m4 | 0 |
+| break_ensure.rb:45:9:45:9 | x | break_ensure.rb:51:7:53:9 | if ... | 1 |
+| break_ensure.rb:51:10:51:10 | [ensure: raise] x | break_ensure.rb:47:10:47:10 | x | 0 |
+| break_ensure.rb:51:10:51:10 | [ensure: raise] x | break_ensure.rb:48:9:48:16 | self | 1 |
+| case.rb:2:3:5:5 | case ... | case.rb:3:18:3:41 | if ... | 0 |
+| case.rb:2:3:5:5 | case ... | case.rb:4:5:4:24 | [no-match] when ... | 1 |
+| case.rb:2:3:5:5 | case ... | case.rb:4:17:4:24 | self | 2 |
+| case.rb:3:18:3:41 | if ... | case.rb:3:21:3:22 | self | 0 |
+| case.rb:3:18:3:41 | if ... | case.rb:3:29:3:37 | self | 1 |
+| case.rb:9:3:17:5 | case ... | case.rb:8:1:18:3 | enter case_match | 0 |
+| case.rb:9:3:17:5 | case ... | case.rb:11:15:11:15 | 3 | 1 |
+| case.rb:9:3:17:5 | case ... | case.rb:13:7:13:7 | 4 | 2 |
+| case.rb:9:3:17:5 | case ... | case.rb:14:25:14:25 | 6 | 3 |
+| case.rb:9:3:17:5 | case ... | case.rb:15:28:15:28 | 7 | 4 |
+| case.rb:9:3:17:5 | case ... | case.rb:16:10:16:10 | 8 | 5 |
+| case.rb:20:1:24:3 | exit case_match_no_match | case.rb:21:3:23:5 | case ... | 0 |
+| case.rb:26:1:30:3 | exit case_match_raise | case.rb:27:3:29:5 | case ... | 0 |
+| case.rb:32:1:39:3 | exit case_match_array | case.rb:33:3:38:5 | case ... | 0 |
+| case.rb:32:1:39:3 | exit case_match_array (abnormal) | case.rb:37:5:37:27 | in ... then ... | 0 |
+| case.rb:32:1:39:3 | exit case_match_array (abnormal) | case.rb:37:8:37:26 | [ ..., * ] | 1 |
+| case.rb:33:3:38:5 | case ... | case.rb:32:1:39:3 | enter case_match_array | 0 |
+| case.rb:33:3:38:5 | case ... | case.rb:35:9:35:9 | x | 1 |
+| case.rb:33:3:38:5 | case ... | case.rb:36:9:36:9 | x | 2 |
+| case.rb:33:3:38:5 | case ... | case.rb:37:25:37:25 | e | 3 |
+| case.rb:41:1:45:3 | exit case_match_find | case.rb:43:20:43:20 | y | 0 |
+| case.rb:41:1:45:3 | exit case_match_find (abnormal) | case.rb:41:1:45:3 | enter case_match_find | 0 |
+| case.rb:41:1:45:3 | exit case_match_find (abnormal) | case.rb:43:10:43:10 | x | 1 |
+| case.rb:41:1:45:3 | exit case_match_find (abnormal) | case.rb:43:16:43:16 | 2 | 2 |
+| case.rb:47:1:53:3 | exit case_match_hash | case.rb:48:3:52:5 | case ... | 0 |
+| case.rb:47:1:53:3 | exit case_match_hash (abnormal) | case.rb:51:5:51:17 | in ... then ... | 0 |
+| case.rb:47:1:53:3 | exit case_match_hash (abnormal) | case.rb:51:8:51:16 | { ..., ** } | 1 |
+| case.rb:48:3:52:5 | case ... | case.rb:49:29:49:32 | rest | 0 |
+| case.rb:48:3:52:5 | case ... | case.rb:50:16:50:16 | 1 | 1 |
+| case.rb:48:3:52:5 | case ... | case.rb:51:8:51:16 | { ..., ** } | 2 |
+| case.rb:50:5:50:25 | in ... then ... | case.rb:47:1:53:3 | enter case_match_hash | 0 |
+| case.rb:50:5:50:25 | in ... then ... | case.rb:49:8:49:34 | { ..., ** } | 1 |
+| case.rb:50:5:50:25 | in ... then ... | case.rb:49:20:49:20 | 1 | 2 |
+| case.rb:51:5:51:17 | in ... then ... | case.rb:50:5:50:25 | in ... then ... | 0 |
+| case.rb:51:5:51:17 | in ... then ... | case.rb:50:8:50:24 | { ..., ** } | 1 |
+| case.rb:51:5:51:17 | in ... then ... | case.rb:50:16:50:16 | 1 | 2 |
+| case.rb:56:3:60:5 | case ... | case.rb:55:1:61:3 | enter case_match_variable | 0 |
+| case.rb:56:3:60:5 | case ... | case.rb:58:5:58:10 | in ... then ... | 1 |
+| case.rb:64:3:66:5 | case ... | case.rb:63:1:67:3 | enter case_match_underscore | 0 |
+| case.rb:64:3:66:5 | case ... | case.rb:65:12:65:12 | _ | 1 |
+| case.rb:69:1:93:3 | exit case_match_various | case.rb:72:3:92:5 | case ... | 0 |
+| case.rb:72:3:92:5 | case ... | case.rb:69:1:93:3 | enter case_match_various | 0 |
+| case.rb:72:3:92:5 | case ... | case.rb:74:5:74:11 | in ... then ... | 1 |
+| case.rb:72:3:92:5 | case ... | case.rb:75:5:75:15 | in ... then ... | 2 |
+| case.rb:72:3:92:5 | case ... | case.rb:76:5:76:18 | in ... then ... | 3 |
+| case.rb:72:3:92:5 | case ... | case.rb:77:5:77:18 | in ... then ... | 4 |
+| case.rb:72:3:92:5 | case ... | case.rb:78:5:78:19 | in ... then ... | 5 |
+| case.rb:72:3:92:5 | case ... | case.rb:79:5:79:14 | in ... then ... | 6 |
+| case.rb:72:3:92:5 | case ... | case.rb:80:5:80:12 | in ... then ... | 7 |
+| case.rb:72:3:92:5 | case ... | case.rb:81:5:81:11 | in ... then ... | 8 |
+| case.rb:72:3:92:5 | case ... | case.rb:82:20:82:20 | 1 | 9 |
+| case.rb:72:3:92:5 | case ... | case.rb:83:5:83:26 | in ... then ... | 10 |
+| case.rb:72:3:92:5 | case ... | case.rb:83:12:83:15 | ^... | 11 |
+| case.rb:72:3:92:5 | case ... | case.rb:83:20:83:25 | string | 12 |
+| case.rb:72:3:92:5 | case ... | case.rb:84:5:84:17 | in ... then ... | 13 |
+| case.rb:72:3:92:5 | case ... | case.rb:85:5:85:23 | in ... then ... | 14 |
+| case.rb:72:3:92:5 | case ... | case.rb:86:5:86:11 | in ... then ... | 15 |
+| case.rb:72:3:92:5 | case ... | case.rb:87:5:87:17 | in ... then ... | 16 |
+| case.rb:72:3:92:5 | case ... | case.rb:88:5:88:15 | in ... then ... | 17 |
+| case.rb:72:3:92:5 | case ... | case.rb:88:14:88:15 | 10 | 18 |
+| case.rb:72:3:92:5 | case ... | case.rb:89:5:89:69 | in ... then ... | 19 |
+| case.rb:72:3:92:5 | case ... | case.rb:89:14:89:17 | self | 20 |
+| case.rb:72:3:92:5 | case ... | case.rb:89:21:89:24 | true | 21 |
+| case.rb:72:3:92:5 | case ... | case.rb:89:28:89:32 | false | 22 |
+| case.rb:72:3:92:5 | case ... | case.rb:89:36:89:43 | __LINE__ | 23 |
+| case.rb:72:3:92:5 | case ... | case.rb:89:47:89:54 | __FILE__ | 24 |
+| case.rb:72:3:92:5 | case ... | case.rb:89:58:89:69 | __ENCODING__ | 25 |
+| case.rb:72:3:92:5 | case ... | case.rb:90:5:90:13 | in ... then ... | 26 |
+| case.rb:72:3:92:5 | case ... | case.rb:91:5:91:25 | in ... then ... | 27 |
+| case.rb:72:3:92:5 | case ... | case.rb:91:13:91:14 | "" | 28 |
+| case.rb:72:3:92:5 | case ... | case.rb:91:18:91:19 | [ ..., * ] | 29 |
+| case.rb:72:3:92:5 | case ... | case.rb:91:23:91:24 | { ..., ** } | 30 |
+| case.rb:95:1:99:3 | exit case_match_guard_no_else | case.rb:97:25:97:25 | 6 | 0 |
+| cfg.html.erb:18:14:22:16 | if ... | cfg.html.erb:19:19:19:32 | self | 0 |
+| cfg.html.erb:18:14:22:16 | if ... | cfg.html.erb:21:19:21:32 | self | 1 |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:42:15:42:24 | self | 0 |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:43:21:43:31 | self | 1 |
+| cfg.rb:41:1:45:3 | case ... | cfg.rb:44:8:44:18 | self | 2 |
+| cfg.rb:43:3:43:31 | [match] when ... | cfg.rb:43:8:43:8 | 2 | 0 |
+| cfg.rb:43:3:43:31 | [match] when ... | cfg.rb:43:11:43:11 | 3 | 1 |
+| cfg.rb:43:3:43:31 | [match] when ... | cfg.rb:43:14:43:14 | 4 | 2 |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:48:20:48:29 | self | 0 |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:49:3:49:37 | [false] when ... | 1 |
+| cfg.rb:47:1:50:3 | case ... | cfg.rb:49:27:49:37 | self | 2 |
+| cfg.rb:49:3:49:37 | [true] when ... | cfg.rb:49:8:49:8 | b | 0 |
+| cfg.rb:49:3:49:37 | [true] when ... | cfg.rb:49:16:49:16 | b | 1 |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:60:27:60:31 | hello | 0 |
+| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:60:37:60:39 | bye | 1 |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:75:15:75:15 | 0 | 0 |
+| cfg.rb:75:1:75:47 | if ... | cfg.rb:75:17:75:43 | elsif ... | 1 |
+| cfg.rb:75:17:75:43 | elsif ... | cfg.rb:75:35:75:36 | 10 | 0 |
+| cfg.rb:75:17:75:43 | elsif ... | cfg.rb:75:43:75:43 | x | 1 |
+| cfg.rb:90:1:93:3 | exit { ... } (normal) | cfg.rb:91:3:91:24 | if ... | 0 |
+| cfg.rb:90:1:93:3 | exit { ... } (normal) | cfg.rb:91:17:91:20 | next | 1 |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:90:5:90:5 | [false] ! ... | 1 |
+| cfg.rb:90:5:90:5 | if ... | cfg.rb:90:5:90:5 | x | 0 |
+| cfg.rb:101:28:101:30 | key | cfg.rb:101:1:104:3 | enter parameters | 0 |
+| cfg.rb:101:28:101:30 | key | cfg.rb:101:24:101:25 | 42 | 1 |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:90:5:90:5 | if ... | 0 |
+| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:113:1:113:9 | self | 1 |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:113:1:113:19 | ... if ... | 0 |
+| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:136:12:136:29 | self | 1 |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:172:21:172:29 | self | 0 |
+| cfg.rb:172:1:172:49 | unless ... | cfg.rb:172:36:172:45 | self | 1 |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:172:1:172:49 | unless ... | 0 |
+| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:174:1:174:9 | self | 1 |
+| cfg.rb:176:7:176:7 | x | cfg.rb:174:1:174:23 | ... unless ... | 0 |
+| cfg.rb:176:7:176:7 | x | cfg.rb:176:17:176:17 | x | 1 |
+| cfg.rb:179:30:179:30 | i | cfg.rb:176:1:176:41 | until ... | 0 |
+| cfg.rb:179:30:179:30 | i | cfg.rb:179:2:179:13 | self | 1 |
+| cfg.rb:182:7:182:7 | x | cfg.rb:179:1:179:36 | ... until ... | 0 |
+| cfg.rb:182:7:182:7 | x | cfg.rb:184:3:184:25 | if ... | 1 |
+| cfg.rb:183:3:183:3 | x | cfg.rb:182:7:182:7 | x | 0 |
+| cfg.rb:183:3:183:3 | x | cfg.rb:184:18:184:21 | redo | 1 |
+| cfg.rb:188:30:188:30 | i | cfg.rb:182:1:186:3 | while ... | 0 |
+| cfg.rb:188:30:188:30 | i | cfg.rb:188:2:188:13 | self | 1 |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:205:1:205:3 | __synth__0__1 | 0 |
+| cfg.rb:205:4:205:5 | if ... | cfg.rb:205:1:205:3 | nil | 0 |
+| constant_compound_assign.rb:5:18:5:20 | ... \|\| ... | constant_compound_assign.rb:1:1:22:4 | enter constant_compound_assign.rb | 0 |
+| constant_compound_assign.rb:5:18:5:20 | ... \|\| ... | constant_compound_assign.rb:5:22:5:24 | 123 | 1 |
+| constant_compound_assign.rb:14:14:14:16 | ... \|\| ... | constant_compound_assign.rb:5:18:5:20 | ... \|\| ... | 0 |
+| constant_compound_assign.rb:14:14:14:16 | ... \|\| ... | constant_compound_assign.rb:14:18:14:20 | 123 | 1 |
+| constant_compound_assign.rb:19:17:19:19 | ... \|\| ... | constant_compound_assign.rb:14:14:14:16 | ... \|\| ... | 0 |
+| constant_compound_assign.rb:19:17:19:19 | ... \|\| ... | constant_compound_assign.rb:19:21:19:23 | 123 | 1 |
+| exit.rb:1:1:6:3 | exit m1 | exit.rb:2:3:4:5 | if ... | 0 |
+| exit.rb:1:1:6:3 | exit m1 | exit.rb:3:5:3:10 | self | 1 |
+| exit.rb:8:1:13:3 | exit m2 | exit.rb:9:3:11:5 | if ... | 0 |
+| exit.rb:8:1:13:3 | exit m2 | exit.rb:10:5:10:18 | self | 1 |
+| ifs.rb:2:3:8:5 | if ... | ifs.rb:3:5:3:30 | self | 0 |
+| ifs.rb:2:3:8:5 | if ... | ifs.rb:4:3:7:35 | elsif ... | 1 |
+| ifs.rb:4:3:7:35 | elsif ... | ifs.rb:5:5:5:17 | self | 0 |
+| ifs.rb:4:3:7:35 | elsif ... | ifs.rb:7:5:7:35 | self | 1 |
+| ifs.rb:4:9:4:24 | [false] ... and ... | ifs.rb:4:9:4:9 | x | 0 |
+| ifs.rb:4:9:4:24 | [false] ... and ... | ifs.rb:4:20:4:20 | x | 1 |
+| ifs.rb:4:9:4:38 | [false] ... and ... | ifs.rb:4:9:4:24 | [false] ... and ... | 0 |
+| ifs.rb:4:9:4:38 | [false] ... and ... | ifs.rb:4:30:4:38 | [false] ! ... | 1 |
+| ifs.rb:11:1:16:3 | exit m2 (normal) | ifs.rb:12:3:14:5 | if ... | 0 |
+| ifs.rb:11:1:16:3 | exit m2 (normal) | ifs.rb:13:12:13:12 | 0 | 1 |
+| ifs.rb:19:3:24:5 | if ... | ifs.rb:18:1:26:3 | enter m3 | 0 |
+| ifs.rb:19:3:24:5 | if ... | ifs.rb:21:5:23:7 | if ... | 1 |
+| ifs.rb:21:5:23:7 | if ... | ifs.rb:20:5:20:5 | x | 0 |
+| ifs.rb:21:5:23:7 | if ... | ifs.rb:22:7:22:7 | x | 1 |
+| ifs.rb:29:10:29:51 | ... ? ... : ... | ifs.rb:29:28:29:35 | b2 \|\| b3 | 0 |
+| ifs.rb:29:10:29:51 | ... ? ... : ... | ifs.rb:29:41:29:50 | !b2 \|\| !b3 | 1 |
+| ifs.rb:29:11:29:22 | [false] ... ? ... : ... | ifs.rb:29:16:29:17 | b2 | 0 |
+| ifs.rb:29:11:29:22 | [false] ... ? ... : ... | ifs.rb:29:21:29:22 | b3 | 1 |
+| ifs.rb:29:11:29:22 | [true] ... ? ... : ... | ifs.rb:29:16:29:17 | b2 | 0 |
+| ifs.rb:29:11:29:22 | [true] ... ? ... : ... | ifs.rb:29:21:29:22 | b3 | 1 |
+| ifs.rb:33:3:33:100 | if ... | ifs.rb:33:57:33:70 | b2 \|\| b4 \|\| b5 | 0 |
+| ifs.rb:33:3:33:100 | if ... | ifs.rb:33:79:33:95 | !b2 \|\| !b4 \|\| !b5 | 1 |
+| ifs.rb:33:7:33:48 | [false] if ... | ifs.rb:33:13:33:19 | [false] then ... | 0 |
+| ifs.rb:33:7:33:48 | [false] if ... | ifs.rb:33:21:33:44 | [false] elsif ... | 1 |
+| ifs.rb:33:7:33:48 | [true] if ... | ifs.rb:33:13:33:19 | [true] then ... | 0 |
+| ifs.rb:33:7:33:48 | [true] if ... | ifs.rb:33:21:33:44 | [true] elsif ... | 1 |
+| ifs.rb:33:21:33:44 | [false] elsif ... | ifs.rb:33:30:33:36 | [false] then ... | 0 |
+| ifs.rb:33:21:33:44 | [false] elsif ... | ifs.rb:33:38:33:44 | [false] else ... | 1 |
+| ifs.rb:33:21:33:44 | [true] elsif ... | ifs.rb:33:30:33:36 | [true] then ... | 0 |
+| ifs.rb:33:21:33:44 | [true] elsif ... | ifs.rb:33:38:33:44 | [true] else ... | 1 |
+| ifs.rb:36:1:38:17 | ... unless ... | ifs.rb:1:1:58:4 | enter ifs.rb | 0 |
+| ifs.rb:36:1:38:17 | ... unless ... | ifs.rb:36:1:38:3 | conditional_method_def | 1 |
+| ifs.rb:47:3:50:5 | if ... | ifs.rb:48:5:48:15 | self | 0 |
+| ifs.rb:47:3:50:5 | if ... | ifs.rb:49:3:49:6 | else ... | 1 |
+| ifs.rb:55:3:57:5 | if ... | ifs.rb:55:6:55:15 | [false] ( ... ) | 0 |
+| ifs.rb:55:3:57:5 | if ... | ifs.rb:56:5:56:19 | self | 1 |
+| ifs.rb:55:7:55:14 | [true] ... \|\| ... | ifs.rb:54:1:58:3 | enter disjunct | 0 |
+| ifs.rb:55:7:55:14 | [true] ... \|\| ... | ifs.rb:55:13:55:14 | b2 | 1 |
+| loops.rb:2:9:2:9 | x | loops.rb:1:1:6:3 | enter m1 | 0 |
+| loops.rb:2:9:2:9 | x | loops.rb:3:5:3:10 | self | 1 |
+| loops.rb:9:3:20:5 | while ... | loops.rb:9:9:9:9 | x | 0 |
+| loops.rb:9:3:20:5 | while ... | loops.rb:13:7:13:11 | break | 1 |
+| loops.rb:9:9:9:9 | x | loops.rb:8:1:22:3 | enter m2 | 0 |
+| loops.rb:9:9:9:9 | x | loops.rb:15:7:15:10 | next | 1 |
+| loops.rb:9:9:9:9 | x | loops.rb:16:5:17:10 | elsif ... | 2 |
+| loops.rb:10:5:10:10 | self | loops.rb:9:9:9:9 | x | 0 |
+| loops.rb:10:5:10:10 | self | loops.rb:17:7:17:10 | redo | 1 |
+| loops.rb:31:9:31:9 | x | loops.rb:30:1:33:3 | enter m4 | 0 |
+| loops.rb:31:9:31:9 | x | loops.rb:31:15:32:5 | do ... | 1 |
+| raise.rb:7:1:12:3 | exit m1 | raise.rb:8:3:10:5 | if ... | 0 |
+| raise.rb:7:1:12:3 | exit m1 | raise.rb:9:5:9:17 | self | 1 |
+| raise.rb:14:1:23:3 | exit m2 | raise.rb:22:3:22:15 | self | 0 |
+| raise.rb:22:3:22:15 | self | raise.rb:16:5:18:7 | if ... | 0 |
+| raise.rb:22:3:22:15 | self | raise.rb:20:5:20:18 | self | 1 |
+| raise.rb:33:3:33:15 | self | raise.rb:27:5:29:7 | if ... | 0 |
+| raise.rb:33:3:33:15 | self | raise.rb:28:7:28:22 | self | 1 |
+| raise.rb:44:3:44:15 | self | raise.rb:38:5:40:7 | if ... | 0 |
+| raise.rb:44:3:44:15 | self | raise.rb:39:7:39:22 | self | 1 |
+| raise.rb:54:3:54:15 | self | raise.rb:49:5:51:7 | if ... | 0 |
+| raise.rb:54:3:54:15 | self | raise.rb:50:7:50:22 | self | 1 |
+| raise.rb:57:1:66:3 | exit m6 | raise.rb:65:3:65:15 | self | 0 |
+| raise.rb:62:36:62:36 | e | raise.rb:60:7:60:22 | self | 0 |
+| raise.rb:62:36:62:36 | e | raise.rb:62:22:62:31 | ExceptionB | 1 |
+| raise.rb:65:3:65:15 | self | raise.rb:59:5:61:7 | if ... | 0 |
+| raise.rb:65:3:65:15 | self | raise.rb:62:36:62:36 | e | 1 |
+| raise.rb:68:1:77:3 | exit m7 | raise.rb:76:3:76:15 | [ensure: raise] self | 0 |
+| raise.rb:68:1:77:3 | exit m7 (normal) | raise.rb:72:13:72:17 | x < 0 | 0 |
+| raise.rb:68:1:77:3 | exit m7 (normal) | raise.rb:76:3:76:15 | self | 1 |
+| raise.rb:76:3:76:15 | [ensure: raise] self | raise.rb:68:1:77:3 | enter m7 | 0 |
+| raise.rb:76:3:76:15 | [ensure: raise] self | raise.rb:70:5:70:17 | self | 1 |
+| raise.rb:76:3:76:15 | [ensure: raise] self | raise.rb:71:3:72:18 | elsif ... | 2 |
+| raise.rb:76:3:76:15 | [ensure: raise] self | raise.rb:71:9:71:9 | x | 3 |
+| raise.rb:79:1:92:3 | exit m8 | raise.rb:89:5:89:17 | [ensure: raise] self | 0 |
+| raise.rb:79:1:92:3 | exit m8 (normal) | raise.rb:85:15:85:19 | x < 0 | 0 |
+| raise.rb:79:1:92:3 | exit m8 (normal) | raise.rb:89:5:89:17 | self | 1 |
+| raise.rb:89:5:89:17 | [ensure: raise] self | raise.rb:79:1:92:3 | enter m8 | 0 |
+| raise.rb:89:5:89:17 | [ensure: raise] self | raise.rb:83:7:83:19 | self | 1 |
+| raise.rb:89:5:89:17 | [ensure: raise] self | raise.rb:84:5:85:20 | elsif ... | 2 |
+| raise.rb:89:5:89:17 | [ensure: raise] self | raise.rb:84:11:84:11 | x | 3 |
+| raise.rb:94:1:119:3 | exit m9 (abnormal) | raise.rb:116:3:118:5 | [ensure: raise] if ... | 0 |
+| raise.rb:94:1:119:3 | exit m9 (abnormal) | raise.rb:117:5:117:22 | [ensure: raise] self | 2 |
+| raise.rb:94:1:119:3 | exit m9 (abnormal) | raise.rb:117:5:117:22 | [ensure: return] self | 3 |
+| raise.rb:94:1:119:3 | exit m9 (abnormal) | raise.rb:117:5:117:22 | self | 1 |
+| raise.rb:94:1:119:3 | exit m9 (normal) | raise.rb:116:3:118:5 | [ensure: return] if ... | 1 |
+| raise.rb:94:1:119:3 | exit m9 (normal) | raise.rb:116:3:118:5 | if ... | 0 |
+| raise.rb:104:5:104:23 | [ensure: raise] self | raise.rb:97:8:97:8 | x | 0 |
+| raise.rb:104:5:104:23 | [ensure: raise] self | raise.rb:98:7:98:19 | self | 1 |
+| raise.rb:104:5:104:23 | [ensure: raise] self | raise.rb:99:5:100:20 | elsif ... | 2 |
+| raise.rb:104:5:104:23 | [ensure: raise] self | raise.rb:99:11:99:11 | x | 3 |
+| raise.rb:115:3:115:22 | [ensure: raise] self | raise.rb:94:1:119:3 | enter m9 | 0 |
+| raise.rb:115:3:115:22 | [ensure: raise] self | raise.rb:100:15:100:19 | x < 0 | 1 |
+| raise.rb:115:3:115:22 | [ensure: raise] self | raise.rb:104:5:104:23 | [ensure: raise] self | 3 |
+| raise.rb:115:3:115:22 | [ensure: raise] self | raise.rb:104:5:104:23 | self | 2 |
+| raise.rb:115:3:115:22 | [ensure: raise] self | raise.rb:106:7:108:9 | [ensure: raise] if ... | 5 |
+| raise.rb:115:3:115:22 | [ensure: raise] self | raise.rb:106:7:108:9 | [ensure: return] if ... | 6 |
+| raise.rb:115:3:115:22 | [ensure: raise] self | raise.rb:106:7:108:9 | if ... | 4 |
+| raise.rb:115:3:115:22 | [ensure: raise] self | raise.rb:107:9:107:26 | [ensure: raise] self | 8 |
+| raise.rb:115:3:115:22 | [ensure: raise] self | raise.rb:107:9:107:26 | [ensure: return] self | 9 |
+| raise.rb:115:3:115:22 | [ensure: raise] self | raise.rb:107:9:107:26 | self | 7 |
+| raise.rb:115:3:115:22 | [ensure: raise] self | raise.rb:109:5:110:25 | [ensure(1): raise] ensure ... | 11 |
+| raise.rb:115:3:115:22 | [ensure: raise] self | raise.rb:109:5:110:25 | [ensure: raise, ensure(1): raise] ensure ... | 13 |
+| raise.rb:115:3:115:22 | [ensure: raise] self | raise.rb:109:5:110:25 | [ensure: raise] ensure ... | 12 |
+| raise.rb:115:3:115:22 | [ensure: raise] self | raise.rb:109:5:110:25 | [ensure: return, ensure(1): raise] ensure ... | 14 |
+| raise.rb:115:3:115:22 | [ensure: raise] self | raise.rb:109:5:110:25 | ensure ... | 10 |
+| raise.rb:121:1:126:3 | exit m10 | raise.rb:121:14:121:30 | self | 0 |
+| raise.rb:121:1:126:3 | exit m10 | raise.rb:125:3:125:51 | self | 1 |
+| raise.rb:128:1:140:3 | exit m11 | raise.rb:137:5:137:17 | [ensure: raise] self | 1 |
+| raise.rb:128:1:140:3 | exit m11 | raise.rb:137:5:137:17 | self | 0 |
+| raise.rb:137:5:137:17 | self | raise.rb:130:5:132:7 | if ... | 0 |
+| raise.rb:137:5:137:17 | self | raise.rb:133:3:133:19 | rescue ... | 1 |
+| raise.rb:137:5:137:17 | self | raise.rb:135:5:135:21 | self | 2 |
+| raise.rb:142:1:148:3 | exit m12 (normal) | raise.rb:143:3:145:5 | if ... | 0 |
+| raise.rb:142:1:148:3 | exit m12 (normal) | raise.rb:144:5:144:12 | self | 1 |
+| raise.rb:155:16:155:50 | exit { ... } | raise.rb:155:25:155:32 | self | 1 |
+| raise.rb:155:16:155:50 | exit { ... } | raise.rb:155:25:155:48 | ... if ... | 0 |
+| raise.rb:160:9:162:7 | exit -> { ... } | raise.rb:161:7:161:14 | self | 1 |
+| raise.rb:160:9:162:7 | exit -> { ... } | raise.rb:161:7:161:23 | ... unless ... | 0 |
+| raise.rb:172:1:182:3 | exit m16 (normal) | raise.rb:175:14:175:14 | 1 | 0 |
+| raise.rb:172:1:182:3 | exit m16 (normal) | raise.rb:177:14:177:14 | 2 | 1 |
+| raise.rb:172:1:182:3 | exit m16 (normal) | raise.rb:180:12:180:12 | 3 | 2 |
+| raise.rb:174:8:174:23 | [true] ... \|\| ... | raise.rb:172:1:182:3 | enter m16 | 0 |
+| raise.rb:174:8:174:23 | [true] ... \|\| ... | raise.rb:174:14:174:15 | b2 | 1 |
+| raise.rb:179:10:179:19 | ExceptionA | raise.rb:174:8:174:23 | [false] ... \|\| ... | 0 |
+| raise.rb:179:10:179:19 | ExceptionA | raise.rb:174:8:174:23 | [true] ... \|\| ... | 1 |
+| raise.rb:179:10:179:19 | ExceptionA | raise.rb:174:14:174:15 | b2 | 2 |
diff --git a/ruby/ql/test/library-tests/controlflow/graph/BasicBlocks.ql b/ruby/ql/test/library-tests/controlflow/graph/BasicBlocks.ql
new file mode 100644
index 000000000000..fb265997ab31
--- /dev/null
+++ b/ruby/ql/test/library-tests/controlflow/graph/BasicBlocks.ql
@@ -0,0 +1,23 @@
+import ruby
+import codeql.ruby.controlflow.ControlFlowGraph
+import codeql.ruby.controlflow.BasicBlocks
+
+query predicate dominates(BasicBlock bb1, BasicBlock bb2) { bb1.dominates(bb2) }
+
+query predicate postDominance(BasicBlock bb1, BasicBlock bb2) { bb1.postDominates(bb2) }
+
+query predicate immediateDominator(BasicBlock bb1, BasicBlock bb2) {
+  bb1.getImmediateDominator() = bb2
+}
+
+query predicate controls(ConditionBlock bb1, BasicBlock bb2, SuccessorType t) {
+  bb1.controls(bb2, t)
+}
+
+query predicate successor(ConditionBlock bb1, BasicBlock bb2, SuccessorType t) {
+  bb1.getASuccessor(t) = bb2
+}
+
+query predicate joinBlockPredecessor(JoinBlock bb1, BasicBlock bb2, int i) {
+  bb1.getJoinBlockPredecessor(i) = bb2
+}
diff --git a/rust/ql/test/library-tests/controlflow/BasicBlocks.expected b/rust/ql/test/library-tests/controlflow/BasicBlocks.expected
new file mode 100644
index 000000000000..a17ff6a28ce4
--- /dev/null
+++ b/rust/ql/test/library-tests/controlflow/BasicBlocks.expected
@@ -0,0 +1,1520 @@
+dominates
+| test.rs:5:5:8:5 | enter fn function_call | test.rs:5:5:8:5 | enter fn function_call |
+| test.rs:10:5:13:5 | enter fn method_call | test.rs:10:5:13:5 | enter fn method_call |
+| test.rs:18:5:24:5 | enter fn next | test.rs:18:5:24:5 | enter fn next |
+| test.rs:18:5:24:5 | enter fn next | test.rs:19:9:23:9 | if ... {...} else {...} |
+| test.rs:18:5:24:5 | enter fn next | test.rs:20:13:20:13 | n |
+| test.rs:18:5:24:5 | enter fn next | test.rs:22:13:22:13 | 3 |
+| test.rs:19:9:23:9 | if ... {...} else {...} | test.rs:19:9:23:9 | if ... {...} else {...} |
+| test.rs:20:13:20:13 | n | test.rs:20:13:20:13 | n |
+| test.rs:22:13:22:13 | 3 | test.rs:22:13:22:13 | 3 |
+| test.rs:26:5:42:5 | enter fn test_break_and_continue | test.rs:26:5:42:5 | enter fn test_break_and_continue |
+| test.rs:26:5:42:5 | enter fn test_break_and_continue | test.rs:26:5:42:5 | exit fn test_break_and_continue (normal) |
+| test.rs:26:5:42:5 | enter fn test_break_and_continue | test.rs:29:13:29:24 | ExprStmt |
+| test.rs:26:5:42:5 | enter fn test_break_and_continue | test.rs:30:13:32:13 | if ... {...} |
+| test.rs:26:5:42:5 | enter fn test_break_and_continue | test.rs:31:17:31:29 | ExprStmt |
+| test.rs:26:5:42:5 | enter fn test_break_and_continue | test.rs:33:13:35:13 | if ... {...} |
+| test.rs:26:5:42:5 | enter fn test_break_and_continue | test.rs:34:17:34:22 | ExprStmt |
+| test.rs:26:5:42:5 | enter fn test_break_and_continue | test.rs:36:13:38:13 | if ... {...} |
+| test.rs:26:5:42:5 | enter fn test_break_and_continue | test.rs:37:17:37:25 | ExprStmt |
+| test.rs:26:5:42:5 | exit fn test_break_and_continue (normal) | test.rs:26:5:42:5 | exit fn test_break_and_continue (normal) |
+| test.rs:29:13:29:24 | ExprStmt | test.rs:26:5:42:5 | exit fn test_break_and_continue (normal) |
+| test.rs:29:13:29:24 | ExprStmt | test.rs:29:13:29:24 | ExprStmt |
+| test.rs:29:13:29:24 | ExprStmt | test.rs:30:13:32:13 | if ... {...} |
+| test.rs:29:13:29:24 | ExprStmt | test.rs:31:17:31:29 | ExprStmt |
+| test.rs:29:13:29:24 | ExprStmt | test.rs:33:13:35:13 | if ... {...} |
+| test.rs:29:13:29:24 | ExprStmt | test.rs:34:17:34:22 | ExprStmt |
+| test.rs:29:13:29:24 | ExprStmt | test.rs:36:13:38:13 | if ... {...} |
+| test.rs:29:13:29:24 | ExprStmt | test.rs:37:17:37:25 | ExprStmt |
+| test.rs:30:13:32:13 | if ... {...} | test.rs:30:13:32:13 | if ... {...} |
+| test.rs:30:13:32:13 | if ... {...} | test.rs:33:13:35:13 | if ... {...} |
+| test.rs:30:13:32:13 | if ... {...} | test.rs:34:17:34:22 | ExprStmt |
+| test.rs:30:13:32:13 | if ... {...} | test.rs:36:13:38:13 | if ... {...} |
+| test.rs:30:13:32:13 | if ... {...} | test.rs:37:17:37:25 | ExprStmt |
+| test.rs:31:17:31:29 | ExprStmt | test.rs:31:17:31:29 | ExprStmt |
+| test.rs:33:13:35:13 | if ... {...} | test.rs:33:13:35:13 | if ... {...} |
+| test.rs:33:13:35:13 | if ... {...} | test.rs:36:13:38:13 | if ... {...} |
+| test.rs:33:13:35:13 | if ... {...} | test.rs:37:17:37:25 | ExprStmt |
+| test.rs:34:17:34:22 | ExprStmt | test.rs:34:17:34:22 | ExprStmt |
+| test.rs:36:13:38:13 | if ... {...} | test.rs:36:13:38:13 | if ... {...} |
+| test.rs:37:17:37:25 | ExprStmt | test.rs:37:17:37:25 | ExprStmt |
+| test.rs:44:5:56:5 | enter fn test_break_with_labels | test.rs:44:5:56:5 | enter fn test_break_with_labels |
+| test.rs:44:5:56:5 | enter fn test_break_with_labels | test.rs:46:13:53:13 | 'inner: loop { ... } |
+| test.rs:44:5:56:5 | enter fn test_break_with_labels | test.rs:47:17:51:17 | ExprStmt |
+| test.rs:44:5:56:5 | enter fn test_break_with_labels | test.rs:48:21:48:26 | ExprStmt |
+| test.rs:44:5:56:5 | enter fn test_break_with_labels | test.rs:49:24:51:17 | if b {...} |
+| test.rs:44:5:56:5 | enter fn test_break_with_labels | test.rs:49:27:49:27 | b |
+| test.rs:44:5:56:5 | enter fn test_break_with_labels | test.rs:50:21:50:33 | ExprStmt |
+| test.rs:46:13:53:13 | 'inner: loop { ... } | test.rs:46:13:53:13 | 'inner: loop { ... } |
+| test.rs:47:17:51:17 | ExprStmt | test.rs:46:13:53:13 | 'inner: loop { ... } |
+| test.rs:47:17:51:17 | ExprStmt | test.rs:47:17:51:17 | ExprStmt |
+| test.rs:47:17:51:17 | ExprStmt | test.rs:48:21:48:26 | ExprStmt |
+| test.rs:47:17:51:17 | ExprStmt | test.rs:49:24:51:17 | if b {...} |
+| test.rs:47:17:51:17 | ExprStmt | test.rs:49:27:49:27 | b |
+| test.rs:47:17:51:17 | ExprStmt | test.rs:50:21:50:33 | ExprStmt |
+| test.rs:48:21:48:26 | ExprStmt | test.rs:48:21:48:26 | ExprStmt |
+| test.rs:49:24:51:17 | if b {...} | test.rs:49:24:51:17 | if b {...} |
+| test.rs:49:27:49:27 | b | test.rs:49:24:51:17 | if b {...} |
+| test.rs:49:27:49:27 | b | test.rs:49:27:49:27 | b |
+| test.rs:49:27:49:27 | b | test.rs:50:21:50:33 | ExprStmt |
+| test.rs:50:21:50:33 | ExprStmt | test.rs:50:21:50:33 | ExprStmt |
+| test.rs:58:5:70:5 | enter fn test_continue_with_labels | test.rs:58:5:70:5 | enter fn test_continue_with_labels |
+| test.rs:58:5:70:5 | enter fn test_continue_with_labels | test.rs:60:13:60:14 | ExprStmt |
+| test.rs:58:5:70:5 | enter fn test_continue_with_labels | test.rs:62:17:66:17 | ExprStmt |
+| test.rs:58:5:70:5 | enter fn test_continue_with_labels | test.rs:63:21:63:29 | ExprStmt |
+| test.rs:58:5:70:5 | enter fn test_continue_with_labels | test.rs:64:24:66:17 | if b {...} |
+| test.rs:58:5:70:5 | enter fn test_continue_with_labels | test.rs:64:27:64:27 | b |
+| test.rs:58:5:70:5 | enter fn test_continue_with_labels | test.rs:65:21:65:36 | ExprStmt |
+| test.rs:60:13:60:14 | ExprStmt | test.rs:60:13:60:14 | ExprStmt |
+| test.rs:60:13:60:14 | ExprStmt | test.rs:62:17:66:17 | ExprStmt |
+| test.rs:60:13:60:14 | ExprStmt | test.rs:63:21:63:29 | ExprStmt |
+| test.rs:60:13:60:14 | ExprStmt | test.rs:64:24:66:17 | if b {...} |
+| test.rs:60:13:60:14 | ExprStmt | test.rs:64:27:64:27 | b |
+| test.rs:60:13:60:14 | ExprStmt | test.rs:65:21:65:36 | ExprStmt |
+| test.rs:62:17:66:17 | ExprStmt | test.rs:62:17:66:17 | ExprStmt |
+| test.rs:62:17:66:17 | ExprStmt | test.rs:63:21:63:29 | ExprStmt |
+| test.rs:62:17:66:17 | ExprStmt | test.rs:64:24:66:17 | if b {...} |
+| test.rs:62:17:66:17 | ExprStmt | test.rs:64:27:64:27 | b |
+| test.rs:62:17:66:17 | ExprStmt | test.rs:65:21:65:36 | ExprStmt |
+| test.rs:63:21:63:29 | ExprStmt | test.rs:63:21:63:29 | ExprStmt |
+| test.rs:64:24:66:17 | if b {...} | test.rs:64:24:66:17 | if b {...} |
+| test.rs:64:27:64:27 | b | test.rs:64:24:66:17 | if b {...} |
+| test.rs:64:27:64:27 | b | test.rs:64:27:64:27 | b |
+| test.rs:64:27:64:27 | b | test.rs:65:21:65:36 | ExprStmt |
+| test.rs:65:21:65:36 | ExprStmt | test.rs:65:21:65:36 | ExprStmt |
+| test.rs:72:5:84:5 | enter fn test_loop_label_shadowing | test.rs:72:5:84:5 | enter fn test_loop_label_shadowing |
+| test.rs:72:5:84:5 | enter fn test_loop_label_shadowing | test.rs:76:17:80:17 | ExprStmt |
+| test.rs:72:5:84:5 | enter fn test_loop_label_shadowing | test.rs:77:21:77:29 | ExprStmt |
+| test.rs:72:5:84:5 | enter fn test_loop_label_shadowing | test.rs:78:24:80:17 | if b {...} |
+| test.rs:72:5:84:5 | enter fn test_loop_label_shadowing | test.rs:78:27:78:27 | b |
+| test.rs:72:5:84:5 | enter fn test_loop_label_shadowing | test.rs:79:21:79:36 | ExprStmt |
+| test.rs:76:17:80:17 | ExprStmt | test.rs:76:17:80:17 | ExprStmt |
+| test.rs:76:17:80:17 | ExprStmt | test.rs:77:21:77:29 | ExprStmt |
+| test.rs:76:17:80:17 | ExprStmt | test.rs:78:24:80:17 | if b {...} |
+| test.rs:76:17:80:17 | ExprStmt | test.rs:78:27:78:27 | b |
+| test.rs:76:17:80:17 | ExprStmt | test.rs:79:21:79:36 | ExprStmt |
+| test.rs:77:21:77:29 | ExprStmt | test.rs:77:21:77:29 | ExprStmt |
+| test.rs:78:24:80:17 | if b {...} | test.rs:78:24:80:17 | if b {...} |
+| test.rs:78:27:78:27 | b | test.rs:78:24:80:17 | if b {...} |
+| test.rs:78:27:78:27 | b | test.rs:78:27:78:27 | b |
+| test.rs:78:27:78:27 | b | test.rs:79:21:79:36 | ExprStmt |
+| test.rs:79:21:79:36 | ExprStmt | test.rs:79:21:79:36 | ExprStmt |
+| test.rs:86:5:95:5 | enter fn test_while | test.rs:86:5:95:5 | enter fn test_while |
+| test.rs:86:5:95:5 | enter fn test_while | test.rs:88:9:94:9 | while b { ... } |
+| test.rs:86:5:95:5 | enter fn test_while | test.rs:88:15:88:15 | b |
+| test.rs:86:5:95:5 | enter fn test_while | test.rs:89:13:89:14 | ExprStmt |
+| test.rs:86:5:95:5 | enter fn test_while | test.rs:90:13:92:13 | if ... {...} |
+| test.rs:86:5:95:5 | enter fn test_while | test.rs:91:17:91:22 | ExprStmt |
+| test.rs:88:9:94:9 | while b { ... } | test.rs:88:9:94:9 | while b { ... } |
+| test.rs:88:15:88:15 | b | test.rs:88:9:94:9 | while b { ... } |
+| test.rs:88:15:88:15 | b | test.rs:88:15:88:15 | b |
+| test.rs:88:15:88:15 | b | test.rs:89:13:89:14 | ExprStmt |
+| test.rs:88:15:88:15 | b | test.rs:90:13:92:13 | if ... {...} |
+| test.rs:88:15:88:15 | b | test.rs:91:17:91:22 | ExprStmt |
+| test.rs:89:13:89:14 | ExprStmt | test.rs:89:13:89:14 | ExprStmt |
+| test.rs:89:13:89:14 | ExprStmt | test.rs:90:13:92:13 | if ... {...} |
+| test.rs:89:13:89:14 | ExprStmt | test.rs:91:17:91:22 | ExprStmt |
+| test.rs:90:13:92:13 | if ... {...} | test.rs:90:13:92:13 | if ... {...} |
+| test.rs:91:17:91:22 | ExprStmt | test.rs:91:17:91:22 | ExprStmt |
+| test.rs:97:5:104:5 | enter fn test_while_let | test.rs:97:5:104:5 | enter fn test_while_let |
+| test.rs:97:5:104:5 | enter fn test_while_let | test.rs:99:9:103:9 | while ... { ... } |
+| test.rs:97:5:104:5 | enter fn test_while_let | test.rs:99:15:99:39 | let ... = ... |
+| test.rs:97:5:104:5 | enter fn test_while_let | test.rs:99:24:99:24 | x |
+| test.rs:97:5:104:5 | enter fn test_while_let | test.rs:100:13:102:13 | if ... {...} |
+| test.rs:97:5:104:5 | enter fn test_while_let | test.rs:101:17:101:22 | ExprStmt |
+| test.rs:99:9:103:9 | while ... { ... } | test.rs:99:9:103:9 | while ... { ... } |
+| test.rs:99:15:99:39 | let ... = ... | test.rs:99:9:103:9 | while ... { ... } |
+| test.rs:99:15:99:39 | let ... = ... | test.rs:99:15:99:39 | let ... = ... |
+| test.rs:99:15:99:39 | let ... = ... | test.rs:99:24:99:24 | x |
+| test.rs:99:15:99:39 | let ... = ... | test.rs:100:13:102:13 | if ... {...} |
+| test.rs:99:15:99:39 | let ... = ... | test.rs:101:17:101:22 | ExprStmt |
+| test.rs:99:24:99:24 | x | test.rs:99:24:99:24 | x |
+| test.rs:99:24:99:24 | x | test.rs:100:13:102:13 | if ... {...} |
+| test.rs:99:24:99:24 | x | test.rs:101:17:101:22 | ExprStmt |
+| test.rs:100:13:102:13 | if ... {...} | test.rs:100:13:102:13 | if ... {...} |
+| test.rs:101:17:101:22 | ExprStmt | test.rs:101:17:101:22 | ExprStmt |
+| test.rs:106:5:113:5 | enter fn test_for | test.rs:106:5:113:5 | enter fn test_for |
+| test.rs:106:5:113:5 | enter fn test_for | test.rs:107:9:112:9 | for ... in ... { ... } |
+| test.rs:106:5:113:5 | enter fn test_for | test.rs:107:13:107:13 | i |
+| test.rs:106:5:113:5 | enter fn test_for | test.rs:108:13:110:13 | ExprStmt |
+| test.rs:106:5:113:5 | enter fn test_for | test.rs:108:13:110:13 | if ... {...} |
+| test.rs:106:5:113:5 | enter fn test_for | test.rs:109:17:109:22 | ExprStmt |
+| test.rs:107:9:112:9 | for ... in ... { ... } | test.rs:107:9:112:9 | for ... in ... { ... } |
+| test.rs:107:13:107:13 | i | test.rs:107:9:112:9 | for ... in ... { ... } |
+| test.rs:107:13:107:13 | i | test.rs:107:13:107:13 | i |
+| test.rs:107:13:107:13 | i | test.rs:108:13:110:13 | ExprStmt |
+| test.rs:107:13:107:13 | i | test.rs:108:13:110:13 | if ... {...} |
+| test.rs:107:13:107:13 | i | test.rs:109:17:109:22 | ExprStmt |
+| test.rs:108:13:110:13 | ExprStmt | test.rs:108:13:110:13 | ExprStmt |
+| test.rs:108:13:110:13 | ExprStmt | test.rs:108:13:110:13 | if ... {...} |
+| test.rs:108:13:110:13 | ExprStmt | test.rs:109:17:109:22 | ExprStmt |
+| test.rs:108:13:110:13 | if ... {...} | test.rs:108:13:110:13 | if ... {...} |
+| test.rs:109:17:109:22 | ExprStmt | test.rs:109:17:109:22 | ExprStmt |
+| test.rs:115:5:119:5 | enter fn break_with_return | test.rs:115:5:119:5 | enter fn break_with_return |
+| test.rs:122:1:125:1 | enter fn test_nested_function | test.rs:122:1:125:1 | enter fn test_nested_function |
+| test.rs:123:19:123:27 | enter \|...\| ... | test.rs:123:19:123:27 | enter \|...\| ... |
+| test.rs:129:5:135:5 | enter fn test_if_else | test.rs:129:5:135:5 | enter fn test_if_else |
+| test.rs:129:5:135:5 | enter fn test_if_else | test.rs:130:9:134:9 | if ... {...} else {...} |
+| test.rs:129:5:135:5 | enter fn test_if_else | test.rs:131:13:131:13 | 0 |
+| test.rs:129:5:135:5 | enter fn test_if_else | test.rs:133:13:133:13 | n |
+| test.rs:130:9:134:9 | if ... {...} else {...} | test.rs:130:9:134:9 | if ... {...} else {...} |
+| test.rs:131:13:131:13 | 0 | test.rs:131:13:131:13 | 0 |
+| test.rs:133:13:133:13 | n | test.rs:133:13:133:13 | n |
+| test.rs:137:5:143:5 | enter fn test_if_let_else | test.rs:137:5:143:5 | enter fn test_if_let_else |
+| test.rs:137:5:143:5 | enter fn test_if_let_else | test.rs:138:9:142:9 | if ... {...} else {...} |
+| test.rs:137:5:143:5 | enter fn test_if_let_else | test.rs:138:21:138:21 | n |
+| test.rs:137:5:143:5 | enter fn test_if_let_else | test.rs:141:13:141:13 | 0 |
+| test.rs:138:9:142:9 | if ... {...} else {...} | test.rs:138:9:142:9 | if ... {...} else {...} |
+| test.rs:138:21:138:21 | n | test.rs:138:21:138:21 | n |
+| test.rs:141:13:141:13 | 0 | test.rs:141:13:141:13 | 0 |
+| test.rs:145:5:150:5 | enter fn test_if_let | test.rs:145:5:150:5 | enter fn test_if_let |
+| test.rs:145:5:150:5 | enter fn test_if_let | test.rs:145:5:150:5 | exit fn test_if_let (normal) |
+| test.rs:145:5:150:5 | enter fn test_if_let | test.rs:146:9:148:9 | if ... {...} |
+| test.rs:145:5:150:5 | enter fn test_if_let | test.rs:146:21:146:21 | n |
+| test.rs:145:5:150:5 | exit fn test_if_let (normal) | test.rs:145:5:150:5 | exit fn test_if_let (normal) |
+| test.rs:146:9:148:9 | if ... {...} | test.rs:146:9:148:9 | if ... {...} |
+| test.rs:146:21:146:21 | n | test.rs:146:21:146:21 | n |
+| test.rs:152:5:158:5 | enter fn test_nested_if | test.rs:152:5:158:5 | enter fn test_nested_if |
+| test.rs:152:5:158:5 | enter fn test_nested_if | test.rs:153:9:157:9 | if ... {...} else {...} |
+| test.rs:152:5:158:5 | enter fn test_nested_if | test.rs:153:13:153:48 | [boolean(false)] if ... {...} else {...} |
+| test.rs:152:5:158:5 | enter fn test_nested_if | test.rs:153:13:153:48 | [boolean(true)] if ... {...} else {...} |
+| test.rs:152:5:158:5 | enter fn test_nested_if | test.rs:153:22:153:32 | [boolean(false)] { ... } |
+| test.rs:152:5:158:5 | enter fn test_nested_if | test.rs:153:22:153:32 | [boolean(true)] { ... } |
+| test.rs:152:5:158:5 | enter fn test_nested_if | test.rs:153:24:153:24 | a |
+| test.rs:152:5:158:5 | enter fn test_nested_if | test.rs:153:39:153:48 | [boolean(false)] { ... } |
+| test.rs:152:5:158:5 | enter fn test_nested_if | test.rs:153:39:153:48 | [boolean(true)] { ... } |
+| test.rs:152:5:158:5 | enter fn test_nested_if | test.rs:153:41:153:41 | a |
+| test.rs:153:9:157:9 | if ... {...} else {...} | test.rs:153:9:157:9 | if ... {...} else {...} |
+| test.rs:153:13:153:48 | [boolean(false)] if ... {...} else {...} | test.rs:153:13:153:48 | [boolean(false)] if ... {...} else {...} |
+| test.rs:153:13:153:48 | [boolean(true)] if ... {...} else {...} | test.rs:153:13:153:48 | [boolean(true)] if ... {...} else {...} |
+| test.rs:153:22:153:32 | [boolean(false)] { ... } | test.rs:153:22:153:32 | [boolean(false)] { ... } |
+| test.rs:153:22:153:32 | [boolean(true)] { ... } | test.rs:153:22:153:32 | [boolean(true)] { ... } |
+| test.rs:153:24:153:24 | a | test.rs:153:22:153:32 | [boolean(false)] { ... } |
+| test.rs:153:24:153:24 | a | test.rs:153:22:153:32 | [boolean(true)] { ... } |
+| test.rs:153:24:153:24 | a | test.rs:153:24:153:24 | a |
+| test.rs:153:39:153:48 | [boolean(false)] { ... } | test.rs:153:39:153:48 | [boolean(false)] { ... } |
+| test.rs:153:39:153:48 | [boolean(true)] { ... } | test.rs:153:39:153:48 | [boolean(true)] { ... } |
+| test.rs:153:41:153:41 | a | test.rs:153:39:153:48 | [boolean(false)] { ... } |
+| test.rs:153:41:153:41 | a | test.rs:153:39:153:48 | [boolean(true)] { ... } |
+| test.rs:153:41:153:41 | a | test.rs:153:41:153:41 | a |
+| test.rs:160:5:169:5 | enter fn test_nested_if_match | test.rs:160:5:169:5 | enter fn test_nested_if_match |
+| test.rs:160:5:169:5 | enter fn test_nested_if_match | test.rs:161:9:168:9 | if ... {...} else {...} |
+| test.rs:160:5:169:5 | enter fn test_nested_if_match | test.rs:162:18:162:21 | true |
+| test.rs:160:5:169:5 | enter fn test_nested_if_match | test.rs:163:13:163:13 | _ |
+| test.rs:161:9:168:9 | if ... {...} else {...} | test.rs:161:9:168:9 | if ... {...} else {...} |
+| test.rs:162:18:162:21 | true | test.rs:162:18:162:21 | true |
+| test.rs:163:13:163:13 | _ | test.rs:163:13:163:13 | _ |
+| test.rs:171:5:180:5 | enter fn test_nested_if_block | test.rs:171:5:180:5 | enter fn test_nested_if_block |
+| test.rs:171:5:180:5 | enter fn test_nested_if_block | test.rs:172:9:179:9 | if ... {...} else {...} |
+| test.rs:171:5:180:5 | enter fn test_nested_if_block | test.rs:172:12:175:9 | [boolean(false)] { ... } |
+| test.rs:171:5:180:5 | enter fn test_nested_if_block | test.rs:172:12:175:9 | [boolean(true)] { ... } |
+| test.rs:172:9:179:9 | if ... {...} else {...} | test.rs:172:9:179:9 | if ... {...} else {...} |
+| test.rs:172:12:175:9 | [boolean(false)] { ... } | test.rs:172:12:175:9 | [boolean(false)] { ... } |
+| test.rs:172:12:175:9 | [boolean(true)] { ... } | test.rs:172:12:175:9 | [boolean(true)] { ... } |
+| test.rs:182:5:192:5 | enter fn test_if_assignment | test.rs:182:5:192:5 | enter fn test_if_assignment |
+| test.rs:182:5:192:5 | enter fn test_if_assignment | test.rs:184:9:191:9 | if ... {...} else {...} |
+| test.rs:182:5:192:5 | enter fn test_if_assignment | test.rs:184:12:187:9 | [boolean(false)] { ... } |
+| test.rs:182:5:192:5 | enter fn test_if_assignment | test.rs:184:12:187:9 | [boolean(true)] { ... } |
+| test.rs:184:9:191:9 | if ... {...} else {...} | test.rs:184:9:191:9 | if ... {...} else {...} |
+| test.rs:184:12:187:9 | [boolean(false)] { ... } | test.rs:184:12:187:9 | [boolean(false)] { ... } |
+| test.rs:184:12:187:9 | [boolean(true)] { ... } | test.rs:184:12:187:9 | [boolean(true)] { ... } |
+| test.rs:194:5:205:5 | enter fn test_if_loop1 | test.rs:194:5:205:5 | enter fn test_if_loop1 |
+| test.rs:194:5:205:5 | enter fn test_if_loop1 | test.rs:195:9:204:9 | if ... {...} else {...} |
+| test.rs:194:5:205:5 | enter fn test_if_loop1 | test.rs:196:13:198:13 | if ... {...} |
+| test.rs:194:5:205:5 | enter fn test_if_loop1 | test.rs:196:13:198:14 | ExprStmt |
+| test.rs:194:5:205:5 | enter fn test_if_loop1 | test.rs:197:17:197:28 | [boolean(false)] break ... |
+| test.rs:194:5:205:5 | enter fn test_if_loop1 | test.rs:197:17:197:28 | [boolean(true)] break ... |
+| test.rs:194:5:205:5 | enter fn test_if_loop1 | test.rs:197:17:197:29 | ExprStmt |
+| test.rs:195:9:204:9 | if ... {...} else {...} | test.rs:195:9:204:9 | if ... {...} else {...} |
+| test.rs:196:13:198:13 | if ... {...} | test.rs:196:13:198:13 | if ... {...} |
+| test.rs:196:13:198:14 | ExprStmt | test.rs:195:9:204:9 | if ... {...} else {...} |
+| test.rs:196:13:198:14 | ExprStmt | test.rs:196:13:198:13 | if ... {...} |
+| test.rs:196:13:198:14 | ExprStmt | test.rs:196:13:198:14 | ExprStmt |
+| test.rs:196:13:198:14 | ExprStmt | test.rs:197:17:197:28 | [boolean(false)] break ... |
+| test.rs:196:13:198:14 | ExprStmt | test.rs:197:17:197:28 | [boolean(true)] break ... |
+| test.rs:196:13:198:14 | ExprStmt | test.rs:197:17:197:29 | ExprStmt |
+| test.rs:197:17:197:28 | [boolean(false)] break ... | test.rs:197:17:197:28 | [boolean(false)] break ... |
+| test.rs:197:17:197:28 | [boolean(true)] break ... | test.rs:197:17:197:28 | [boolean(true)] break ... |
+| test.rs:197:17:197:29 | ExprStmt | test.rs:195:9:204:9 | if ... {...} else {...} |
+| test.rs:197:17:197:29 | ExprStmt | test.rs:197:17:197:28 | [boolean(false)] break ... |
+| test.rs:197:17:197:29 | ExprStmt | test.rs:197:17:197:28 | [boolean(true)] break ... |
+| test.rs:197:17:197:29 | ExprStmt | test.rs:197:17:197:29 | ExprStmt |
+| test.rs:207:5:218:5 | enter fn test_if_loop2 | test.rs:207:5:218:5 | enter fn test_if_loop2 |
+| test.rs:207:5:218:5 | enter fn test_if_loop2 | test.rs:208:9:217:9 | if ... {...} else {...} |
+| test.rs:207:5:218:5 | enter fn test_if_loop2 | test.rs:209:13:211:13 | if ... {...} |
+| test.rs:207:5:218:5 | enter fn test_if_loop2 | test.rs:209:13:211:14 | ExprStmt |
+| test.rs:207:5:218:5 | enter fn test_if_loop2 | test.rs:210:17:210:35 | [boolean(false)] break ''label ... |
+| test.rs:207:5:218:5 | enter fn test_if_loop2 | test.rs:210:17:210:35 | [boolean(true)] break ''label ... |
+| test.rs:207:5:218:5 | enter fn test_if_loop2 | test.rs:210:17:210:36 | ExprStmt |
+| test.rs:208:9:217:9 | if ... {...} else {...} | test.rs:208:9:217:9 | if ... {...} else {...} |
+| test.rs:209:13:211:13 | if ... {...} | test.rs:209:13:211:13 | if ... {...} |
+| test.rs:209:13:211:14 | ExprStmt | test.rs:208:9:217:9 | if ... {...} else {...} |
+| test.rs:209:13:211:14 | ExprStmt | test.rs:209:13:211:13 | if ... {...} |
+| test.rs:209:13:211:14 | ExprStmt | test.rs:209:13:211:14 | ExprStmt |
+| test.rs:209:13:211:14 | ExprStmt | test.rs:210:17:210:35 | [boolean(false)] break ''label ... |
+| test.rs:209:13:211:14 | ExprStmt | test.rs:210:17:210:35 | [boolean(true)] break ''label ... |
+| test.rs:209:13:211:14 | ExprStmt | test.rs:210:17:210:36 | ExprStmt |
+| test.rs:210:17:210:35 | [boolean(false)] break ''label ... | test.rs:210:17:210:35 | [boolean(false)] break ''label ... |
+| test.rs:210:17:210:35 | [boolean(true)] break ''label ... | test.rs:210:17:210:35 | [boolean(true)] break ''label ... |
+| test.rs:210:17:210:36 | ExprStmt | test.rs:208:9:217:9 | if ... {...} else {...} |
+| test.rs:210:17:210:36 | ExprStmt | test.rs:210:17:210:35 | [boolean(false)] break ''label ... |
+| test.rs:210:17:210:36 | ExprStmt | test.rs:210:17:210:35 | [boolean(true)] break ''label ... |
+| test.rs:210:17:210:36 | ExprStmt | test.rs:210:17:210:36 | ExprStmt |
+| test.rs:220:5:228:5 | enter fn test_labelled_block | test.rs:220:5:228:5 | enter fn test_labelled_block |
+| test.rs:220:5:228:5 | enter fn test_labelled_block | test.rs:221:9:227:9 | if ... {...} else {...} |
+| test.rs:220:5:228:5 | enter fn test_labelled_block | test.rs:222:13:222:30 | [boolean(false)] break ''block ... |
+| test.rs:220:5:228:5 | enter fn test_labelled_block | test.rs:222:13:222:30 | [boolean(true)] break ''block ... |
+| test.rs:221:9:227:9 | if ... {...} else {...} | test.rs:221:9:227:9 | if ... {...} else {...} |
+| test.rs:222:13:222:30 | [boolean(false)] break ''block ... | test.rs:222:13:222:30 | [boolean(false)] break ''block ... |
+| test.rs:222:13:222:30 | [boolean(true)] break ''block ... | test.rs:222:13:222:30 | [boolean(true)] break ''block ... |
+| test.rs:233:5:236:5 | enter fn test_and_operator | test.rs:233:5:236:5 | enter fn test_and_operator |
+| test.rs:233:5:236:5 | enter fn test_and_operator | test.rs:234:17:234:22 | [boolean(false)] ... && ... |
+| test.rs:233:5:236:5 | enter fn test_and_operator | test.rs:234:17:234:22 | [boolean(true)] ... && ... |
+| test.rs:233:5:236:5 | enter fn test_and_operator | test.rs:234:17:234:27 | ... && ... |
+| test.rs:233:5:236:5 | enter fn test_and_operator | test.rs:234:22:234:22 | b |
+| test.rs:234:17:234:22 | [boolean(false)] ... && ... | test.rs:234:17:234:22 | [boolean(false)] ... && ... |
+| test.rs:234:17:234:22 | [boolean(true)] ... && ... | test.rs:234:17:234:22 | [boolean(true)] ... && ... |
+| test.rs:234:17:234:27 | ... && ... | test.rs:234:17:234:27 | ... && ... |
+| test.rs:234:22:234:22 | b | test.rs:234:17:234:22 | [boolean(true)] ... && ... |
+| test.rs:234:22:234:22 | b | test.rs:234:22:234:22 | b |
+| test.rs:238:5:241:5 | enter fn test_or_operator | test.rs:238:5:241:5 | enter fn test_or_operator |
+| test.rs:238:5:241:5 | enter fn test_or_operator | test.rs:239:17:239:22 | [boolean(false)] ... \|\| ... |
+| test.rs:238:5:241:5 | enter fn test_or_operator | test.rs:239:17:239:22 | [boolean(true)] ... \|\| ... |
+| test.rs:238:5:241:5 | enter fn test_or_operator | test.rs:239:17:239:27 | ... \|\| ... |
+| test.rs:238:5:241:5 | enter fn test_or_operator | test.rs:239:22:239:22 | b |
+| test.rs:239:17:239:22 | [boolean(false)] ... \|\| ... | test.rs:239:17:239:22 | [boolean(false)] ... \|\| ... |
+| test.rs:239:17:239:22 | [boolean(true)] ... \|\| ... | test.rs:239:17:239:22 | [boolean(true)] ... \|\| ... |
+| test.rs:239:17:239:27 | ... \|\| ... | test.rs:239:17:239:27 | ... \|\| ... |
+| test.rs:239:22:239:22 | b | test.rs:239:17:239:22 | [boolean(false)] ... \|\| ... |
+| test.rs:239:22:239:22 | b | test.rs:239:22:239:22 | b |
+| test.rs:243:5:246:5 | enter fn test_or_operator_2 | test.rs:243:5:246:5 | enter fn test_or_operator_2 |
+| test.rs:243:5:246:5 | enter fn test_or_operator_2 | test.rs:244:17:244:30 | [boolean(false)] ... \|\| ... |
+| test.rs:243:5:246:5 | enter fn test_or_operator_2 | test.rs:244:17:244:30 | [boolean(true)] ... \|\| ... |
+| test.rs:243:5:246:5 | enter fn test_or_operator_2 | test.rs:244:17:244:35 | ... \|\| ... |
+| test.rs:243:5:246:5 | enter fn test_or_operator_2 | test.rs:244:23:244:23 | b |
+| test.rs:244:17:244:30 | [boolean(false)] ... \|\| ... | test.rs:244:17:244:30 | [boolean(false)] ... \|\| ... |
+| test.rs:244:17:244:30 | [boolean(true)] ... \|\| ... | test.rs:244:17:244:30 | [boolean(true)] ... \|\| ... |
+| test.rs:244:17:244:35 | ... \|\| ... | test.rs:244:17:244:35 | ... \|\| ... |
+| test.rs:244:23:244:23 | b | test.rs:244:17:244:30 | [boolean(false)] ... \|\| ... |
+| test.rs:244:23:244:23 | b | test.rs:244:23:244:23 | b |
+| test.rs:248:5:251:5 | enter fn test_not_operator | test.rs:248:5:251:5 | enter fn test_not_operator |
+| test.rs:253:5:259:5 | enter fn test_if_and_operator | test.rs:253:5:259:5 | enter fn test_if_and_operator |
+| test.rs:253:5:259:5 | enter fn test_if_and_operator | test.rs:254:9:258:9 | if ... {...} else {...} |
+| test.rs:253:5:259:5 | enter fn test_if_and_operator | test.rs:254:12:254:17 | [boolean(false)] ... && ... |
+| test.rs:253:5:259:5 | enter fn test_if_and_operator | test.rs:254:12:254:17 | [boolean(true)] ... && ... |
+| test.rs:253:5:259:5 | enter fn test_if_and_operator | test.rs:254:12:254:22 | [boolean(false)] ... && ... |
+| test.rs:253:5:259:5 | enter fn test_if_and_operator | test.rs:254:12:254:22 | [boolean(true)] ... && ... |
+| test.rs:253:5:259:5 | enter fn test_if_and_operator | test.rs:254:17:254:17 | b |
+| test.rs:254:9:258:9 | if ... {...} else {...} | test.rs:254:9:258:9 | if ... {...} else {...} |
+| test.rs:254:12:254:17 | [boolean(false)] ... && ... | test.rs:254:12:254:17 | [boolean(false)] ... && ... |
+| test.rs:254:12:254:17 | [boolean(true)] ... && ... | test.rs:254:12:254:17 | [boolean(true)] ... && ... |
+| test.rs:254:12:254:17 | [boolean(true)] ... && ... | test.rs:254:12:254:22 | [boolean(true)] ... && ... |
+| test.rs:254:12:254:22 | [boolean(false)] ... && ... | test.rs:254:12:254:22 | [boolean(false)] ... && ... |
+| test.rs:254:12:254:22 | [boolean(true)] ... && ... | test.rs:254:12:254:22 | [boolean(true)] ... && ... |
+| test.rs:254:17:254:17 | b | test.rs:254:12:254:17 | [boolean(true)] ... && ... |
+| test.rs:254:17:254:17 | b | test.rs:254:12:254:22 | [boolean(true)] ... && ... |
+| test.rs:254:17:254:17 | b | test.rs:254:17:254:17 | b |
+| test.rs:261:5:267:5 | enter fn test_if_or_operator | test.rs:261:5:267:5 | enter fn test_if_or_operator |
+| test.rs:261:5:267:5 | enter fn test_if_or_operator | test.rs:262:9:266:9 | if ... {...} else {...} |
+| test.rs:261:5:267:5 | enter fn test_if_or_operator | test.rs:262:12:262:17 | [boolean(false)] ... \|\| ... |
+| test.rs:261:5:267:5 | enter fn test_if_or_operator | test.rs:262:12:262:17 | [boolean(true)] ... \|\| ... |
+| test.rs:261:5:267:5 | enter fn test_if_or_operator | test.rs:262:12:262:22 | [boolean(false)] ... \|\| ... |
+| test.rs:261:5:267:5 | enter fn test_if_or_operator | test.rs:262:12:262:22 | [boolean(true)] ... \|\| ... |
+| test.rs:261:5:267:5 | enter fn test_if_or_operator | test.rs:262:17:262:17 | b |
+| test.rs:262:9:266:9 | if ... {...} else {...} | test.rs:262:9:266:9 | if ... {...} else {...} |
+| test.rs:262:12:262:17 | [boolean(false)] ... \|\| ... | test.rs:262:12:262:17 | [boolean(false)] ... \|\| ... |
+| test.rs:262:12:262:17 | [boolean(false)] ... \|\| ... | test.rs:262:12:262:22 | [boolean(false)] ... \|\| ... |
+| test.rs:262:12:262:17 | [boolean(true)] ... \|\| ... | test.rs:262:12:262:17 | [boolean(true)] ... \|\| ... |
+| test.rs:262:12:262:22 | [boolean(false)] ... \|\| ... | test.rs:262:12:262:22 | [boolean(false)] ... \|\| ... |
+| test.rs:262:12:262:22 | [boolean(true)] ... \|\| ... | test.rs:262:12:262:22 | [boolean(true)] ... \|\| ... |
+| test.rs:262:17:262:17 | b | test.rs:262:12:262:17 | [boolean(false)] ... \|\| ... |
+| test.rs:262:17:262:17 | b | test.rs:262:12:262:22 | [boolean(false)] ... \|\| ... |
+| test.rs:262:17:262:17 | b | test.rs:262:17:262:17 | b |
+| test.rs:269:5:275:5 | enter fn test_if_not_operator | test.rs:269:5:275:5 | enter fn test_if_not_operator |
+| test.rs:269:5:275:5 | enter fn test_if_not_operator | test.rs:270:9:274:9 | if ... {...} else {...} |
+| test.rs:269:5:275:5 | enter fn test_if_not_operator | test.rs:270:12:270:13 | [boolean(false)] ! ... |
+| test.rs:269:5:275:5 | enter fn test_if_not_operator | test.rs:270:12:270:13 | [boolean(true)] ! ... |
+| test.rs:270:9:274:9 | if ... {...} else {...} | test.rs:270:9:274:9 | if ... {...} else {...} |
+| test.rs:270:12:270:13 | [boolean(false)] ! ... | test.rs:270:12:270:13 | [boolean(false)] ! ... |
+| test.rs:270:12:270:13 | [boolean(true)] ! ... | test.rs:270:12:270:13 | [boolean(true)] ! ... |
+| test.rs:277:5:279:5 | enter fn test_and_return | test.rs:277:5:279:5 | enter fn test_and_return |
+| test.rs:277:5:279:5 | enter fn test_and_return | test.rs:277:5:279:5 | exit fn test_and_return (normal) |
+| test.rs:277:5:279:5 | enter fn test_and_return | test.rs:278:9:278:19 | ... && ... |
+| test.rs:277:5:279:5 | enter fn test_and_return | test.rs:278:14:278:19 | return |
+| test.rs:277:5:279:5 | exit fn test_and_return (normal) | test.rs:277:5:279:5 | exit fn test_and_return (normal) |
+| test.rs:278:9:278:19 | ... && ... | test.rs:278:9:278:19 | ... && ... |
+| test.rs:278:14:278:19 | return | test.rs:278:14:278:19 | return |
+| test.rs:281:5:286:5 | enter fn test_and_true | test.rs:281:5:286:5 | enter fn test_and_true |
+| test.rs:281:5:286:5 | enter fn test_and_true | test.rs:281:5:286:5 | exit fn test_and_true (normal) |
+| test.rs:281:5:286:5 | enter fn test_and_true | test.rs:282:13:282:21 | [boolean(false)] ... && ... |
+| test.rs:281:5:286:5 | enter fn test_and_true | test.rs:282:18:282:21 | true |
+| test.rs:281:5:286:5 | exit fn test_and_true (normal) | test.rs:281:5:286:5 | exit fn test_and_true (normal) |
+| test.rs:282:13:282:21 | [boolean(false)] ... && ... | test.rs:282:13:282:21 | [boolean(false)] ... && ... |
+| test.rs:282:18:282:21 | true | test.rs:282:18:282:21 | true |
+| test.rs:292:5:294:5 | enter fn test_question_mark_operator_1 | test.rs:292:5:294:5 | enter fn test_question_mark_operator_1 |
+| test.rs:292:5:294:5 | enter fn test_question_mark_operator_1 | test.rs:292:5:294:5 | exit fn test_question_mark_operator_1 (normal) |
+| test.rs:292:5:294:5 | enter fn test_question_mark_operator_1 | test.rs:293:32:293:32 | 4 |
+| test.rs:292:5:294:5 | exit fn test_question_mark_operator_1 (normal) | test.rs:292:5:294:5 | exit fn test_question_mark_operator_1 (normal) |
+| test.rs:293:32:293:32 | 4 | test.rs:293:32:293:32 | 4 |
+| test.rs:296:5:301:5 | enter fn test_question_mark_operator_2 | test.rs:296:5:301:5 | enter fn test_question_mark_operator_2 |
+| test.rs:296:5:301:5 | enter fn test_question_mark_operator_2 | test.rs:296:5:301:5 | exit fn test_question_mark_operator_2 (normal) |
+| test.rs:296:5:301:5 | enter fn test_question_mark_operator_2 | test.rs:297:9:300:9 | match ... { ... } |
+| test.rs:296:5:301:5 | enter fn test_question_mark_operator_2 | test.rs:298:13:298:16 | true |
+| test.rs:296:5:301:5 | enter fn test_question_mark_operator_2 | test.rs:298:21:298:24 | Some |
+| test.rs:296:5:301:5 | enter fn test_question_mark_operator_2 | test.rs:299:13:299:17 | false |
+| test.rs:296:5:301:5 | exit fn test_question_mark_operator_2 (normal) | test.rs:296:5:301:5 | exit fn test_question_mark_operator_2 (normal) |
+| test.rs:297:9:300:9 | match ... { ... } | test.rs:297:9:300:9 | match ... { ... } |
+| test.rs:298:13:298:16 | true | test.rs:297:9:300:9 | match ... { ... } |
+| test.rs:298:13:298:16 | true | test.rs:298:13:298:16 | true |
+| test.rs:298:13:298:16 | true | test.rs:298:21:298:24 | Some |
+| test.rs:298:13:298:16 | true | test.rs:299:13:299:17 | false |
+| test.rs:298:21:298:24 | Some | test.rs:298:21:298:24 | Some |
+| test.rs:299:13:299:17 | false | test.rs:299:13:299:17 | false |
+| test.rs:307:5:313:5 | enter fn test_match | test.rs:307:5:313:5 | enter fn test_match |
+| test.rs:307:5:313:5 | enter fn test_match | test.rs:308:9:312:9 | match maybe_digit { ... } |
+| test.rs:307:5:313:5 | enter fn test_match | test.rs:309:26:309:26 | x |
+| test.rs:307:5:313:5 | enter fn test_match | test.rs:309:42:309:42 | x |
+| test.rs:307:5:313:5 | enter fn test_match | test.rs:310:13:310:27 | ...::Some(...) |
+| test.rs:307:5:313:5 | enter fn test_match | test.rs:310:26:310:26 | x |
+| test.rs:307:5:313:5 | enter fn test_match | test.rs:311:13:311:24 | ...::None |
+| test.rs:308:9:312:9 | match maybe_digit { ... } | test.rs:308:9:312:9 | match maybe_digit { ... } |
+| test.rs:309:26:309:26 | x | test.rs:309:26:309:26 | x |
+| test.rs:309:26:309:26 | x | test.rs:309:42:309:42 | x |
+| test.rs:309:42:309:42 | x | test.rs:309:42:309:42 | x |
+| test.rs:310:13:310:27 | ...::Some(...) | test.rs:310:13:310:27 | ...::Some(...) |
+| test.rs:310:13:310:27 | ...::Some(...) | test.rs:310:26:310:26 | x |
+| test.rs:310:13:310:27 | ...::Some(...) | test.rs:311:13:311:24 | ...::None |
+| test.rs:310:26:310:26 | x | test.rs:310:26:310:26 | x |
+| test.rs:311:13:311:24 | ...::None | test.rs:311:13:311:24 | ...::None |
+| test.rs:315:5:324:5 | enter fn test_match_with_return_in_scrutinee | test.rs:315:5:324:5 | enter fn test_match_with_return_in_scrutinee |
+| test.rs:315:5:324:5 | enter fn test_match_with_return_in_scrutinee | test.rs:315:5:324:5 | exit fn test_match_with_return_in_scrutinee (normal) |
+| test.rs:315:5:324:5 | enter fn test_match_with_return_in_scrutinee | test.rs:316:9:323:9 | match ... { ... } |
+| test.rs:315:5:324:5 | enter fn test_match_with_return_in_scrutinee | test.rs:317:13:317:21 | ExprStmt |
+| test.rs:315:5:324:5 | enter fn test_match_with_return_in_scrutinee | test.rs:319:13:319:23 | maybe_digit |
+| test.rs:315:5:324:5 | enter fn test_match_with_return_in_scrutinee | test.rs:321:26:321:26 | x |
+| test.rs:315:5:324:5 | enter fn test_match_with_return_in_scrutinee | test.rs:322:13:322:24 | ...::None |
+| test.rs:315:5:324:5 | exit fn test_match_with_return_in_scrutinee (normal) | test.rs:315:5:324:5 | exit fn test_match_with_return_in_scrutinee (normal) |
+| test.rs:316:9:323:9 | match ... { ... } | test.rs:316:9:323:9 | match ... { ... } |
+| test.rs:317:13:317:21 | ExprStmt | test.rs:317:13:317:21 | ExprStmt |
+| test.rs:319:13:319:23 | maybe_digit | test.rs:316:9:323:9 | match ... { ... } |
+| test.rs:319:13:319:23 | maybe_digit | test.rs:319:13:319:23 | maybe_digit |
+| test.rs:319:13:319:23 | maybe_digit | test.rs:321:26:321:26 | x |
+| test.rs:319:13:319:23 | maybe_digit | test.rs:322:13:322:24 | ...::None |
+| test.rs:321:26:321:26 | x | test.rs:321:26:321:26 | x |
+| test.rs:322:13:322:24 | ...::None | test.rs:322:13:322:24 | ...::None |
+| test.rs:326:5:331:5 | enter fn test_match_and | test.rs:326:5:331:5 | enter fn test_match_and |
+| test.rs:326:5:331:5 | enter fn test_match_and | test.rs:327:9:330:18 | ... && ... |
+| test.rs:326:5:331:5 | enter fn test_match_and | test.rs:327:10:330:9 | [boolean(false)] match r { ... } |
+| test.rs:326:5:331:5 | enter fn test_match_and | test.rs:327:10:330:9 | [boolean(true)] match r { ... } |
+| test.rs:326:5:331:5 | enter fn test_match_and | test.rs:328:18:328:18 | a |
+| test.rs:326:5:331:5 | enter fn test_match_and | test.rs:329:13:329:13 | _ |
+| test.rs:327:9:330:18 | ... && ... | test.rs:327:9:330:18 | ... && ... |
+| test.rs:327:10:330:9 | [boolean(false)] match r { ... } | test.rs:327:10:330:9 | [boolean(false)] match r { ... } |
+| test.rs:327:10:330:9 | [boolean(true)] match r { ... } | test.rs:327:10:330:9 | [boolean(true)] match r { ... } |
+| test.rs:328:18:328:18 | a | test.rs:327:10:330:9 | [boolean(true)] match r { ... } |
+| test.rs:328:18:328:18 | a | test.rs:328:18:328:18 | a |
+| test.rs:329:13:329:13 | _ | test.rs:329:13:329:13 | _ |
+| test.rs:333:5:338:5 | enter fn test_match_with_no_arms | test.rs:333:5:338:5 | enter fn test_match_with_no_arms |
+| test.rs:333:5:338:5 | enter fn test_match_with_no_arms | test.rs:334:9:337:9 | match r { ... } |
+| test.rs:333:5:338:5 | enter fn test_match_with_no_arms | test.rs:335:16:335:20 | value |
+| test.rs:333:5:338:5 | enter fn test_match_with_no_arms | test.rs:336:13:336:22 | Err(...) |
+| test.rs:334:9:337:9 | match r { ... } | test.rs:334:9:337:9 | match r { ... } |
+| test.rs:335:16:335:20 | value | test.rs:335:16:335:20 | value |
+| test.rs:336:13:336:22 | Err(...) | test.rs:336:13:336:22 | Err(...) |
+| test.rs:343:5:346:5 | enter fn test_let_match | test.rs:343:5:346:5 | enter fn test_let_match |
+| test.rs:343:5:346:5 | enter fn test_let_match | test.rs:344:18:344:18 | n |
+| test.rs:343:5:346:5 | enter fn test_let_match | test.rs:344:39:344:53 | MacroStmts |
+| test.rs:344:18:344:18 | n | test.rs:344:18:344:18 | n |
+| test.rs:344:39:344:53 | MacroStmts | test.rs:344:39:344:53 | MacroStmts |
+| test.rs:348:5:354:5 | enter fn test_let_with_return | test.rs:348:5:354:5 | enter fn test_let_with_return |
+| test.rs:348:5:354:5 | enter fn test_let_with_return | test.rs:348:5:354:5 | exit fn test_let_with_return (normal) |
+| test.rs:348:5:354:5 | enter fn test_let_with_return | test.rs:350:18:350:20 | ret |
+| test.rs:348:5:354:5 | enter fn test_let_with_return | test.rs:351:13:351:16 | None |
+| test.rs:348:5:354:5 | exit fn test_let_with_return (normal) | test.rs:348:5:354:5 | exit fn test_let_with_return (normal) |
+| test.rs:350:18:350:20 | ret | test.rs:350:18:350:20 | ret |
+| test.rs:351:13:351:16 | None | test.rs:351:13:351:16 | None |
+| test.rs:359:5:362:5 | enter fn empty_tuple_pattern | test.rs:359:5:362:5 | enter fn empty_tuple_pattern |
+| test.rs:366:5:370:5 | enter fn empty_struct_pattern | test.rs:366:5:370:5 | enter fn empty_struct_pattern |
+| test.rs:372:5:379:5 | enter fn range_pattern | test.rs:372:5:379:5 | enter fn range_pattern |
+| test.rs:372:5:379:5 | enter fn range_pattern | test.rs:373:9:378:9 | match 42 { ... } |
+| test.rs:372:5:379:5 | enter fn range_pattern | test.rs:374:15:374:15 | 0 |
+| test.rs:372:5:379:5 | enter fn range_pattern | test.rs:374:20:374:20 | 1 |
+| test.rs:372:5:379:5 | enter fn range_pattern | test.rs:375:13:375:13 | 1 |
+| test.rs:372:5:379:5 | enter fn range_pattern | test.rs:375:13:375:16 | RangePat |
+| test.rs:372:5:379:5 | enter fn range_pattern | test.rs:375:16:375:16 | 2 |
+| test.rs:372:5:379:5 | enter fn range_pattern | test.rs:375:21:375:21 | 2 |
+| test.rs:372:5:379:5 | enter fn range_pattern | test.rs:376:13:376:13 | 5 |
+| test.rs:372:5:379:5 | enter fn range_pattern | test.rs:376:13:376:15 | RangePat |
+| test.rs:372:5:379:5 | enter fn range_pattern | test.rs:376:20:376:20 | 3 |
+| test.rs:372:5:379:5 | enter fn range_pattern | test.rs:377:13:377:13 | _ |
+| test.rs:373:9:378:9 | match 42 { ... } | test.rs:373:9:378:9 | match 42 { ... } |
+| test.rs:374:15:374:15 | 0 | test.rs:374:15:374:15 | 0 |
+| test.rs:374:15:374:15 | 0 | test.rs:374:20:374:20 | 1 |
+| test.rs:374:20:374:20 | 1 | test.rs:374:20:374:20 | 1 |
+| test.rs:375:13:375:13 | 1 | test.rs:375:13:375:13 | 1 |
+| test.rs:375:13:375:13 | 1 | test.rs:375:16:375:16 | 2 |
+| test.rs:375:13:375:13 | 1 | test.rs:375:21:375:21 | 2 |
+| test.rs:375:13:375:16 | RangePat | test.rs:375:13:375:13 | 1 |
+| test.rs:375:13:375:16 | RangePat | test.rs:375:13:375:16 | RangePat |
+| test.rs:375:13:375:16 | RangePat | test.rs:375:16:375:16 | 2 |
+| test.rs:375:13:375:16 | RangePat | test.rs:375:21:375:21 | 2 |
+| test.rs:375:13:375:16 | RangePat | test.rs:376:13:376:13 | 5 |
+| test.rs:375:13:375:16 | RangePat | test.rs:376:13:376:15 | RangePat |
+| test.rs:375:13:375:16 | RangePat | test.rs:376:20:376:20 | 3 |
+| test.rs:375:13:375:16 | RangePat | test.rs:377:13:377:13 | _ |
+| test.rs:375:16:375:16 | 2 | test.rs:375:16:375:16 | 2 |
+| test.rs:375:16:375:16 | 2 | test.rs:375:21:375:21 | 2 |
+| test.rs:375:21:375:21 | 2 | test.rs:375:21:375:21 | 2 |
+| test.rs:376:13:376:13 | 5 | test.rs:376:13:376:13 | 5 |
+| test.rs:376:13:376:13 | 5 | test.rs:376:20:376:20 | 3 |
+| test.rs:376:13:376:15 | RangePat | test.rs:376:13:376:13 | 5 |
+| test.rs:376:13:376:15 | RangePat | test.rs:376:13:376:15 | RangePat |
+| test.rs:376:13:376:15 | RangePat | test.rs:376:20:376:20 | 3 |
+| test.rs:376:13:376:15 | RangePat | test.rs:377:13:377:13 | _ |
+| test.rs:376:20:376:20 | 3 | test.rs:376:20:376:20 | 3 |
+| test.rs:377:13:377:13 | _ | test.rs:377:13:377:13 | _ |
+| test.rs:383:5:388:5 | enter fn test_infinite_loop | test.rs:383:5:388:5 | enter fn test_infinite_loop |
+| test.rs:383:5:388:5 | enter fn test_infinite_loop | test.rs:385:13:385:14 | TupleExpr |
+| test.rs:385:13:385:14 | TupleExpr | test.rs:385:13:385:14 | TupleExpr |
+| test.rs:392:5:394:5 | enter fn say_hello | test.rs:392:5:394:5 | enter fn say_hello |
+| test.rs:396:5:415:5 | enter fn async_block | test.rs:396:5:415:5 | enter fn async_block |
+| test.rs:397:26:399:9 | enter { ... } | test.rs:397:26:399:9 | enter { ... } |
+| test.rs:400:31:402:9 | enter { ... } | test.rs:400:31:402:9 | enter { ... } |
+| test.rs:409:22:414:9 | enter \|...\| ... | test.rs:409:22:414:9 | enter \|...\| ... |
+| test.rs:409:28:414:9 | enter { ... } | test.rs:409:28:414:9 | enter { ... } |
+| test.rs:409:28:414:9 | enter { ... } | test.rs:409:28:414:9 | exit { ... } (normal) |
+| test.rs:409:28:414:9 | enter { ... } | test.rs:410:13:412:13 | if b {...} |
+| test.rs:409:28:414:9 | enter { ... } | test.rs:411:17:411:41 | ExprStmt |
+| test.rs:409:28:414:9 | exit { ... } (normal) | test.rs:409:28:414:9 | exit { ... } (normal) |
+| test.rs:410:13:412:13 | if b {...} | test.rs:410:13:412:13 | if b {...} |
+| test.rs:411:17:411:41 | ExprStmt | test.rs:411:17:411:41 | ExprStmt |
+| test.rs:421:5:423:5 | enter fn add_two | test.rs:421:5:423:5 | enter fn add_two |
+| test.rs:427:5:435:5 | enter fn const_block_assert | test.rs:427:5:435:5 | enter fn const_block_assert |
+| test.rs:427:5:435:5 | enter fn const_block_assert | test.rs:431:21:431:48 | [boolean(false)] ! ... |
+| test.rs:427:5:435:5 | enter fn const_block_assert | test.rs:431:21:431:48 | [boolean(true)] ! ... |
+| test.rs:427:5:435:5 | enter fn const_block_assert | test.rs:431:21:431:48 | if ... {...} |
+| test.rs:431:13:431:49 | enter fn panic_cold_explicit | test.rs:431:13:431:49 | enter fn panic_cold_explicit |
+| test.rs:431:21:431:48 | [boolean(false)] ! ... | test.rs:431:21:431:48 | [boolean(false)] ! ... |
+| test.rs:431:21:431:48 | [boolean(true)] ! ... | test.rs:431:21:431:48 | [boolean(true)] ! ... |
+| test.rs:431:21:431:48 | if ... {...} | test.rs:431:21:431:48 | if ... {...} |
+| test.rs:437:5:446:5 | enter fn const_block_panic | test.rs:437:5:446:5 | enter fn const_block_panic |
+| test.rs:442:17:442:24 | enter fn panic_cold_explicit | test.rs:442:17:442:24 | enter fn panic_cold_explicit |
+| test.rs:449:1:454:1 | enter fn dead_code | test.rs:449:1:454:1 | enter fn dead_code |
+| test.rs:456:1:456:16 | enter fn do_thing | test.rs:456:1:456:16 | enter fn do_thing |
+| test.rs:458:1:460:1 | enter fn condition_not_met | test.rs:458:1:460:1 | enter fn condition_not_met |
+| test.rs:462:1:462:21 | enter fn do_next_thing | test.rs:462:1:462:21 | enter fn do_next_thing |
+| test.rs:464:1:464:21 | enter fn do_last_thing | test.rs:464:1:464:21 | enter fn do_last_thing |
+| test.rs:466:1:480:1 | enter fn labelled_block1 | test.rs:466:1:480:1 | enter fn labelled_block1 |
+| test.rs:466:1:480:1 | enter fn labelled_block1 | test.rs:467:18:478:5 | 'block: { ... } |
+| test.rs:466:1:480:1 | enter fn labelled_block1 | test.rs:469:9:471:9 | if ... {...} |
+| test.rs:466:1:480:1 | enter fn labelled_block1 | test.rs:470:13:470:27 | ExprStmt |
+| test.rs:466:1:480:1 | enter fn labelled_block1 | test.rs:473:9:475:9 | if ... {...} |
+| test.rs:466:1:480:1 | enter fn labelled_block1 | test.rs:474:13:474:27 | ExprStmt |
+| test.rs:467:18:478:5 | 'block: { ... } | test.rs:467:18:478:5 | 'block: { ... } |
+| test.rs:469:9:471:9 | if ... {...} | test.rs:469:9:471:9 | if ... {...} |
+| test.rs:469:9:471:9 | if ... {...} | test.rs:473:9:475:9 | if ... {...} |
+| test.rs:469:9:471:9 | if ... {...} | test.rs:474:13:474:27 | ExprStmt |
+| test.rs:470:13:470:27 | ExprStmt | test.rs:470:13:470:27 | ExprStmt |
+| test.rs:473:9:475:9 | if ... {...} | test.rs:473:9:475:9 | if ... {...} |
+| test.rs:474:13:474:27 | ExprStmt | test.rs:474:13:474:27 | ExprStmt |
+| test.rs:482:1:490:1 | enter fn labelled_block2 | test.rs:482:1:490:1 | enter fn labelled_block2 |
+| test.rs:482:1:490:1 | enter fn labelled_block2 | test.rs:483:18:489:5 | 'block: { ... } |
+| test.rs:482:1:490:1 | enter fn labelled_block2 | test.rs:485:18:485:18 | y |
+| test.rs:482:1:490:1 | enter fn labelled_block2 | test.rs:486:13:486:27 | ExprStmt |
+| test.rs:483:18:489:5 | 'block: { ... } | test.rs:483:18:489:5 | 'block: { ... } |
+| test.rs:485:18:485:18 | y | test.rs:485:18:485:18 | y |
+| test.rs:486:13:486:27 | ExprStmt | test.rs:486:13:486:27 | ExprStmt |
+| test.rs:492:1:498:1 | enter fn test_nested_function2 | test.rs:492:1:498:1 | enter fn test_nested_function2 |
+| test.rs:494:5:496:5 | enter fn nested | test.rs:494:5:496:5 | enter fn nested |
+| test.rs:509:5:511:5 | enter fn new | test.rs:509:5:511:5 | enter fn new |
+| test.rs:513:5:515:5 | enter fn negated | test.rs:513:5:515:5 | enter fn negated |
+| test.rs:517:5:519:5 | enter fn multifly_add | test.rs:517:5:519:5 | enter fn multifly_add |
+postDominance
+| test.rs:5:5:8:5 | enter fn function_call | test.rs:5:5:8:5 | enter fn function_call |
+| test.rs:10:5:13:5 | enter fn method_call | test.rs:10:5:13:5 | enter fn method_call |
+| test.rs:18:5:24:5 | enter fn next | test.rs:18:5:24:5 | enter fn next |
+| test.rs:19:9:23:9 | if ... {...} else {...} | test.rs:18:5:24:5 | enter fn next |
+| test.rs:19:9:23:9 | if ... {...} else {...} | test.rs:19:9:23:9 | if ... {...} else {...} |
+| test.rs:19:9:23:9 | if ... {...} else {...} | test.rs:20:13:20:13 | n |
+| test.rs:19:9:23:9 | if ... {...} else {...} | test.rs:22:13:22:13 | 3 |
+| test.rs:20:13:20:13 | n | test.rs:20:13:20:13 | n |
+| test.rs:22:13:22:13 | 3 | test.rs:22:13:22:13 | 3 |
+| test.rs:26:5:42:5 | enter fn test_break_and_continue | test.rs:26:5:42:5 | enter fn test_break_and_continue |
+| test.rs:26:5:42:5 | exit fn test_break_and_continue (normal) | test.rs:26:5:42:5 | enter fn test_break_and_continue |
+| test.rs:26:5:42:5 | exit fn test_break_and_continue (normal) | test.rs:26:5:42:5 | exit fn test_break_and_continue (normal) |
+| test.rs:26:5:42:5 | exit fn test_break_and_continue (normal) | test.rs:29:13:29:24 | ExprStmt |
+| test.rs:26:5:42:5 | exit fn test_break_and_continue (normal) | test.rs:30:13:32:13 | if ... {...} |
+| test.rs:26:5:42:5 | exit fn test_break_and_continue (normal) | test.rs:31:17:31:29 | ExprStmt |
+| test.rs:26:5:42:5 | exit fn test_break_and_continue (normal) | test.rs:33:13:35:13 | if ... {...} |
+| test.rs:26:5:42:5 | exit fn test_break_and_continue (normal) | test.rs:34:17:34:22 | ExprStmt |
+| test.rs:26:5:42:5 | exit fn test_break_and_continue (normal) | test.rs:36:13:38:13 | if ... {...} |
+| test.rs:26:5:42:5 | exit fn test_break_and_continue (normal) | test.rs:37:17:37:25 | ExprStmt |
+| test.rs:29:13:29:24 | ExprStmt | test.rs:26:5:42:5 | enter fn test_break_and_continue |
+| test.rs:29:13:29:24 | ExprStmt | test.rs:29:13:29:24 | ExprStmt |
+| test.rs:29:13:29:24 | ExprStmt | test.rs:33:13:35:13 | if ... {...} |
+| test.rs:29:13:29:24 | ExprStmt | test.rs:36:13:38:13 | if ... {...} |
+| test.rs:29:13:29:24 | ExprStmt | test.rs:37:17:37:25 | ExprStmt |
+| test.rs:30:13:32:13 | if ... {...} | test.rs:30:13:32:13 | if ... {...} |
+| test.rs:31:17:31:29 | ExprStmt | test.rs:31:17:31:29 | ExprStmt |
+| test.rs:33:13:35:13 | if ... {...} | test.rs:33:13:35:13 | if ... {...} |
+| test.rs:34:17:34:22 | ExprStmt | test.rs:34:17:34:22 | ExprStmt |
+| test.rs:36:13:38:13 | if ... {...} | test.rs:36:13:38:13 | if ... {...} |
+| test.rs:37:17:37:25 | ExprStmt | test.rs:37:17:37:25 | ExprStmt |
+| test.rs:44:5:56:5 | enter fn test_break_with_labels | test.rs:44:5:56:5 | enter fn test_break_with_labels |
+| test.rs:46:13:53:13 | 'inner: loop { ... } | test.rs:46:13:53:13 | 'inner: loop { ... } |
+| test.rs:46:13:53:13 | 'inner: loop { ... } | test.rs:48:21:48:26 | ExprStmt |
+| test.rs:46:13:53:13 | 'inner: loop { ... } | test.rs:49:24:51:17 | if b {...} |
+| test.rs:47:17:51:17 | ExprStmt | test.rs:44:5:56:5 | enter fn test_break_with_labels |
+| test.rs:47:17:51:17 | ExprStmt | test.rs:46:13:53:13 | 'inner: loop { ... } |
+| test.rs:47:17:51:17 | ExprStmt | test.rs:47:17:51:17 | ExprStmt |
+| test.rs:47:17:51:17 | ExprStmt | test.rs:48:21:48:26 | ExprStmt |
+| test.rs:47:17:51:17 | ExprStmt | test.rs:49:24:51:17 | if b {...} |
+| test.rs:48:21:48:26 | ExprStmt | test.rs:48:21:48:26 | ExprStmt |
+| test.rs:49:24:51:17 | if b {...} | test.rs:49:24:51:17 | if b {...} |
+| test.rs:49:27:49:27 | b | test.rs:44:5:56:5 | enter fn test_break_with_labels |
+| test.rs:49:27:49:27 | b | test.rs:46:13:53:13 | 'inner: loop { ... } |
+| test.rs:49:27:49:27 | b | test.rs:47:17:51:17 | ExprStmt |
+| test.rs:49:27:49:27 | b | test.rs:48:21:48:26 | ExprStmt |
+| test.rs:49:27:49:27 | b | test.rs:49:24:51:17 | if b {...} |
+| test.rs:49:27:49:27 | b | test.rs:49:27:49:27 | b |
+| test.rs:50:21:50:33 | ExprStmt | test.rs:44:5:56:5 | enter fn test_break_with_labels |
+| test.rs:50:21:50:33 | ExprStmt | test.rs:46:13:53:13 | 'inner: loop { ... } |
+| test.rs:50:21:50:33 | ExprStmt | test.rs:47:17:51:17 | ExprStmt |
+| test.rs:50:21:50:33 | ExprStmt | test.rs:48:21:48:26 | ExprStmt |
+| test.rs:50:21:50:33 | ExprStmt | test.rs:49:24:51:17 | if b {...} |
+| test.rs:50:21:50:33 | ExprStmt | test.rs:49:27:49:27 | b |
+| test.rs:50:21:50:33 | ExprStmt | test.rs:50:21:50:33 | ExprStmt |
+| test.rs:58:5:70:5 | enter fn test_continue_with_labels | test.rs:58:5:70:5 | enter fn test_continue_with_labels |
+| test.rs:60:13:60:14 | ExprStmt | test.rs:60:13:60:14 | ExprStmt |
+| test.rs:62:17:66:17 | ExprStmt | test.rs:62:17:66:17 | ExprStmt |
+| test.rs:63:21:63:29 | ExprStmt | test.rs:63:21:63:29 | ExprStmt |
+| test.rs:64:24:66:17 | if b {...} | test.rs:64:24:66:17 | if b {...} |
+| test.rs:64:27:64:27 | b | test.rs:64:27:64:27 | b |
+| test.rs:65:21:65:36 | ExprStmt | test.rs:65:21:65:36 | ExprStmt |
+| test.rs:72:5:84:5 | enter fn test_loop_label_shadowing | test.rs:72:5:84:5 | enter fn test_loop_label_shadowing |
+| test.rs:76:17:80:17 | ExprStmt | test.rs:76:17:80:17 | ExprStmt |
+| test.rs:77:21:77:29 | ExprStmt | test.rs:77:21:77:29 | ExprStmt |
+| test.rs:78:24:80:17 | if b {...} | test.rs:78:24:80:17 | if b {...} |
+| test.rs:78:27:78:27 | b | test.rs:78:27:78:27 | b |
+| test.rs:79:21:79:36 | ExprStmt | test.rs:79:21:79:36 | ExprStmt |
+| test.rs:86:5:95:5 | enter fn test_while | test.rs:86:5:95:5 | enter fn test_while |
+| test.rs:88:9:94:9 | while b { ... } | test.rs:86:5:95:5 | enter fn test_while |
+| test.rs:88:9:94:9 | while b { ... } | test.rs:88:9:94:9 | while b { ... } |
+| test.rs:88:9:94:9 | while b { ... } | test.rs:88:15:88:15 | b |
+| test.rs:88:9:94:9 | while b { ... } | test.rs:89:13:89:14 | ExprStmt |
+| test.rs:88:9:94:9 | while b { ... } | test.rs:90:13:92:13 | if ... {...} |
+| test.rs:88:9:94:9 | while b { ... } | test.rs:91:17:91:22 | ExprStmt |
+| test.rs:88:15:88:15 | b | test.rs:86:5:95:5 | enter fn test_while |
+| test.rs:88:15:88:15 | b | test.rs:88:15:88:15 | b |
+| test.rs:88:15:88:15 | b | test.rs:90:13:92:13 | if ... {...} |
+| test.rs:89:13:89:14 | ExprStmt | test.rs:89:13:89:14 | ExprStmt |
+| test.rs:90:13:92:13 | if ... {...} | test.rs:90:13:92:13 | if ... {...} |
+| test.rs:91:17:91:22 | ExprStmt | test.rs:91:17:91:22 | ExprStmt |
+| test.rs:97:5:104:5 | enter fn test_while_let | test.rs:97:5:104:5 | enter fn test_while_let |
+| test.rs:99:9:103:9 | while ... { ... } | test.rs:97:5:104:5 | enter fn test_while_let |
+| test.rs:99:9:103:9 | while ... { ... } | test.rs:99:9:103:9 | while ... { ... } |
+| test.rs:99:9:103:9 | while ... { ... } | test.rs:99:15:99:39 | let ... = ... |
+| test.rs:99:9:103:9 | while ... { ... } | test.rs:99:24:99:24 | x |
+| test.rs:99:9:103:9 | while ... { ... } | test.rs:100:13:102:13 | if ... {...} |
+| test.rs:99:9:103:9 | while ... { ... } | test.rs:101:17:101:22 | ExprStmt |
+| test.rs:99:15:99:39 | let ... = ... | test.rs:97:5:104:5 | enter fn test_while_let |
+| test.rs:99:15:99:39 | let ... = ... | test.rs:99:15:99:39 | let ... = ... |
+| test.rs:99:15:99:39 | let ... = ... | test.rs:100:13:102:13 | if ... {...} |
+| test.rs:99:24:99:24 | x | test.rs:99:24:99:24 | x |
+| test.rs:100:13:102:13 | if ... {...} | test.rs:100:13:102:13 | if ... {...} |
+| test.rs:101:17:101:22 | ExprStmt | test.rs:101:17:101:22 | ExprStmt |
+| test.rs:106:5:113:5 | enter fn test_for | test.rs:106:5:113:5 | enter fn test_for |
+| test.rs:107:9:112:9 | for ... in ... { ... } | test.rs:106:5:113:5 | enter fn test_for |
+| test.rs:107:9:112:9 | for ... in ... { ... } | test.rs:107:9:112:9 | for ... in ... { ... } |
+| test.rs:107:9:112:9 | for ... in ... { ... } | test.rs:107:13:107:13 | i |
+| test.rs:107:9:112:9 | for ... in ... { ... } | test.rs:108:13:110:13 | ExprStmt |
+| test.rs:107:9:112:9 | for ... in ... { ... } | test.rs:108:13:110:13 | if ... {...} |
+| test.rs:107:9:112:9 | for ... in ... { ... } | test.rs:109:17:109:22 | ExprStmt |
+| test.rs:107:13:107:13 | i | test.rs:106:5:113:5 | enter fn test_for |
+| test.rs:107:13:107:13 | i | test.rs:107:13:107:13 | i |
+| test.rs:107:13:107:13 | i | test.rs:108:13:110:13 | if ... {...} |
+| test.rs:108:13:110:13 | ExprStmt | test.rs:108:13:110:13 | ExprStmt |
+| test.rs:108:13:110:13 | if ... {...} | test.rs:108:13:110:13 | if ... {...} |
+| test.rs:109:17:109:22 | ExprStmt | test.rs:109:17:109:22 | ExprStmt |
+| test.rs:115:5:119:5 | enter fn break_with_return | test.rs:115:5:119:5 | enter fn break_with_return |
+| test.rs:122:1:125:1 | enter fn test_nested_function | test.rs:122:1:125:1 | enter fn test_nested_function |
+| test.rs:123:19:123:27 | enter \|...\| ... | test.rs:123:19:123:27 | enter \|...\| ... |
+| test.rs:129:5:135:5 | enter fn test_if_else | test.rs:129:5:135:5 | enter fn test_if_else |
+| test.rs:130:9:134:9 | if ... {...} else {...} | test.rs:129:5:135:5 | enter fn test_if_else |
+| test.rs:130:9:134:9 | if ... {...} else {...} | test.rs:130:9:134:9 | if ... {...} else {...} |
+| test.rs:130:9:134:9 | if ... {...} else {...} | test.rs:131:13:131:13 | 0 |
+| test.rs:130:9:134:9 | if ... {...} else {...} | test.rs:133:13:133:13 | n |
+| test.rs:131:13:131:13 | 0 | test.rs:131:13:131:13 | 0 |
+| test.rs:133:13:133:13 | n | test.rs:133:13:133:13 | n |
+| test.rs:137:5:143:5 | enter fn test_if_let_else | test.rs:137:5:143:5 | enter fn test_if_let_else |
+| test.rs:138:9:142:9 | if ... {...} else {...} | test.rs:137:5:143:5 | enter fn test_if_let_else |
+| test.rs:138:9:142:9 | if ... {...} else {...} | test.rs:138:9:142:9 | if ... {...} else {...} |
+| test.rs:138:9:142:9 | if ... {...} else {...} | test.rs:138:21:138:21 | n |
+| test.rs:138:9:142:9 | if ... {...} else {...} | test.rs:141:13:141:13 | 0 |
+| test.rs:138:21:138:21 | n | test.rs:138:21:138:21 | n |
+| test.rs:141:13:141:13 | 0 | test.rs:141:13:141:13 | 0 |
+| test.rs:145:5:150:5 | enter fn test_if_let | test.rs:145:5:150:5 | enter fn test_if_let |
+| test.rs:145:5:150:5 | exit fn test_if_let (normal) | test.rs:145:5:150:5 | enter fn test_if_let |
+| test.rs:145:5:150:5 | exit fn test_if_let (normal) | test.rs:145:5:150:5 | exit fn test_if_let (normal) |
+| test.rs:145:5:150:5 | exit fn test_if_let (normal) | test.rs:146:9:148:9 | if ... {...} |
+| test.rs:145:5:150:5 | exit fn test_if_let (normal) | test.rs:146:21:146:21 | n |
+| test.rs:146:9:148:9 | if ... {...} | test.rs:146:9:148:9 | if ... {...} |
+| test.rs:146:21:146:21 | n | test.rs:146:21:146:21 | n |
+| test.rs:152:5:158:5 | enter fn test_nested_if | test.rs:152:5:158:5 | enter fn test_nested_if |
+| test.rs:153:9:157:9 | if ... {...} else {...} | test.rs:152:5:158:5 | enter fn test_nested_if |
+| test.rs:153:9:157:9 | if ... {...} else {...} | test.rs:153:9:157:9 | if ... {...} else {...} |
+| test.rs:153:9:157:9 | if ... {...} else {...} | test.rs:153:13:153:48 | [boolean(false)] if ... {...} else {...} |
+| test.rs:153:9:157:9 | if ... {...} else {...} | test.rs:153:13:153:48 | [boolean(true)] if ... {...} else {...} |
+| test.rs:153:9:157:9 | if ... {...} else {...} | test.rs:153:22:153:32 | [boolean(false)] { ... } |
+| test.rs:153:9:157:9 | if ... {...} else {...} | test.rs:153:22:153:32 | [boolean(true)] { ... } |
+| test.rs:153:9:157:9 | if ... {...} else {...} | test.rs:153:24:153:24 | a |
+| test.rs:153:9:157:9 | if ... {...} else {...} | test.rs:153:39:153:48 | [boolean(false)] { ... } |
+| test.rs:153:9:157:9 | if ... {...} else {...} | test.rs:153:39:153:48 | [boolean(true)] { ... } |
+| test.rs:153:9:157:9 | if ... {...} else {...} | test.rs:153:41:153:41 | a |
+| test.rs:153:13:153:48 | [boolean(false)] if ... {...} else {...} | test.rs:153:13:153:48 | [boolean(false)] if ... {...} else {...} |
+| test.rs:153:13:153:48 | [boolean(false)] if ... {...} else {...} | test.rs:153:22:153:32 | [boolean(false)] { ... } |
+| test.rs:153:13:153:48 | [boolean(false)] if ... {...} else {...} | test.rs:153:39:153:48 | [boolean(false)] { ... } |
+| test.rs:153:13:153:48 | [boolean(true)] if ... {...} else {...} | test.rs:153:13:153:48 | [boolean(true)] if ... {...} else {...} |
+| test.rs:153:13:153:48 | [boolean(true)] if ... {...} else {...} | test.rs:153:22:153:32 | [boolean(true)] { ... } |
+| test.rs:153:13:153:48 | [boolean(true)] if ... {...} else {...} | test.rs:153:39:153:48 | [boolean(true)] { ... } |
+| test.rs:153:22:153:32 | [boolean(false)] { ... } | test.rs:153:22:153:32 | [boolean(false)] { ... } |
+| test.rs:153:22:153:32 | [boolean(true)] { ... } | test.rs:153:22:153:32 | [boolean(true)] { ... } |
+| test.rs:153:24:153:24 | a | test.rs:153:24:153:24 | a |
+| test.rs:153:39:153:48 | [boolean(false)] { ... } | test.rs:153:39:153:48 | [boolean(false)] { ... } |
+| test.rs:153:39:153:48 | [boolean(true)] { ... } | test.rs:153:39:153:48 | [boolean(true)] { ... } |
+| test.rs:153:41:153:41 | a | test.rs:153:41:153:41 | a |
+| test.rs:160:5:169:5 | enter fn test_nested_if_match | test.rs:160:5:169:5 | enter fn test_nested_if_match |
+| test.rs:161:9:168:9 | if ... {...} else {...} | test.rs:160:5:169:5 | enter fn test_nested_if_match |
+| test.rs:161:9:168:9 | if ... {...} else {...} | test.rs:161:9:168:9 | if ... {...} else {...} |
+| test.rs:161:9:168:9 | if ... {...} else {...} | test.rs:162:18:162:21 | true |
+| test.rs:161:9:168:9 | if ... {...} else {...} | test.rs:163:13:163:13 | _ |
+| test.rs:162:18:162:21 | true | test.rs:162:18:162:21 | true |
+| test.rs:163:13:163:13 | _ | test.rs:163:13:163:13 | _ |
+| test.rs:171:5:180:5 | enter fn test_nested_if_block | test.rs:171:5:180:5 | enter fn test_nested_if_block |
+| test.rs:172:9:179:9 | if ... {...} else {...} | test.rs:171:5:180:5 | enter fn test_nested_if_block |
+| test.rs:172:9:179:9 | if ... {...} else {...} | test.rs:172:9:179:9 | if ... {...} else {...} |
+| test.rs:172:9:179:9 | if ... {...} else {...} | test.rs:172:12:175:9 | [boolean(false)] { ... } |
+| test.rs:172:9:179:9 | if ... {...} else {...} | test.rs:172:12:175:9 | [boolean(true)] { ... } |
+| test.rs:172:12:175:9 | [boolean(false)] { ... } | test.rs:172:12:175:9 | [boolean(false)] { ... } |
+| test.rs:172:12:175:9 | [boolean(true)] { ... } | test.rs:172:12:175:9 | [boolean(true)] { ... } |
+| test.rs:182:5:192:5 | enter fn test_if_assignment | test.rs:182:5:192:5 | enter fn test_if_assignment |
+| test.rs:184:9:191:9 | if ... {...} else {...} | test.rs:182:5:192:5 | enter fn test_if_assignment |
+| test.rs:184:9:191:9 | if ... {...} else {...} | test.rs:184:9:191:9 | if ... {...} else {...} |
+| test.rs:184:9:191:9 | if ... {...} else {...} | test.rs:184:12:187:9 | [boolean(false)] { ... } |
+| test.rs:184:9:191:9 | if ... {...} else {...} | test.rs:184:12:187:9 | [boolean(true)] { ... } |
+| test.rs:184:12:187:9 | [boolean(false)] { ... } | test.rs:184:12:187:9 | [boolean(false)] { ... } |
+| test.rs:184:12:187:9 | [boolean(true)] { ... } | test.rs:184:12:187:9 | [boolean(true)] { ... } |
+| test.rs:194:5:205:5 | enter fn test_if_loop1 | test.rs:194:5:205:5 | enter fn test_if_loop1 |
+| test.rs:195:9:204:9 | if ... {...} else {...} | test.rs:194:5:205:5 | enter fn test_if_loop1 |
+| test.rs:195:9:204:9 | if ... {...} else {...} | test.rs:195:9:204:9 | if ... {...} else {...} |
+| test.rs:195:9:204:9 | if ... {...} else {...} | test.rs:196:13:198:13 | if ... {...} |
+| test.rs:195:9:204:9 | if ... {...} else {...} | test.rs:196:13:198:14 | ExprStmt |
+| test.rs:195:9:204:9 | if ... {...} else {...} | test.rs:197:17:197:28 | [boolean(false)] break ... |
+| test.rs:195:9:204:9 | if ... {...} else {...} | test.rs:197:17:197:28 | [boolean(true)] break ... |
+| test.rs:195:9:204:9 | if ... {...} else {...} | test.rs:197:17:197:29 | ExprStmt |
+| test.rs:196:13:198:13 | if ... {...} | test.rs:196:13:198:13 | if ... {...} |
+| test.rs:196:13:198:14 | ExprStmt | test.rs:194:5:205:5 | enter fn test_if_loop1 |
+| test.rs:196:13:198:14 | ExprStmt | test.rs:196:13:198:13 | if ... {...} |
+| test.rs:196:13:198:14 | ExprStmt | test.rs:196:13:198:14 | ExprStmt |
+| test.rs:197:17:197:28 | [boolean(false)] break ... | test.rs:197:17:197:28 | [boolean(false)] break ... |
+| test.rs:197:17:197:28 | [boolean(true)] break ... | test.rs:197:17:197:28 | [boolean(true)] break ... |
+| test.rs:197:17:197:29 | ExprStmt | test.rs:194:5:205:5 | enter fn test_if_loop1 |
+| test.rs:197:17:197:29 | ExprStmt | test.rs:196:13:198:13 | if ... {...} |
+| test.rs:197:17:197:29 | ExprStmt | test.rs:196:13:198:14 | ExprStmt |
+| test.rs:197:17:197:29 | ExprStmt | test.rs:197:17:197:29 | ExprStmt |
+| test.rs:207:5:218:5 | enter fn test_if_loop2 | test.rs:207:5:218:5 | enter fn test_if_loop2 |
+| test.rs:208:9:217:9 | if ... {...} else {...} | test.rs:207:5:218:5 | enter fn test_if_loop2 |
+| test.rs:208:9:217:9 | if ... {...} else {...} | test.rs:208:9:217:9 | if ... {...} else {...} |
+| test.rs:208:9:217:9 | if ... {...} else {...} | test.rs:209:13:211:13 | if ... {...} |
+| test.rs:208:9:217:9 | if ... {...} else {...} | test.rs:209:13:211:14 | ExprStmt |
+| test.rs:208:9:217:9 | if ... {...} else {...} | test.rs:210:17:210:35 | [boolean(false)] break ''label ... |
+| test.rs:208:9:217:9 | if ... {...} else {...} | test.rs:210:17:210:35 | [boolean(true)] break ''label ... |
+| test.rs:208:9:217:9 | if ... {...} else {...} | test.rs:210:17:210:36 | ExprStmt |
+| test.rs:209:13:211:13 | if ... {...} | test.rs:209:13:211:13 | if ... {...} |
+| test.rs:209:13:211:14 | ExprStmt | test.rs:207:5:218:5 | enter fn test_if_loop2 |
+| test.rs:209:13:211:14 | ExprStmt | test.rs:209:13:211:13 | if ... {...} |
+| test.rs:209:13:211:14 | ExprStmt | test.rs:209:13:211:14 | ExprStmt |
+| test.rs:210:17:210:35 | [boolean(false)] break ''label ... | test.rs:210:17:210:35 | [boolean(false)] break ''label ... |
+| test.rs:210:17:210:35 | [boolean(true)] break ''label ... | test.rs:210:17:210:35 | [boolean(true)] break ''label ... |
+| test.rs:210:17:210:36 | ExprStmt | test.rs:207:5:218:5 | enter fn test_if_loop2 |
+| test.rs:210:17:210:36 | ExprStmt | test.rs:209:13:211:13 | if ... {...} |
+| test.rs:210:17:210:36 | ExprStmt | test.rs:209:13:211:14 | ExprStmt |
+| test.rs:210:17:210:36 | ExprStmt | test.rs:210:17:210:36 | ExprStmt |
+| test.rs:220:5:228:5 | enter fn test_labelled_block | test.rs:220:5:228:5 | enter fn test_labelled_block |
+| test.rs:221:9:227:9 | if ... {...} else {...} | test.rs:220:5:228:5 | enter fn test_labelled_block |
+| test.rs:221:9:227:9 | if ... {...} else {...} | test.rs:221:9:227:9 | if ... {...} else {...} |
+| test.rs:221:9:227:9 | if ... {...} else {...} | test.rs:222:13:222:30 | [boolean(false)] break ''block ... |
+| test.rs:221:9:227:9 | if ... {...} else {...} | test.rs:222:13:222:30 | [boolean(true)] break ''block ... |
+| test.rs:222:13:222:30 | [boolean(false)] break ''block ... | test.rs:222:13:222:30 | [boolean(false)] break ''block ... |
+| test.rs:222:13:222:30 | [boolean(true)] break ''block ... | test.rs:222:13:222:30 | [boolean(true)] break ''block ... |
+| test.rs:233:5:236:5 | enter fn test_and_operator | test.rs:233:5:236:5 | enter fn test_and_operator |
+| test.rs:234:17:234:22 | [boolean(false)] ... && ... | test.rs:234:17:234:22 | [boolean(false)] ... && ... |
+| test.rs:234:17:234:22 | [boolean(true)] ... && ... | test.rs:234:17:234:22 | [boolean(true)] ... && ... |
+| test.rs:234:17:234:27 | ... && ... | test.rs:233:5:236:5 | enter fn test_and_operator |
+| test.rs:234:17:234:27 | ... && ... | test.rs:234:17:234:22 | [boolean(false)] ... && ... |
+| test.rs:234:17:234:27 | ... && ... | test.rs:234:17:234:22 | [boolean(true)] ... && ... |
+| test.rs:234:17:234:27 | ... && ... | test.rs:234:17:234:27 | ... && ... |
+| test.rs:234:17:234:27 | ... && ... | test.rs:234:22:234:22 | b |
+| test.rs:234:22:234:22 | b | test.rs:234:22:234:22 | b |
+| test.rs:238:5:241:5 | enter fn test_or_operator | test.rs:238:5:241:5 | enter fn test_or_operator |
+| test.rs:239:17:239:22 | [boolean(false)] ... \|\| ... | test.rs:239:17:239:22 | [boolean(false)] ... \|\| ... |
+| test.rs:239:17:239:22 | [boolean(true)] ... \|\| ... | test.rs:239:17:239:22 | [boolean(true)] ... \|\| ... |
+| test.rs:239:17:239:27 | ... \|\| ... | test.rs:238:5:241:5 | enter fn test_or_operator |
+| test.rs:239:17:239:27 | ... \|\| ... | test.rs:239:17:239:22 | [boolean(false)] ... \|\| ... |
+| test.rs:239:17:239:27 | ... \|\| ... | test.rs:239:17:239:22 | [boolean(true)] ... \|\| ... |
+| test.rs:239:17:239:27 | ... \|\| ... | test.rs:239:17:239:27 | ... \|\| ... |
+| test.rs:239:17:239:27 | ... \|\| ... | test.rs:239:22:239:22 | b |
+| test.rs:239:22:239:22 | b | test.rs:239:22:239:22 | b |
+| test.rs:243:5:246:5 | enter fn test_or_operator_2 | test.rs:243:5:246:5 | enter fn test_or_operator_2 |
+| test.rs:244:17:244:30 | [boolean(false)] ... \|\| ... | test.rs:244:17:244:30 | [boolean(false)] ... \|\| ... |
+| test.rs:244:17:244:30 | [boolean(true)] ... \|\| ... | test.rs:244:17:244:30 | [boolean(true)] ... \|\| ... |
+| test.rs:244:17:244:35 | ... \|\| ... | test.rs:243:5:246:5 | enter fn test_or_operator_2 |
+| test.rs:244:17:244:35 | ... \|\| ... | test.rs:244:17:244:30 | [boolean(false)] ... \|\| ... |
+| test.rs:244:17:244:35 | ... \|\| ... | test.rs:244:17:244:30 | [boolean(true)] ... \|\| ... |
+| test.rs:244:17:244:35 | ... \|\| ... | test.rs:244:17:244:35 | ... \|\| ... |
+| test.rs:244:17:244:35 | ... \|\| ... | test.rs:244:23:244:23 | b |
+| test.rs:244:23:244:23 | b | test.rs:244:23:244:23 | b |
+| test.rs:248:5:251:5 | enter fn test_not_operator | test.rs:248:5:251:5 | enter fn test_not_operator |
+| test.rs:253:5:259:5 | enter fn test_if_and_operator | test.rs:253:5:259:5 | enter fn test_if_and_operator |
+| test.rs:254:9:258:9 | if ... {...} else {...} | test.rs:253:5:259:5 | enter fn test_if_and_operator |
+| test.rs:254:9:258:9 | if ... {...} else {...} | test.rs:254:9:258:9 | if ... {...} else {...} |
+| test.rs:254:9:258:9 | if ... {...} else {...} | test.rs:254:12:254:17 | [boolean(false)] ... && ... |
+| test.rs:254:9:258:9 | if ... {...} else {...} | test.rs:254:12:254:17 | [boolean(true)] ... && ... |
+| test.rs:254:9:258:9 | if ... {...} else {...} | test.rs:254:12:254:22 | [boolean(false)] ... && ... |
+| test.rs:254:9:258:9 | if ... {...} else {...} | test.rs:254:12:254:22 | [boolean(true)] ... && ... |
+| test.rs:254:9:258:9 | if ... {...} else {...} | test.rs:254:17:254:17 | b |
+| test.rs:254:12:254:17 | [boolean(false)] ... && ... | test.rs:254:12:254:17 | [boolean(false)] ... && ... |
+| test.rs:254:12:254:17 | [boolean(true)] ... && ... | test.rs:254:12:254:17 | [boolean(true)] ... && ... |
+| test.rs:254:12:254:22 | [boolean(false)] ... && ... | test.rs:254:12:254:17 | [boolean(false)] ... && ... |
+| test.rs:254:12:254:22 | [boolean(false)] ... && ... | test.rs:254:12:254:22 | [boolean(false)] ... && ... |
+| test.rs:254:12:254:22 | [boolean(true)] ... && ... | test.rs:254:12:254:22 | [boolean(true)] ... && ... |
+| test.rs:254:17:254:17 | b | test.rs:254:17:254:17 | b |
+| test.rs:261:5:267:5 | enter fn test_if_or_operator | test.rs:261:5:267:5 | enter fn test_if_or_operator |
+| test.rs:262:9:266:9 | if ... {...} else {...} | test.rs:261:5:267:5 | enter fn test_if_or_operator |
+| test.rs:262:9:266:9 | if ... {...} else {...} | test.rs:262:9:266:9 | if ... {...} else {...} |
+| test.rs:262:9:266:9 | if ... {...} else {...} | test.rs:262:12:262:17 | [boolean(false)] ... \|\| ... |
+| test.rs:262:9:266:9 | if ... {...} else {...} | test.rs:262:12:262:17 | [boolean(true)] ... \|\| ... |
+| test.rs:262:9:266:9 | if ... {...} else {...} | test.rs:262:12:262:22 | [boolean(false)] ... \|\| ... |
+| test.rs:262:9:266:9 | if ... {...} else {...} | test.rs:262:12:262:22 | [boolean(true)] ... \|\| ... |
+| test.rs:262:9:266:9 | if ... {...} else {...} | test.rs:262:17:262:17 | b |
+| test.rs:262:12:262:17 | [boolean(false)] ... \|\| ... | test.rs:262:12:262:17 | [boolean(false)] ... \|\| ... |
+| test.rs:262:12:262:17 | [boolean(true)] ... \|\| ... | test.rs:262:12:262:17 | [boolean(true)] ... \|\| ... |
+| test.rs:262:12:262:22 | [boolean(false)] ... \|\| ... | test.rs:262:12:262:22 | [boolean(false)] ... \|\| ... |
+| test.rs:262:12:262:22 | [boolean(true)] ... \|\| ... | test.rs:262:12:262:17 | [boolean(true)] ... \|\| ... |
+| test.rs:262:12:262:22 | [boolean(true)] ... \|\| ... | test.rs:262:12:262:22 | [boolean(true)] ... \|\| ... |
+| test.rs:262:17:262:17 | b | test.rs:262:17:262:17 | b |
+| test.rs:269:5:275:5 | enter fn test_if_not_operator | test.rs:269:5:275:5 | enter fn test_if_not_operator |
+| test.rs:270:9:274:9 | if ... {...} else {...} | test.rs:269:5:275:5 | enter fn test_if_not_operator |
+| test.rs:270:9:274:9 | if ... {...} else {...} | test.rs:270:9:274:9 | if ... {...} else {...} |
+| test.rs:270:9:274:9 | if ... {...} else {...} | test.rs:270:12:270:13 | [boolean(false)] ! ... |
+| test.rs:270:9:274:9 | if ... {...} else {...} | test.rs:270:12:270:13 | [boolean(true)] ! ... |
+| test.rs:270:12:270:13 | [boolean(false)] ! ... | test.rs:270:12:270:13 | [boolean(false)] ! ... |
+| test.rs:270:12:270:13 | [boolean(true)] ! ... | test.rs:270:12:270:13 | [boolean(true)] ! ... |
+| test.rs:277:5:279:5 | enter fn test_and_return | test.rs:277:5:279:5 | enter fn test_and_return |
+| test.rs:277:5:279:5 | exit fn test_and_return (normal) | test.rs:277:5:279:5 | enter fn test_and_return |
+| test.rs:277:5:279:5 | exit fn test_and_return (normal) | test.rs:277:5:279:5 | exit fn test_and_return (normal) |
+| test.rs:277:5:279:5 | exit fn test_and_return (normal) | test.rs:278:9:278:19 | ... && ... |
+| test.rs:277:5:279:5 | exit fn test_and_return (normal) | test.rs:278:14:278:19 | return |
+| test.rs:278:9:278:19 | ... && ... | test.rs:278:9:278:19 | ... && ... |
+| test.rs:278:14:278:19 | return | test.rs:278:14:278:19 | return |
+| test.rs:281:5:286:5 | enter fn test_and_true | test.rs:281:5:286:5 | enter fn test_and_true |
+| test.rs:281:5:286:5 | exit fn test_and_true (normal) | test.rs:281:5:286:5 | enter fn test_and_true |
+| test.rs:281:5:286:5 | exit fn test_and_true (normal) | test.rs:281:5:286:5 | exit fn test_and_true (normal) |
+| test.rs:281:5:286:5 | exit fn test_and_true (normal) | test.rs:282:13:282:21 | [boolean(false)] ... && ... |
+| test.rs:281:5:286:5 | exit fn test_and_true (normal) | test.rs:282:18:282:21 | true |
+| test.rs:282:13:282:21 | [boolean(false)] ... && ... | test.rs:282:13:282:21 | [boolean(false)] ... && ... |
+| test.rs:282:18:282:21 | true | test.rs:282:18:282:21 | true |
+| test.rs:292:5:294:5 | enter fn test_question_mark_operator_1 | test.rs:292:5:294:5 | enter fn test_question_mark_operator_1 |
+| test.rs:292:5:294:5 | exit fn test_question_mark_operator_1 (normal) | test.rs:292:5:294:5 | enter fn test_question_mark_operator_1 |
+| test.rs:292:5:294:5 | exit fn test_question_mark_operator_1 (normal) | test.rs:292:5:294:5 | exit fn test_question_mark_operator_1 (normal) |
+| test.rs:292:5:294:5 | exit fn test_question_mark_operator_1 (normal) | test.rs:293:32:293:32 | 4 |
+| test.rs:293:32:293:32 | 4 | test.rs:293:32:293:32 | 4 |
+| test.rs:296:5:301:5 | enter fn test_question_mark_operator_2 | test.rs:296:5:301:5 | enter fn test_question_mark_operator_2 |
+| test.rs:296:5:301:5 | exit fn test_question_mark_operator_2 (normal) | test.rs:296:5:301:5 | enter fn test_question_mark_operator_2 |
+| test.rs:296:5:301:5 | exit fn test_question_mark_operator_2 (normal) | test.rs:296:5:301:5 | exit fn test_question_mark_operator_2 (normal) |
+| test.rs:296:5:301:5 | exit fn test_question_mark_operator_2 (normal) | test.rs:297:9:300:9 | match ... { ... } |
+| test.rs:296:5:301:5 | exit fn test_question_mark_operator_2 (normal) | test.rs:298:13:298:16 | true |
+| test.rs:296:5:301:5 | exit fn test_question_mark_operator_2 (normal) | test.rs:298:21:298:24 | Some |
+| test.rs:296:5:301:5 | exit fn test_question_mark_operator_2 (normal) | test.rs:299:13:299:17 | false |
+| test.rs:297:9:300:9 | match ... { ... } | test.rs:297:9:300:9 | match ... { ... } |
+| test.rs:297:9:300:9 | match ... { ... } | test.rs:298:13:298:16 | true |
+| test.rs:297:9:300:9 | match ... { ... } | test.rs:298:21:298:24 | Some |
+| test.rs:297:9:300:9 | match ... { ... } | test.rs:299:13:299:17 | false |
+| test.rs:298:13:298:16 | true | test.rs:298:13:298:16 | true |
+| test.rs:298:21:298:24 | Some | test.rs:298:21:298:24 | Some |
+| test.rs:299:13:299:17 | false | test.rs:299:13:299:17 | false |
+| test.rs:307:5:313:5 | enter fn test_match | test.rs:307:5:313:5 | enter fn test_match |
+| test.rs:308:9:312:9 | match maybe_digit { ... } | test.rs:307:5:313:5 | enter fn test_match |
+| test.rs:308:9:312:9 | match maybe_digit { ... } | test.rs:308:9:312:9 | match maybe_digit { ... } |
+| test.rs:308:9:312:9 | match maybe_digit { ... } | test.rs:309:26:309:26 | x |
+| test.rs:308:9:312:9 | match maybe_digit { ... } | test.rs:309:42:309:42 | x |
+| test.rs:308:9:312:9 | match maybe_digit { ... } | test.rs:310:13:310:27 | ...::Some(...) |
+| test.rs:308:9:312:9 | match maybe_digit { ... } | test.rs:310:26:310:26 | x |
+| test.rs:308:9:312:9 | match maybe_digit { ... } | test.rs:311:13:311:24 | ...::None |
+| test.rs:309:26:309:26 | x | test.rs:309:26:309:26 | x |
+| test.rs:309:42:309:42 | x | test.rs:309:42:309:42 | x |
+| test.rs:310:13:310:27 | ...::Some(...) | test.rs:310:13:310:27 | ...::Some(...) |
+| test.rs:310:26:310:26 | x | test.rs:310:26:310:26 | x |
+| test.rs:311:13:311:24 | ...::None | test.rs:311:13:311:24 | ...::None |
+| test.rs:315:5:324:5 | enter fn test_match_with_return_in_scrutinee | test.rs:315:5:324:5 | enter fn test_match_with_return_in_scrutinee |
+| test.rs:315:5:324:5 | exit fn test_match_with_return_in_scrutinee (normal) | test.rs:315:5:324:5 | enter fn test_match_with_return_in_scrutinee |
+| test.rs:315:5:324:5 | exit fn test_match_with_return_in_scrutinee (normal) | test.rs:315:5:324:5 | exit fn test_match_with_return_in_scrutinee (normal) |
+| test.rs:315:5:324:5 | exit fn test_match_with_return_in_scrutinee (normal) | test.rs:316:9:323:9 | match ... { ... } |
+| test.rs:315:5:324:5 | exit fn test_match_with_return_in_scrutinee (normal) | test.rs:317:13:317:21 | ExprStmt |
+| test.rs:315:5:324:5 | exit fn test_match_with_return_in_scrutinee (normal) | test.rs:319:13:319:23 | maybe_digit |
+| test.rs:315:5:324:5 | exit fn test_match_with_return_in_scrutinee (normal) | test.rs:321:26:321:26 | x |
+| test.rs:315:5:324:5 | exit fn test_match_with_return_in_scrutinee (normal) | test.rs:322:13:322:24 | ...::None |
+| test.rs:316:9:323:9 | match ... { ... } | test.rs:316:9:323:9 | match ... { ... } |
+| test.rs:316:9:323:9 | match ... { ... } | test.rs:319:13:319:23 | maybe_digit |
+| test.rs:316:9:323:9 | match ... { ... } | test.rs:321:26:321:26 | x |
+| test.rs:316:9:323:9 | match ... { ... } | test.rs:322:13:322:24 | ...::None |
+| test.rs:317:13:317:21 | ExprStmt | test.rs:317:13:317:21 | ExprStmt |
+| test.rs:319:13:319:23 | maybe_digit | test.rs:319:13:319:23 | maybe_digit |
+| test.rs:321:26:321:26 | x | test.rs:321:26:321:26 | x |
+| test.rs:322:13:322:24 | ...::None | test.rs:322:13:322:24 | ...::None |
+| test.rs:326:5:331:5 | enter fn test_match_and | test.rs:326:5:331:5 | enter fn test_match_and |
+| test.rs:327:9:330:18 | ... && ... | test.rs:326:5:331:5 | enter fn test_match_and |
+| test.rs:327:9:330:18 | ... && ... | test.rs:327:9:330:18 | ... && ... |
+| test.rs:327:9:330:18 | ... && ... | test.rs:327:10:330:9 | [boolean(false)] match r { ... } |
+| test.rs:327:9:330:18 | ... && ... | test.rs:327:10:330:9 | [boolean(true)] match r { ... } |
+| test.rs:327:9:330:18 | ... && ... | test.rs:328:18:328:18 | a |
+| test.rs:327:9:330:18 | ... && ... | test.rs:329:13:329:13 | _ |
+| test.rs:327:10:330:9 | [boolean(false)] match r { ... } | test.rs:327:10:330:9 | [boolean(false)] match r { ... } |
+| test.rs:327:10:330:9 | [boolean(false)] match r { ... } | test.rs:329:13:329:13 | _ |
+| test.rs:327:10:330:9 | [boolean(true)] match r { ... } | test.rs:327:10:330:9 | [boolean(true)] match r { ... } |
+| test.rs:328:18:328:18 | a | test.rs:328:18:328:18 | a |
+| test.rs:329:13:329:13 | _ | test.rs:329:13:329:13 | _ |
+| test.rs:333:5:338:5 | enter fn test_match_with_no_arms | test.rs:333:5:338:5 | enter fn test_match_with_no_arms |
+| test.rs:334:9:337:9 | match r { ... } | test.rs:333:5:338:5 | enter fn test_match_with_no_arms |
+| test.rs:334:9:337:9 | match r { ... } | test.rs:334:9:337:9 | match r { ... } |
+| test.rs:334:9:337:9 | match r { ... } | test.rs:335:16:335:20 | value |
+| test.rs:334:9:337:9 | match r { ... } | test.rs:336:13:336:22 | Err(...) |
+| test.rs:335:16:335:20 | value | test.rs:335:16:335:20 | value |
+| test.rs:336:13:336:22 | Err(...) | test.rs:336:13:336:22 | Err(...) |
+| test.rs:343:5:346:5 | enter fn test_let_match | test.rs:343:5:346:5 | enter fn test_let_match |
+| test.rs:344:18:344:18 | n | test.rs:343:5:346:5 | enter fn test_let_match |
+| test.rs:344:18:344:18 | n | test.rs:344:18:344:18 | n |
+| test.rs:344:39:344:53 | MacroStmts | test.rs:344:39:344:53 | MacroStmts |
+| test.rs:348:5:354:5 | enter fn test_let_with_return | test.rs:348:5:354:5 | enter fn test_let_with_return |
+| test.rs:348:5:354:5 | exit fn test_let_with_return (normal) | test.rs:348:5:354:5 | enter fn test_let_with_return |
+| test.rs:348:5:354:5 | exit fn test_let_with_return (normal) | test.rs:348:5:354:5 | exit fn test_let_with_return (normal) |
+| test.rs:348:5:354:5 | exit fn test_let_with_return (normal) | test.rs:350:18:350:20 | ret |
+| test.rs:348:5:354:5 | exit fn test_let_with_return (normal) | test.rs:351:13:351:16 | None |
+| test.rs:350:18:350:20 | ret | test.rs:350:18:350:20 | ret |
+| test.rs:351:13:351:16 | None | test.rs:351:13:351:16 | None |
+| test.rs:359:5:362:5 | enter fn empty_tuple_pattern | test.rs:359:5:362:5 | enter fn empty_tuple_pattern |
+| test.rs:366:5:370:5 | enter fn empty_struct_pattern | test.rs:366:5:370:5 | enter fn empty_struct_pattern |
+| test.rs:372:5:379:5 | enter fn range_pattern | test.rs:372:5:379:5 | enter fn range_pattern |
+| test.rs:373:9:378:9 | match 42 { ... } | test.rs:372:5:379:5 | enter fn range_pattern |
+| test.rs:373:9:378:9 | match 42 { ... } | test.rs:373:9:378:9 | match 42 { ... } |
+| test.rs:373:9:378:9 | match 42 { ... } | test.rs:374:15:374:15 | 0 |
+| test.rs:373:9:378:9 | match 42 { ... } | test.rs:374:20:374:20 | 1 |
+| test.rs:373:9:378:9 | match 42 { ... } | test.rs:375:13:375:13 | 1 |
+| test.rs:373:9:378:9 | match 42 { ... } | test.rs:375:13:375:16 | RangePat |
+| test.rs:373:9:378:9 | match 42 { ... } | test.rs:375:16:375:16 | 2 |
+| test.rs:373:9:378:9 | match 42 { ... } | test.rs:375:21:375:21 | 2 |
+| test.rs:373:9:378:9 | match 42 { ... } | test.rs:376:13:376:13 | 5 |
+| test.rs:373:9:378:9 | match 42 { ... } | test.rs:376:13:376:15 | RangePat |
+| test.rs:373:9:378:9 | match 42 { ... } | test.rs:376:20:376:20 | 3 |
+| test.rs:373:9:378:9 | match 42 { ... } | test.rs:377:13:377:13 | _ |
+| test.rs:374:15:374:15 | 0 | test.rs:374:15:374:15 | 0 |
+| test.rs:374:20:374:20 | 1 | test.rs:374:20:374:20 | 1 |
+| test.rs:375:13:375:13 | 1 | test.rs:375:13:375:13 | 1 |
+| test.rs:375:13:375:16 | RangePat | test.rs:375:13:375:16 | RangePat |
+| test.rs:375:16:375:16 | 2 | test.rs:375:16:375:16 | 2 |
+| test.rs:375:21:375:21 | 2 | test.rs:375:21:375:21 | 2 |
+| test.rs:376:13:376:13 | 5 | test.rs:376:13:376:13 | 5 |
+| test.rs:376:13:376:15 | RangePat | test.rs:376:13:376:15 | RangePat |
+| test.rs:376:20:376:20 | 3 | test.rs:376:20:376:20 | 3 |
+| test.rs:377:13:377:13 | _ | test.rs:377:13:377:13 | _ |
+| test.rs:383:5:388:5 | enter fn test_infinite_loop | test.rs:383:5:388:5 | enter fn test_infinite_loop |
+| test.rs:385:13:385:14 | TupleExpr | test.rs:385:13:385:14 | TupleExpr |
+| test.rs:392:5:394:5 | enter fn say_hello | test.rs:392:5:394:5 | enter fn say_hello |
+| test.rs:396:5:415:5 | enter fn async_block | test.rs:396:5:415:5 | enter fn async_block |
+| test.rs:397:26:399:9 | enter { ... } | test.rs:397:26:399:9 | enter { ... } |
+| test.rs:400:31:402:9 | enter { ... } | test.rs:400:31:402:9 | enter { ... } |
+| test.rs:409:22:414:9 | enter \|...\| ... | test.rs:409:22:414:9 | enter \|...\| ... |
+| test.rs:409:28:414:9 | enter { ... } | test.rs:409:28:414:9 | enter { ... } |
+| test.rs:409:28:414:9 | exit { ... } (normal) | test.rs:409:28:414:9 | enter { ... } |
+| test.rs:409:28:414:9 | exit { ... } (normal) | test.rs:409:28:414:9 | exit { ... } (normal) |
+| test.rs:409:28:414:9 | exit { ... } (normal) | test.rs:410:13:412:13 | if b {...} |
+| test.rs:409:28:414:9 | exit { ... } (normal) | test.rs:411:17:411:41 | ExprStmt |
+| test.rs:410:13:412:13 | if b {...} | test.rs:410:13:412:13 | if b {...} |
+| test.rs:411:17:411:41 | ExprStmt | test.rs:411:17:411:41 | ExprStmt |
+| test.rs:421:5:423:5 | enter fn add_two | test.rs:421:5:423:5 | enter fn add_two |
+| test.rs:427:5:435:5 | enter fn const_block_assert | test.rs:427:5:435:5 | enter fn const_block_assert |
+| test.rs:431:13:431:49 | enter fn panic_cold_explicit | test.rs:431:13:431:49 | enter fn panic_cold_explicit |
+| test.rs:431:21:431:48 | [boolean(false)] ! ... | test.rs:431:21:431:48 | [boolean(false)] ! ... |
+| test.rs:431:21:431:48 | [boolean(true)] ! ... | test.rs:431:21:431:48 | [boolean(true)] ! ... |
+| test.rs:431:21:431:48 | if ... {...} | test.rs:427:5:435:5 | enter fn const_block_assert |
+| test.rs:431:21:431:48 | if ... {...} | test.rs:431:21:431:48 | [boolean(false)] ! ... |
+| test.rs:431:21:431:48 | if ... {...} | test.rs:431:21:431:48 | [boolean(true)] ! ... |
+| test.rs:431:21:431:48 | if ... {...} | test.rs:431:21:431:48 | if ... {...} |
+| test.rs:437:5:446:5 | enter fn const_block_panic | test.rs:437:5:446:5 | enter fn const_block_panic |
+| test.rs:442:17:442:24 | enter fn panic_cold_explicit | test.rs:442:17:442:24 | enter fn panic_cold_explicit |
+| test.rs:449:1:454:1 | enter fn dead_code | test.rs:449:1:454:1 | enter fn dead_code |
+| test.rs:456:1:456:16 | enter fn do_thing | test.rs:456:1:456:16 | enter fn do_thing |
+| test.rs:458:1:460:1 | enter fn condition_not_met | test.rs:458:1:460:1 | enter fn condition_not_met |
+| test.rs:462:1:462:21 | enter fn do_next_thing | test.rs:462:1:462:21 | enter fn do_next_thing |
+| test.rs:464:1:464:21 | enter fn do_last_thing | test.rs:464:1:464:21 | enter fn do_last_thing |
+| test.rs:466:1:480:1 | enter fn labelled_block1 | test.rs:466:1:480:1 | enter fn labelled_block1 |
+| test.rs:467:18:478:5 | 'block: { ... } | test.rs:466:1:480:1 | enter fn labelled_block1 |
+| test.rs:467:18:478:5 | 'block: { ... } | test.rs:467:18:478:5 | 'block: { ... } |
+| test.rs:467:18:478:5 | 'block: { ... } | test.rs:469:9:471:9 | if ... {...} |
+| test.rs:467:18:478:5 | 'block: { ... } | test.rs:470:13:470:27 | ExprStmt |
+| test.rs:467:18:478:5 | 'block: { ... } | test.rs:473:9:475:9 | if ... {...} |
+| test.rs:467:18:478:5 | 'block: { ... } | test.rs:474:13:474:27 | ExprStmt |
+| test.rs:469:9:471:9 | if ... {...} | test.rs:469:9:471:9 | if ... {...} |
+| test.rs:470:13:470:27 | ExprStmt | test.rs:470:13:470:27 | ExprStmt |
+| test.rs:473:9:475:9 | if ... {...} | test.rs:473:9:475:9 | if ... {...} |
+| test.rs:474:13:474:27 | ExprStmt | test.rs:474:13:474:27 | ExprStmt |
+| test.rs:482:1:490:1 | enter fn labelled_block2 | test.rs:482:1:490:1 | enter fn labelled_block2 |
+| test.rs:483:18:489:5 | 'block: { ... } | test.rs:482:1:490:1 | enter fn labelled_block2 |
+| test.rs:483:18:489:5 | 'block: { ... } | test.rs:483:18:489:5 | 'block: { ... } |
+| test.rs:483:18:489:5 | 'block: { ... } | test.rs:485:18:485:18 | y |
+| test.rs:483:18:489:5 | 'block: { ... } | test.rs:486:13:486:27 | ExprStmt |
+| test.rs:485:18:485:18 | y | test.rs:485:18:485:18 | y |
+| test.rs:486:13:486:27 | ExprStmt | test.rs:486:13:486:27 | ExprStmt |
+| test.rs:492:1:498:1 | enter fn test_nested_function2 | test.rs:492:1:498:1 | enter fn test_nested_function2 |
+| test.rs:494:5:496:5 | enter fn nested | test.rs:494:5:496:5 | enter fn nested |
+| test.rs:509:5:511:5 | enter fn new | test.rs:509:5:511:5 | enter fn new |
+| test.rs:513:5:515:5 | enter fn negated | test.rs:513:5:515:5 | enter fn negated |
+| test.rs:517:5:519:5 | enter fn multifly_add | test.rs:517:5:519:5 | enter fn multifly_add |
+immediateDominator
+| test.rs:19:9:23:9 | if ... {...} else {...} | test.rs:18:5:24:5 | enter fn next |
+| test.rs:20:13:20:13 | n | test.rs:18:5:24:5 | enter fn next |
+| test.rs:22:13:22:13 | 3 | test.rs:18:5:24:5 | enter fn next |
+| test.rs:26:5:42:5 | exit fn test_break_and_continue (normal) | test.rs:29:13:29:24 | ExprStmt |
+| test.rs:29:13:29:24 | ExprStmt | test.rs:26:5:42:5 | enter fn test_break_and_continue |
+| test.rs:30:13:32:13 | if ... {...} | test.rs:29:13:29:24 | ExprStmt |
+| test.rs:31:17:31:29 | ExprStmt | test.rs:29:13:29:24 | ExprStmt |
+| test.rs:33:13:35:13 | if ... {...} | test.rs:30:13:32:13 | if ... {...} |
+| test.rs:34:17:34:22 | ExprStmt | test.rs:30:13:32:13 | if ... {...} |
+| test.rs:36:13:38:13 | if ... {...} | test.rs:33:13:35:13 | if ... {...} |
+| test.rs:37:17:37:25 | ExprStmt | test.rs:33:13:35:13 | if ... {...} |
+| test.rs:46:13:53:13 | 'inner: loop { ... } | test.rs:47:17:51:17 | ExprStmt |
+| test.rs:47:17:51:17 | ExprStmt | test.rs:44:5:56:5 | enter fn test_break_with_labels |
+| test.rs:48:21:48:26 | ExprStmt | test.rs:47:17:51:17 | ExprStmt |
+| test.rs:49:24:51:17 | if b {...} | test.rs:49:27:49:27 | b |
+| test.rs:49:27:49:27 | b | test.rs:47:17:51:17 | ExprStmt |
+| test.rs:50:21:50:33 | ExprStmt | test.rs:49:27:49:27 | b |
+| test.rs:60:13:60:14 | ExprStmt | test.rs:58:5:70:5 | enter fn test_continue_with_labels |
+| test.rs:62:17:66:17 | ExprStmt | test.rs:60:13:60:14 | ExprStmt |
+| test.rs:63:21:63:29 | ExprStmt | test.rs:62:17:66:17 | ExprStmt |
+| test.rs:64:24:66:17 | if b {...} | test.rs:64:27:64:27 | b |
+| test.rs:64:27:64:27 | b | test.rs:62:17:66:17 | ExprStmt |
+| test.rs:65:21:65:36 | ExprStmt | test.rs:64:27:64:27 | b |
+| test.rs:76:17:80:17 | ExprStmt | test.rs:72:5:84:5 | enter fn test_loop_label_shadowing |
+| test.rs:77:21:77:29 | ExprStmt | test.rs:76:17:80:17 | ExprStmt |
+| test.rs:78:24:80:17 | if b {...} | test.rs:78:27:78:27 | b |
+| test.rs:78:27:78:27 | b | test.rs:76:17:80:17 | ExprStmt |
+| test.rs:79:21:79:36 | ExprStmt | test.rs:78:27:78:27 | b |
+| test.rs:88:9:94:9 | while b { ... } | test.rs:88:15:88:15 | b |
+| test.rs:88:15:88:15 | b | test.rs:86:5:95:5 | enter fn test_while |
+| test.rs:89:13:89:14 | ExprStmt | test.rs:88:15:88:15 | b |
+| test.rs:90:13:92:13 | if ... {...} | test.rs:89:13:89:14 | ExprStmt |
+| test.rs:91:17:91:22 | ExprStmt | test.rs:89:13:89:14 | ExprStmt |
+| test.rs:99:9:103:9 | while ... { ... } | test.rs:99:15:99:39 | let ... = ... |
+| test.rs:99:15:99:39 | let ... = ... | test.rs:97:5:104:5 | enter fn test_while_let |
+| test.rs:99:24:99:24 | x | test.rs:99:15:99:39 | let ... = ... |
+| test.rs:100:13:102:13 | if ... {...} | test.rs:99:24:99:24 | x |
+| test.rs:101:17:101:22 | ExprStmt | test.rs:99:24:99:24 | x |
+| test.rs:107:9:112:9 | for ... in ... { ... } | test.rs:107:13:107:13 | i |
+| test.rs:107:13:107:13 | i | test.rs:106:5:113:5 | enter fn test_for |
+| test.rs:108:13:110:13 | ExprStmt | test.rs:107:13:107:13 | i |
+| test.rs:108:13:110:13 | if ... {...} | test.rs:108:13:110:13 | ExprStmt |
+| test.rs:109:17:109:22 | ExprStmt | test.rs:108:13:110:13 | ExprStmt |
+| test.rs:130:9:134:9 | if ... {...} else {...} | test.rs:129:5:135:5 | enter fn test_if_else |
+| test.rs:131:13:131:13 | 0 | test.rs:129:5:135:5 | enter fn test_if_else |
+| test.rs:133:13:133:13 | n | test.rs:129:5:135:5 | enter fn test_if_else |
+| test.rs:138:9:142:9 | if ... {...} else {...} | test.rs:137:5:143:5 | enter fn test_if_let_else |
+| test.rs:138:21:138:21 | n | test.rs:137:5:143:5 | enter fn test_if_let_else |
+| test.rs:141:13:141:13 | 0 | test.rs:137:5:143:5 | enter fn test_if_let_else |
+| test.rs:145:5:150:5 | exit fn test_if_let (normal) | test.rs:145:5:150:5 | enter fn test_if_let |
+| test.rs:146:9:148:9 | if ... {...} | test.rs:145:5:150:5 | enter fn test_if_let |
+| test.rs:146:21:146:21 | n | test.rs:145:5:150:5 | enter fn test_if_let |
+| test.rs:153:9:157:9 | if ... {...} else {...} | test.rs:152:5:158:5 | enter fn test_nested_if |
+| test.rs:153:13:153:48 | [boolean(false)] if ... {...} else {...} | test.rs:152:5:158:5 | enter fn test_nested_if |
+| test.rs:153:13:153:48 | [boolean(true)] if ... {...} else {...} | test.rs:152:5:158:5 | enter fn test_nested_if |
+| test.rs:153:22:153:32 | [boolean(false)] { ... } | test.rs:153:24:153:24 | a |
+| test.rs:153:22:153:32 | [boolean(true)] { ... } | test.rs:153:24:153:24 | a |
+| test.rs:153:24:153:24 | a | test.rs:152:5:158:5 | enter fn test_nested_if |
+| test.rs:153:39:153:48 | [boolean(false)] { ... } | test.rs:153:41:153:41 | a |
+| test.rs:153:39:153:48 | [boolean(true)] { ... } | test.rs:153:41:153:41 | a |
+| test.rs:153:41:153:41 | a | test.rs:152:5:158:5 | enter fn test_nested_if |
+| test.rs:161:9:168:9 | if ... {...} else {...} | test.rs:160:5:169:5 | enter fn test_nested_if_match |
+| test.rs:162:18:162:21 | true | test.rs:160:5:169:5 | enter fn test_nested_if_match |
+| test.rs:163:13:163:13 | _ | test.rs:160:5:169:5 | enter fn test_nested_if_match |
+| test.rs:172:9:179:9 | if ... {...} else {...} | test.rs:171:5:180:5 | enter fn test_nested_if_block |
+| test.rs:172:12:175:9 | [boolean(false)] { ... } | test.rs:171:5:180:5 | enter fn test_nested_if_block |
+| test.rs:172:12:175:9 | [boolean(true)] { ... } | test.rs:171:5:180:5 | enter fn test_nested_if_block |
+| test.rs:184:9:191:9 | if ... {...} else {...} | test.rs:182:5:192:5 | enter fn test_if_assignment |
+| test.rs:184:12:187:9 | [boolean(false)] { ... } | test.rs:182:5:192:5 | enter fn test_if_assignment |
+| test.rs:184:12:187:9 | [boolean(true)] { ... } | test.rs:182:5:192:5 | enter fn test_if_assignment |
+| test.rs:195:9:204:9 | if ... {...} else {...} | test.rs:197:17:197:29 | ExprStmt |
+| test.rs:196:13:198:13 | if ... {...} | test.rs:196:13:198:14 | ExprStmt |
+| test.rs:196:13:198:14 | ExprStmt | test.rs:194:5:205:5 | enter fn test_if_loop1 |
+| test.rs:197:17:197:28 | [boolean(false)] break ... | test.rs:197:17:197:29 | ExprStmt |
+| test.rs:197:17:197:28 | [boolean(true)] break ... | test.rs:197:17:197:29 | ExprStmt |
+| test.rs:197:17:197:29 | ExprStmt | test.rs:196:13:198:14 | ExprStmt |
+| test.rs:208:9:217:9 | if ... {...} else {...} | test.rs:210:17:210:36 | ExprStmt |
+| test.rs:209:13:211:13 | if ... {...} | test.rs:209:13:211:14 | ExprStmt |
+| test.rs:209:13:211:14 | ExprStmt | test.rs:207:5:218:5 | enter fn test_if_loop2 |
+| test.rs:210:17:210:35 | [boolean(false)] break ''label ... | test.rs:210:17:210:36 | ExprStmt |
+| test.rs:210:17:210:35 | [boolean(true)] break ''label ... | test.rs:210:17:210:36 | ExprStmt |
+| test.rs:210:17:210:36 | ExprStmt | test.rs:209:13:211:14 | ExprStmt |
+| test.rs:221:9:227:9 | if ... {...} else {...} | test.rs:220:5:228:5 | enter fn test_labelled_block |
+| test.rs:222:13:222:30 | [boolean(false)] break ''block ... | test.rs:220:5:228:5 | enter fn test_labelled_block |
+| test.rs:222:13:222:30 | [boolean(true)] break ''block ... | test.rs:220:5:228:5 | enter fn test_labelled_block |
+| test.rs:234:17:234:22 | [boolean(false)] ... && ... | test.rs:233:5:236:5 | enter fn test_and_operator |
+| test.rs:234:17:234:22 | [boolean(true)] ... && ... | test.rs:234:22:234:22 | b |
+| test.rs:234:17:234:27 | ... && ... | test.rs:233:5:236:5 | enter fn test_and_operator |
+| test.rs:234:22:234:22 | b | test.rs:233:5:236:5 | enter fn test_and_operator |
+| test.rs:239:17:239:22 | [boolean(false)] ... \|\| ... | test.rs:239:22:239:22 | b |
+| test.rs:239:17:239:22 | [boolean(true)] ... \|\| ... | test.rs:238:5:241:5 | enter fn test_or_operator |
+| test.rs:239:17:239:27 | ... \|\| ... | test.rs:238:5:241:5 | enter fn test_or_operator |
+| test.rs:239:22:239:22 | b | test.rs:238:5:241:5 | enter fn test_or_operator |
+| test.rs:244:17:244:30 | [boolean(false)] ... \|\| ... | test.rs:244:23:244:23 | b |
+| test.rs:244:17:244:30 | [boolean(true)] ... \|\| ... | test.rs:243:5:246:5 | enter fn test_or_operator_2 |
+| test.rs:244:17:244:35 | ... \|\| ... | test.rs:243:5:246:5 | enter fn test_or_operator_2 |
+| test.rs:244:23:244:23 | b | test.rs:243:5:246:5 | enter fn test_or_operator_2 |
+| test.rs:254:9:258:9 | if ... {...} else {...} | test.rs:253:5:259:5 | enter fn test_if_and_operator |
+| test.rs:254:12:254:17 | [boolean(false)] ... && ... | test.rs:253:5:259:5 | enter fn test_if_and_operator |
+| test.rs:254:12:254:17 | [boolean(true)] ... && ... | test.rs:254:17:254:17 | b |
+| test.rs:254:12:254:22 | [boolean(false)] ... && ... | test.rs:253:5:259:5 | enter fn test_if_and_operator |
+| test.rs:254:12:254:22 | [boolean(true)] ... && ... | test.rs:254:12:254:17 | [boolean(true)] ... && ... |
+| test.rs:254:17:254:17 | b | test.rs:253:5:259:5 | enter fn test_if_and_operator |
+| test.rs:262:9:266:9 | if ... {...} else {...} | test.rs:261:5:267:5 | enter fn test_if_or_operator |
+| test.rs:262:12:262:17 | [boolean(false)] ... \|\| ... | test.rs:262:17:262:17 | b |
+| test.rs:262:12:262:17 | [boolean(true)] ... \|\| ... | test.rs:261:5:267:5 | enter fn test_if_or_operator |
+| test.rs:262:12:262:22 | [boolean(false)] ... \|\| ... | test.rs:262:12:262:17 | [boolean(false)] ... \|\| ... |
+| test.rs:262:12:262:22 | [boolean(true)] ... \|\| ... | test.rs:261:5:267:5 | enter fn test_if_or_operator |
+| test.rs:262:17:262:17 | b | test.rs:261:5:267:5 | enter fn test_if_or_operator |
+| test.rs:270:9:274:9 | if ... {...} else {...} | test.rs:269:5:275:5 | enter fn test_if_not_operator |
+| test.rs:270:12:270:13 | [boolean(false)] ! ... | test.rs:269:5:275:5 | enter fn test_if_not_operator |
+| test.rs:270:12:270:13 | [boolean(true)] ! ... | test.rs:269:5:275:5 | enter fn test_if_not_operator |
+| test.rs:277:5:279:5 | exit fn test_and_return (normal) | test.rs:277:5:279:5 | enter fn test_and_return |
+| test.rs:278:9:278:19 | ... && ... | test.rs:277:5:279:5 | enter fn test_and_return |
+| test.rs:278:14:278:19 | return | test.rs:277:5:279:5 | enter fn test_and_return |
+| test.rs:281:5:286:5 | exit fn test_and_true (normal) | test.rs:281:5:286:5 | enter fn test_and_true |
+| test.rs:282:13:282:21 | [boolean(false)] ... && ... | test.rs:281:5:286:5 | enter fn test_and_true |
+| test.rs:282:18:282:21 | true | test.rs:281:5:286:5 | enter fn test_and_true |
+| test.rs:292:5:294:5 | exit fn test_question_mark_operator_1 (normal) | test.rs:292:5:294:5 | enter fn test_question_mark_operator_1 |
+| test.rs:293:32:293:32 | 4 | test.rs:292:5:294:5 | enter fn test_question_mark_operator_1 |
+| test.rs:296:5:301:5 | exit fn test_question_mark_operator_2 (normal) | test.rs:296:5:301:5 | enter fn test_question_mark_operator_2 |
+| test.rs:297:9:300:9 | match ... { ... } | test.rs:298:13:298:16 | true |
+| test.rs:298:13:298:16 | true | test.rs:296:5:301:5 | enter fn test_question_mark_operator_2 |
+| test.rs:298:21:298:24 | Some | test.rs:298:13:298:16 | true |
+| test.rs:299:13:299:17 | false | test.rs:298:13:298:16 | true |
+| test.rs:308:9:312:9 | match maybe_digit { ... } | test.rs:307:5:313:5 | enter fn test_match |
+| test.rs:309:26:309:26 | x | test.rs:307:5:313:5 | enter fn test_match |
+| test.rs:309:42:309:42 | x | test.rs:309:26:309:26 | x |
+| test.rs:310:13:310:27 | ...::Some(...) | test.rs:307:5:313:5 | enter fn test_match |
+| test.rs:310:26:310:26 | x | test.rs:310:13:310:27 | ...::Some(...) |
+| test.rs:311:13:311:24 | ...::None | test.rs:310:13:310:27 | ...::Some(...) |
+| test.rs:315:5:324:5 | exit fn test_match_with_return_in_scrutinee (normal) | test.rs:315:5:324:5 | enter fn test_match_with_return_in_scrutinee |
+| test.rs:316:9:323:9 | match ... { ... } | test.rs:319:13:319:23 | maybe_digit |
+| test.rs:317:13:317:21 | ExprStmt | test.rs:315:5:324:5 | enter fn test_match_with_return_in_scrutinee |
+| test.rs:319:13:319:23 | maybe_digit | test.rs:315:5:324:5 | enter fn test_match_with_return_in_scrutinee |
+| test.rs:321:26:321:26 | x | test.rs:319:13:319:23 | maybe_digit |
+| test.rs:322:13:322:24 | ...::None | test.rs:319:13:319:23 | maybe_digit |
+| test.rs:327:9:330:18 | ... && ... | test.rs:326:5:331:5 | enter fn test_match_and |
+| test.rs:327:10:330:9 | [boolean(false)] match r { ... } | test.rs:326:5:331:5 | enter fn test_match_and |
+| test.rs:327:10:330:9 | [boolean(true)] match r { ... } | test.rs:328:18:328:18 | a |
+| test.rs:328:18:328:18 | a | test.rs:326:5:331:5 | enter fn test_match_and |
+| test.rs:329:13:329:13 | _ | test.rs:326:5:331:5 | enter fn test_match_and |
+| test.rs:334:9:337:9 | match r { ... } | test.rs:333:5:338:5 | enter fn test_match_with_no_arms |
+| test.rs:335:16:335:20 | value | test.rs:333:5:338:5 | enter fn test_match_with_no_arms |
+| test.rs:336:13:336:22 | Err(...) | test.rs:333:5:338:5 | enter fn test_match_with_no_arms |
+| test.rs:344:18:344:18 | n | test.rs:343:5:346:5 | enter fn test_let_match |
+| test.rs:344:39:344:53 | MacroStmts | test.rs:343:5:346:5 | enter fn test_let_match |
+| test.rs:348:5:354:5 | exit fn test_let_with_return (normal) | test.rs:348:5:354:5 | enter fn test_let_with_return |
+| test.rs:350:18:350:20 | ret | test.rs:348:5:354:5 | enter fn test_let_with_return |
+| test.rs:351:13:351:16 | None | test.rs:348:5:354:5 | enter fn test_let_with_return |
+| test.rs:373:9:378:9 | match 42 { ... } | test.rs:372:5:379:5 | enter fn range_pattern |
+| test.rs:374:15:374:15 | 0 | test.rs:372:5:379:5 | enter fn range_pattern |
+| test.rs:374:20:374:20 | 1 | test.rs:374:15:374:15 | 0 |
+| test.rs:375:13:375:13 | 1 | test.rs:375:13:375:16 | RangePat |
+| test.rs:375:13:375:16 | RangePat | test.rs:372:5:379:5 | enter fn range_pattern |
+| test.rs:375:16:375:16 | 2 | test.rs:375:13:375:13 | 1 |
+| test.rs:375:21:375:21 | 2 | test.rs:375:16:375:16 | 2 |
+| test.rs:376:13:376:13 | 5 | test.rs:376:13:376:15 | RangePat |
+| test.rs:376:13:376:15 | RangePat | test.rs:375:13:375:16 | RangePat |
+| test.rs:376:20:376:20 | 3 | test.rs:376:13:376:13 | 5 |
+| test.rs:377:13:377:13 | _ | test.rs:376:13:376:15 | RangePat |
+| test.rs:385:13:385:14 | TupleExpr | test.rs:383:5:388:5 | enter fn test_infinite_loop |
+| test.rs:409:28:414:9 | exit { ... } (normal) | test.rs:409:28:414:9 | enter { ... } |
+| test.rs:410:13:412:13 | if b {...} | test.rs:409:28:414:9 | enter { ... } |
+| test.rs:411:17:411:41 | ExprStmt | test.rs:409:28:414:9 | enter { ... } |
+| test.rs:431:21:431:48 | [boolean(false)] ! ... | test.rs:427:5:435:5 | enter fn const_block_assert |
+| test.rs:431:21:431:48 | [boolean(true)] ! ... | test.rs:427:5:435:5 | enter fn const_block_assert |
+| test.rs:431:21:431:48 | if ... {...} | test.rs:427:5:435:5 | enter fn const_block_assert |
+| test.rs:467:18:478:5 | 'block: { ... } | test.rs:466:1:480:1 | enter fn labelled_block1 |
+| test.rs:469:9:471:9 | if ... {...} | test.rs:466:1:480:1 | enter fn labelled_block1 |
+| test.rs:470:13:470:27 | ExprStmt | test.rs:466:1:480:1 | enter fn labelled_block1 |
+| test.rs:473:9:475:9 | if ... {...} | test.rs:469:9:471:9 | if ... {...} |
+| test.rs:474:13:474:27 | ExprStmt | test.rs:469:9:471:9 | if ... {...} |
+| test.rs:483:18:489:5 | 'block: { ... } | test.rs:482:1:490:1 | enter fn labelled_block2 |
+| test.rs:485:18:485:18 | y | test.rs:482:1:490:1 | enter fn labelled_block2 |
+| test.rs:486:13:486:27 | ExprStmt | test.rs:482:1:490:1 | enter fn labelled_block2 |
+controls
+| test.rs:18:5:24:5 | enter fn next | test.rs:20:13:20:13 | n | true |
+| test.rs:18:5:24:5 | enter fn next | test.rs:22:13:22:13 | 3 | false |
+| test.rs:29:13:29:24 | ExprStmt | test.rs:30:13:32:13 | if ... {...} | false |
+| test.rs:29:13:29:24 | ExprStmt | test.rs:31:17:31:29 | ExprStmt | true |
+| test.rs:29:13:29:24 | ExprStmt | test.rs:33:13:35:13 | if ... {...} | false |
+| test.rs:29:13:29:24 | ExprStmt | test.rs:34:17:34:22 | ExprStmt | false |
+| test.rs:29:13:29:24 | ExprStmt | test.rs:36:13:38:13 | if ... {...} | false |
+| test.rs:29:13:29:24 | ExprStmt | test.rs:37:17:37:25 | ExprStmt | false |
+| test.rs:30:13:32:13 | if ... {...} | test.rs:33:13:35:13 | if ... {...} | false |
+| test.rs:30:13:32:13 | if ... {...} | test.rs:34:17:34:22 | ExprStmt | true |
+| test.rs:30:13:32:13 | if ... {...} | test.rs:36:13:38:13 | if ... {...} | false |
+| test.rs:30:13:32:13 | if ... {...} | test.rs:37:17:37:25 | ExprStmt | false |
+| test.rs:33:13:35:13 | if ... {...} | test.rs:36:13:38:13 | if ... {...} | false |
+| test.rs:33:13:35:13 | if ... {...} | test.rs:37:17:37:25 | ExprStmt | true |
+| test.rs:47:17:51:17 | ExprStmt | test.rs:48:21:48:26 | ExprStmt | true |
+| test.rs:47:17:51:17 | ExprStmt | test.rs:49:24:51:17 | if b {...} | false |
+| test.rs:47:17:51:17 | ExprStmt | test.rs:49:27:49:27 | b | false |
+| test.rs:47:17:51:17 | ExprStmt | test.rs:50:21:50:33 | ExprStmt | false |
+| test.rs:49:27:49:27 | b | test.rs:49:24:51:17 | if b {...} | false |
+| test.rs:49:27:49:27 | b | test.rs:50:21:50:33 | ExprStmt | true |
+| test.rs:62:17:66:17 | ExprStmt | test.rs:63:21:63:29 | ExprStmt | true |
+| test.rs:62:17:66:17 | ExprStmt | test.rs:64:24:66:17 | if b {...} | false |
+| test.rs:62:17:66:17 | ExprStmt | test.rs:64:27:64:27 | b | false |
+| test.rs:62:17:66:17 | ExprStmt | test.rs:65:21:65:36 | ExprStmt | false |
+| test.rs:64:27:64:27 | b | test.rs:64:24:66:17 | if b {...} | false |
+| test.rs:64:27:64:27 | b | test.rs:65:21:65:36 | ExprStmt | true |
+| test.rs:76:17:80:17 | ExprStmt | test.rs:77:21:77:29 | ExprStmt | true |
+| test.rs:76:17:80:17 | ExprStmt | test.rs:78:24:80:17 | if b {...} | false |
+| test.rs:76:17:80:17 | ExprStmt | test.rs:78:27:78:27 | b | false |
+| test.rs:76:17:80:17 | ExprStmt | test.rs:79:21:79:36 | ExprStmt | false |
+| test.rs:78:27:78:27 | b | test.rs:78:24:80:17 | if b {...} | false |
+| test.rs:78:27:78:27 | b | test.rs:79:21:79:36 | ExprStmt | true |
+| test.rs:88:15:88:15 | b | test.rs:89:13:89:14 | ExprStmt | true |
+| test.rs:88:15:88:15 | b | test.rs:90:13:92:13 | if ... {...} | true |
+| test.rs:88:15:88:15 | b | test.rs:91:17:91:22 | ExprStmt | true |
+| test.rs:89:13:89:14 | ExprStmt | test.rs:90:13:92:13 | if ... {...} | false |
+| test.rs:89:13:89:14 | ExprStmt | test.rs:91:17:91:22 | ExprStmt | true |
+| test.rs:99:24:99:24 | x | test.rs:100:13:102:13 | if ... {...} | false |
+| test.rs:99:24:99:24 | x | test.rs:101:17:101:22 | ExprStmt | true |
+| test.rs:108:13:110:13 | ExprStmt | test.rs:108:13:110:13 | if ... {...} | false |
+| test.rs:108:13:110:13 | ExprStmt | test.rs:109:17:109:22 | ExprStmt | true |
+| test.rs:129:5:135:5 | enter fn test_if_else | test.rs:131:13:131:13 | 0 | true |
+| test.rs:129:5:135:5 | enter fn test_if_else | test.rs:133:13:133:13 | n | false |
+| test.rs:152:5:158:5 | enter fn test_nested_if | test.rs:153:22:153:32 | [boolean(false)] { ... } | true |
+| test.rs:152:5:158:5 | enter fn test_nested_if | test.rs:153:22:153:32 | [boolean(true)] { ... } | true |
+| test.rs:152:5:158:5 | enter fn test_nested_if | test.rs:153:24:153:24 | a | true |
+| test.rs:152:5:158:5 | enter fn test_nested_if | test.rs:153:39:153:48 | [boolean(false)] { ... } | false |
+| test.rs:152:5:158:5 | enter fn test_nested_if | test.rs:153:39:153:48 | [boolean(true)] { ... } | false |
+| test.rs:152:5:158:5 | enter fn test_nested_if | test.rs:153:41:153:41 | a | false |
+| test.rs:153:24:153:24 | a | test.rs:153:22:153:32 | [boolean(false)] { ... } | false |
+| test.rs:153:24:153:24 | a | test.rs:153:22:153:32 | [boolean(true)] { ... } | true |
+| test.rs:153:41:153:41 | a | test.rs:153:39:153:48 | [boolean(false)] { ... } | false |
+| test.rs:153:41:153:41 | a | test.rs:153:39:153:48 | [boolean(true)] { ... } | true |
+| test.rs:171:5:180:5 | enter fn test_nested_if_block | test.rs:172:12:175:9 | [boolean(false)] { ... } | false |
+| test.rs:171:5:180:5 | enter fn test_nested_if_block | test.rs:172:12:175:9 | [boolean(true)] { ... } | true |
+| test.rs:182:5:192:5 | enter fn test_if_assignment | test.rs:184:12:187:9 | [boolean(false)] { ... } | false |
+| test.rs:182:5:192:5 | enter fn test_if_assignment | test.rs:184:12:187:9 | [boolean(true)] { ... } | true |
+| test.rs:196:13:198:14 | ExprStmt | test.rs:195:9:204:9 | if ... {...} else {...} | true |
+| test.rs:196:13:198:14 | ExprStmt | test.rs:196:13:198:13 | if ... {...} | false |
+| test.rs:196:13:198:14 | ExprStmt | test.rs:197:17:197:28 | [boolean(false)] break ... | true |
+| test.rs:196:13:198:14 | ExprStmt | test.rs:197:17:197:28 | [boolean(true)] break ... | true |
+| test.rs:196:13:198:14 | ExprStmt | test.rs:197:17:197:29 | ExprStmt | true |
+| test.rs:197:17:197:29 | ExprStmt | test.rs:197:17:197:28 | [boolean(false)] break ... | false |
+| test.rs:197:17:197:29 | ExprStmt | test.rs:197:17:197:28 | [boolean(true)] break ... | true |
+| test.rs:209:13:211:14 | ExprStmt | test.rs:208:9:217:9 | if ... {...} else {...} | true |
+| test.rs:209:13:211:14 | ExprStmt | test.rs:209:13:211:13 | if ... {...} | false |
+| test.rs:209:13:211:14 | ExprStmt | test.rs:210:17:210:35 | [boolean(false)] break ''label ... | true |
+| test.rs:209:13:211:14 | ExprStmt | test.rs:210:17:210:35 | [boolean(true)] break ''label ... | true |
+| test.rs:209:13:211:14 | ExprStmt | test.rs:210:17:210:36 | ExprStmt | true |
+| test.rs:210:17:210:36 | ExprStmt | test.rs:210:17:210:35 | [boolean(false)] break ''label ... | false |
+| test.rs:210:17:210:36 | ExprStmt | test.rs:210:17:210:35 | [boolean(true)] break ''label ... | true |
+| test.rs:220:5:228:5 | enter fn test_labelled_block | test.rs:222:13:222:30 | [boolean(false)] break ''block ... | false |
+| test.rs:220:5:228:5 | enter fn test_labelled_block | test.rs:222:13:222:30 | [boolean(true)] break ''block ... | true |
+| test.rs:233:5:236:5 | enter fn test_and_operator | test.rs:234:17:234:22 | [boolean(true)] ... && ... | true |
+| test.rs:233:5:236:5 | enter fn test_and_operator | test.rs:234:22:234:22 | b | true |
+| test.rs:234:22:234:22 | b | test.rs:234:17:234:22 | [boolean(true)] ... && ... | true |
+| test.rs:238:5:241:5 | enter fn test_or_operator | test.rs:239:17:239:22 | [boolean(false)] ... \|\| ... | false |
+| test.rs:238:5:241:5 | enter fn test_or_operator | test.rs:239:22:239:22 | b | false |
+| test.rs:239:22:239:22 | b | test.rs:239:17:239:22 | [boolean(false)] ... \|\| ... | false |
+| test.rs:243:5:246:5 | enter fn test_or_operator_2 | test.rs:244:17:244:30 | [boolean(false)] ... \|\| ... | false |
+| test.rs:243:5:246:5 | enter fn test_or_operator_2 | test.rs:244:23:244:23 | b | false |
+| test.rs:244:23:244:23 | b | test.rs:244:17:244:30 | [boolean(false)] ... \|\| ... | false |
+| test.rs:253:5:259:5 | enter fn test_if_and_operator | test.rs:254:12:254:17 | [boolean(true)] ... && ... | true |
+| test.rs:253:5:259:5 | enter fn test_if_and_operator | test.rs:254:12:254:22 | [boolean(true)] ... && ... | true |
+| test.rs:253:5:259:5 | enter fn test_if_and_operator | test.rs:254:17:254:17 | b | true |
+| test.rs:254:12:254:17 | [boolean(true)] ... && ... | test.rs:254:12:254:22 | [boolean(true)] ... && ... | true |
+| test.rs:254:17:254:17 | b | test.rs:254:12:254:17 | [boolean(true)] ... && ... | true |
+| test.rs:254:17:254:17 | b | test.rs:254:12:254:22 | [boolean(true)] ... && ... | true |
+| test.rs:261:5:267:5 | enter fn test_if_or_operator | test.rs:262:12:262:17 | [boolean(false)] ... \|\| ... | false |
+| test.rs:261:5:267:5 | enter fn test_if_or_operator | test.rs:262:12:262:22 | [boolean(false)] ... \|\| ... | false |
+| test.rs:261:5:267:5 | enter fn test_if_or_operator | test.rs:262:17:262:17 | b | false |
+| test.rs:262:12:262:17 | [boolean(false)] ... \|\| ... | test.rs:262:12:262:22 | [boolean(false)] ... \|\| ... | false |
+| test.rs:262:17:262:17 | b | test.rs:262:12:262:17 | [boolean(false)] ... \|\| ... | false |
+| test.rs:262:17:262:17 | b | test.rs:262:12:262:22 | [boolean(false)] ... \|\| ... | false |
+| test.rs:269:5:275:5 | enter fn test_if_not_operator | test.rs:270:12:270:13 | [boolean(false)] ! ... | true |
+| test.rs:269:5:275:5 | enter fn test_if_not_operator | test.rs:270:12:270:13 | [boolean(true)] ! ... | false |
+| test.rs:277:5:279:5 | enter fn test_and_return | test.rs:278:9:278:19 | ... && ... | false |
+| test.rs:277:5:279:5 | enter fn test_and_return | test.rs:278:14:278:19 | return | true |
+| test.rs:281:5:286:5 | enter fn test_and_true | test.rs:282:13:282:21 | [boolean(false)] ... && ... | false |
+| test.rs:281:5:286:5 | enter fn test_and_true | test.rs:282:18:282:21 | true | true |
+| test.rs:309:26:309:26 | x | test.rs:309:42:309:42 | x | true |
+| test.rs:315:5:324:5 | enter fn test_match_with_return_in_scrutinee | test.rs:316:9:323:9 | match ... { ... } | false |
+| test.rs:315:5:324:5 | enter fn test_match_with_return_in_scrutinee | test.rs:317:13:317:21 | ExprStmt | true |
+| test.rs:315:5:324:5 | enter fn test_match_with_return_in_scrutinee | test.rs:319:13:319:23 | maybe_digit | false |
+| test.rs:315:5:324:5 | enter fn test_match_with_return_in_scrutinee | test.rs:321:26:321:26 | x | false |
+| test.rs:315:5:324:5 | enter fn test_match_with_return_in_scrutinee | test.rs:322:13:322:24 | ...::None | false |
+| test.rs:328:18:328:18 | a | test.rs:327:10:330:9 | [boolean(true)] match r { ... } | true |
+| test.rs:409:28:414:9 | enter { ... } | test.rs:410:13:412:13 | if b {...} | false |
+| test.rs:409:28:414:9 | enter { ... } | test.rs:411:17:411:41 | ExprStmt | true |
+| test.rs:427:5:435:5 | enter fn const_block_assert | test.rs:431:21:431:48 | [boolean(false)] ! ... | true |
+| test.rs:427:5:435:5 | enter fn const_block_assert | test.rs:431:21:431:48 | [boolean(true)] ! ... | false |
+| test.rs:466:1:480:1 | enter fn labelled_block1 | test.rs:469:9:471:9 | if ... {...} | false |
+| test.rs:466:1:480:1 | enter fn labelled_block1 | test.rs:470:13:470:27 | ExprStmt | true |
+| test.rs:466:1:480:1 | enter fn labelled_block1 | test.rs:473:9:475:9 | if ... {...} | false |
+| test.rs:466:1:480:1 | enter fn labelled_block1 | test.rs:474:13:474:27 | ExprStmt | false |
+| test.rs:469:9:471:9 | if ... {...} | test.rs:473:9:475:9 | if ... {...} | false |
+| test.rs:469:9:471:9 | if ... {...} | test.rs:474:13:474:27 | ExprStmt | true |
+successor
+| test.rs:18:5:24:5 | enter fn next | test.rs:20:13:20:13 | n | true |
+| test.rs:18:5:24:5 | enter fn next | test.rs:22:13:22:13 | 3 | false |
+| test.rs:29:13:29:24 | ExprStmt | test.rs:30:13:32:13 | if ... {...} | false |
+| test.rs:29:13:29:24 | ExprStmt | test.rs:31:17:31:29 | ExprStmt | true |
+| test.rs:30:13:32:13 | if ... {...} | test.rs:33:13:35:13 | if ... {...} | false |
+| test.rs:30:13:32:13 | if ... {...} | test.rs:34:17:34:22 | ExprStmt | true |
+| test.rs:33:13:35:13 | if ... {...} | test.rs:36:13:38:13 | if ... {...} | false |
+| test.rs:33:13:35:13 | if ... {...} | test.rs:37:17:37:25 | ExprStmt | true |
+| test.rs:47:17:51:17 | ExprStmt | test.rs:48:21:48:26 | ExprStmt | true |
+| test.rs:47:17:51:17 | ExprStmt | test.rs:49:27:49:27 | b | false |
+| test.rs:49:27:49:27 | b | test.rs:49:24:51:17 | if b {...} | false |
+| test.rs:49:27:49:27 | b | test.rs:50:21:50:33 | ExprStmt | true |
+| test.rs:62:17:66:17 | ExprStmt | test.rs:63:21:63:29 | ExprStmt | true |
+| test.rs:62:17:66:17 | ExprStmt | test.rs:64:27:64:27 | b | false |
+| test.rs:64:27:64:27 | b | test.rs:64:24:66:17 | if b {...} | false |
+| test.rs:64:27:64:27 | b | test.rs:65:21:65:36 | ExprStmt | true |
+| test.rs:76:17:80:17 | ExprStmt | test.rs:77:21:77:29 | ExprStmt | true |
+| test.rs:76:17:80:17 | ExprStmt | test.rs:78:27:78:27 | b | false |
+| test.rs:78:27:78:27 | b | test.rs:78:24:80:17 | if b {...} | false |
+| test.rs:78:27:78:27 | b | test.rs:79:21:79:36 | ExprStmt | true |
+| test.rs:88:15:88:15 | b | test.rs:88:9:94:9 | while b { ... } | false |
+| test.rs:88:15:88:15 | b | test.rs:89:13:89:14 | ExprStmt | true |
+| test.rs:89:13:89:14 | ExprStmt | test.rs:90:13:92:13 | if ... {...} | false |
+| test.rs:89:13:89:14 | ExprStmt | test.rs:91:17:91:22 | ExprStmt | true |
+| test.rs:99:24:99:24 | x | test.rs:100:13:102:13 | if ... {...} | false |
+| test.rs:99:24:99:24 | x | test.rs:101:17:101:22 | ExprStmt | true |
+| test.rs:108:13:110:13 | ExprStmt | test.rs:108:13:110:13 | if ... {...} | false |
+| test.rs:108:13:110:13 | ExprStmt | test.rs:109:17:109:22 | ExprStmt | true |
+| test.rs:129:5:135:5 | enter fn test_if_else | test.rs:131:13:131:13 | 0 | true |
+| test.rs:129:5:135:5 | enter fn test_if_else | test.rs:133:13:133:13 | n | false |
+| test.rs:152:5:158:5 | enter fn test_nested_if | test.rs:153:24:153:24 | a | true |
+| test.rs:152:5:158:5 | enter fn test_nested_if | test.rs:153:41:153:41 | a | false |
+| test.rs:153:22:153:32 | [boolean(false)] { ... } | test.rs:153:13:153:48 | [boolean(false)] if ... {...} else {...} | false |
+| test.rs:153:22:153:32 | [boolean(true)] { ... } | test.rs:153:13:153:48 | [boolean(true)] if ... {...} else {...} | true |
+| test.rs:153:24:153:24 | a | test.rs:153:22:153:32 | [boolean(false)] { ... } | false |
+| test.rs:153:24:153:24 | a | test.rs:153:22:153:32 | [boolean(true)] { ... } | true |
+| test.rs:153:39:153:48 | [boolean(false)] { ... } | test.rs:153:13:153:48 | [boolean(false)] if ... {...} else {...} | false |
+| test.rs:153:39:153:48 | [boolean(true)] { ... } | test.rs:153:13:153:48 | [boolean(true)] if ... {...} else {...} | true |
+| test.rs:153:41:153:41 | a | test.rs:153:39:153:48 | [boolean(false)] { ... } | false |
+| test.rs:153:41:153:41 | a | test.rs:153:39:153:48 | [boolean(true)] { ... } | true |
+| test.rs:171:5:180:5 | enter fn test_nested_if_block | test.rs:172:12:175:9 | [boolean(false)] { ... } | false |
+| test.rs:171:5:180:5 | enter fn test_nested_if_block | test.rs:172:12:175:9 | [boolean(true)] { ... } | true |
+| test.rs:182:5:192:5 | enter fn test_if_assignment | test.rs:184:12:187:9 | [boolean(false)] { ... } | false |
+| test.rs:182:5:192:5 | enter fn test_if_assignment | test.rs:184:12:187:9 | [boolean(true)] { ... } | true |
+| test.rs:196:13:198:14 | ExprStmt | test.rs:196:13:198:13 | if ... {...} | false |
+| test.rs:196:13:198:14 | ExprStmt | test.rs:197:17:197:29 | ExprStmt | true |
+| test.rs:197:17:197:29 | ExprStmt | test.rs:197:17:197:28 | [boolean(false)] break ... | false |
+| test.rs:197:17:197:29 | ExprStmt | test.rs:197:17:197:28 | [boolean(true)] break ... | true |
+| test.rs:209:13:211:14 | ExprStmt | test.rs:209:13:211:13 | if ... {...} | false |
+| test.rs:209:13:211:14 | ExprStmt | test.rs:210:17:210:36 | ExprStmt | true |
+| test.rs:210:17:210:36 | ExprStmt | test.rs:210:17:210:35 | [boolean(false)] break ''label ... | false |
+| test.rs:210:17:210:36 | ExprStmt | test.rs:210:17:210:35 | [boolean(true)] break ''label ... | true |
+| test.rs:220:5:228:5 | enter fn test_labelled_block | test.rs:222:13:222:30 | [boolean(false)] break ''block ... | false |
+| test.rs:220:5:228:5 | enter fn test_labelled_block | test.rs:222:13:222:30 | [boolean(true)] break ''block ... | true |
+| test.rs:233:5:236:5 | enter fn test_and_operator | test.rs:234:17:234:22 | [boolean(false)] ... && ... | false |
+| test.rs:233:5:236:5 | enter fn test_and_operator | test.rs:234:22:234:22 | b | true |
+| test.rs:234:17:234:22 | [boolean(false)] ... && ... | test.rs:234:17:234:27 | ... && ... | false |
+| test.rs:234:22:234:22 | b | test.rs:234:17:234:22 | [boolean(false)] ... && ... | false |
+| test.rs:234:22:234:22 | b | test.rs:234:17:234:22 | [boolean(true)] ... && ... | true |
+| test.rs:238:5:241:5 | enter fn test_or_operator | test.rs:239:17:239:22 | [boolean(true)] ... \|\| ... | true |
+| test.rs:238:5:241:5 | enter fn test_or_operator | test.rs:239:22:239:22 | b | false |
+| test.rs:239:17:239:22 | [boolean(true)] ... \|\| ... | test.rs:239:17:239:27 | ... \|\| ... | true |
+| test.rs:239:22:239:22 | b | test.rs:239:17:239:22 | [boolean(false)] ... \|\| ... | false |
+| test.rs:239:22:239:22 | b | test.rs:239:17:239:22 | [boolean(true)] ... \|\| ... | true |
+| test.rs:243:5:246:5 | enter fn test_or_operator_2 | test.rs:244:17:244:30 | [boolean(true)] ... \|\| ... | true |
+| test.rs:243:5:246:5 | enter fn test_or_operator_2 | test.rs:244:23:244:23 | b | false |
+| test.rs:244:17:244:30 | [boolean(true)] ... \|\| ... | test.rs:244:17:244:35 | ... \|\| ... | true |
+| test.rs:244:23:244:23 | b | test.rs:244:17:244:30 | [boolean(false)] ... \|\| ... | false |
+| test.rs:244:23:244:23 | b | test.rs:244:17:244:30 | [boolean(true)] ... \|\| ... | true |
+| test.rs:253:5:259:5 | enter fn test_if_and_operator | test.rs:254:12:254:17 | [boolean(false)] ... && ... | false |
+| test.rs:253:5:259:5 | enter fn test_if_and_operator | test.rs:254:17:254:17 | b | true |
+| test.rs:254:12:254:17 | [boolean(false)] ... && ... | test.rs:254:12:254:22 | [boolean(false)] ... && ... | false |
+| test.rs:254:12:254:17 | [boolean(true)] ... && ... | test.rs:254:12:254:22 | [boolean(false)] ... && ... | false |
+| test.rs:254:12:254:17 | [boolean(true)] ... && ... | test.rs:254:12:254:22 | [boolean(true)] ... && ... | true |
+| test.rs:254:17:254:17 | b | test.rs:254:12:254:17 | [boolean(false)] ... && ... | false |
+| test.rs:254:17:254:17 | b | test.rs:254:12:254:17 | [boolean(true)] ... && ... | true |
+| test.rs:261:5:267:5 | enter fn test_if_or_operator | test.rs:262:12:262:17 | [boolean(true)] ... \|\| ... | true |
+| test.rs:261:5:267:5 | enter fn test_if_or_operator | test.rs:262:17:262:17 | b | false |
+| test.rs:262:12:262:17 | [boolean(false)] ... \|\| ... | test.rs:262:12:262:22 | [boolean(false)] ... \|\| ... | false |
+| test.rs:262:12:262:17 | [boolean(false)] ... \|\| ... | test.rs:262:12:262:22 | [boolean(true)] ... \|\| ... | true |
+| test.rs:262:12:262:17 | [boolean(true)] ... \|\| ... | test.rs:262:12:262:22 | [boolean(true)] ... \|\| ... | true |
+| test.rs:262:17:262:17 | b | test.rs:262:12:262:17 | [boolean(false)] ... \|\| ... | false |
+| test.rs:262:17:262:17 | b | test.rs:262:12:262:17 | [boolean(true)] ... \|\| ... | true |
+| test.rs:269:5:275:5 | enter fn test_if_not_operator | test.rs:270:12:270:13 | [boolean(false)] ! ... | true |
+| test.rs:269:5:275:5 | enter fn test_if_not_operator | test.rs:270:12:270:13 | [boolean(true)] ! ... | false |
+| test.rs:277:5:279:5 | enter fn test_and_return | test.rs:278:9:278:19 | ... && ... | false |
+| test.rs:277:5:279:5 | enter fn test_and_return | test.rs:278:14:278:19 | return | true |
+| test.rs:281:5:286:5 | enter fn test_and_true | test.rs:282:13:282:21 | [boolean(false)] ... && ... | false |
+| test.rs:281:5:286:5 | enter fn test_and_true | test.rs:282:18:282:21 | true | true |
+| test.rs:309:26:309:26 | x | test.rs:309:42:309:42 | x | true |
+| test.rs:309:26:309:26 | x | test.rs:310:13:310:27 | ...::Some(...) | false |
+| test.rs:315:5:324:5 | enter fn test_match_with_return_in_scrutinee | test.rs:317:13:317:21 | ExprStmt | true |
+| test.rs:315:5:324:5 | enter fn test_match_with_return_in_scrutinee | test.rs:319:13:319:23 | maybe_digit | false |
+| test.rs:327:10:330:9 | [boolean(false)] match r { ... } | test.rs:327:9:330:18 | ... && ... | false |
+| test.rs:328:18:328:18 | a | test.rs:327:10:330:9 | [boolean(false)] match r { ... } | false |
+| test.rs:328:18:328:18 | a | test.rs:327:10:330:9 | [boolean(true)] match r { ... } | true |
+| test.rs:329:13:329:13 | _ | test.rs:327:10:330:9 | [boolean(false)] match r { ... } | false |
+| test.rs:409:28:414:9 | enter { ... } | test.rs:410:13:412:13 | if b {...} | false |
+| test.rs:409:28:414:9 | enter { ... } | test.rs:411:17:411:41 | ExprStmt | true |
+| test.rs:427:5:435:5 | enter fn const_block_assert | test.rs:431:21:431:48 | [boolean(false)] ! ... | true |
+| test.rs:427:5:435:5 | enter fn const_block_assert | test.rs:431:21:431:48 | [boolean(true)] ! ... | false |
+| test.rs:431:21:431:48 | [boolean(false)] ! ... | test.rs:431:21:431:48 | if ... {...} | false |
+| test.rs:466:1:480:1 | enter fn labelled_block1 | test.rs:469:9:471:9 | if ... {...} | false |
+| test.rs:466:1:480:1 | enter fn labelled_block1 | test.rs:470:13:470:27 | ExprStmt | true |
+| test.rs:469:9:471:9 | if ... {...} | test.rs:473:9:475:9 | if ... {...} | false |
+| test.rs:469:9:471:9 | if ... {...} | test.rs:474:13:474:27 | ExprStmt | true |
+joinBlockPredecessor
+| test.rs:19:9:23:9 | if ... {...} else {...} | test.rs:20:13:20:13 | n | 1 |
+| test.rs:19:9:23:9 | if ... {...} else {...} | test.rs:22:13:22:13 | 3 | 0 |
+| test.rs:26:5:42:5 | exit fn test_break_and_continue (normal) | test.rs:31:17:31:29 | ExprStmt | 0 |
+| test.rs:26:5:42:5 | exit fn test_break_and_continue (normal) | test.rs:34:17:34:22 | ExprStmt | 1 |
+| test.rs:29:13:29:24 | ExprStmt | test.rs:26:5:42:5 | enter fn test_break_and_continue | 2 |
+| test.rs:29:13:29:24 | ExprStmt | test.rs:36:13:38:13 | if ... {...} | 1 |
+| test.rs:29:13:29:24 | ExprStmt | test.rs:37:17:37:25 | ExprStmt | 0 |
+| test.rs:46:13:53:13 | 'inner: loop { ... } | test.rs:48:21:48:26 | ExprStmt | 1 |
+| test.rs:46:13:53:13 | 'inner: loop { ... } | test.rs:49:24:51:17 | if b {...} | 0 |
+| test.rs:47:17:51:17 | ExprStmt | test.rs:44:5:56:5 | enter fn test_break_with_labels | 1 |
+| test.rs:47:17:51:17 | ExprStmt | test.rs:46:13:53:13 | 'inner: loop { ... } | 0 |
+| test.rs:60:13:60:14 | ExprStmt | test.rs:58:5:70:5 | enter fn test_continue_with_labels | 1 |
+| test.rs:60:13:60:14 | ExprStmt | test.rs:65:21:65:36 | ExprStmt | 0 |
+| test.rs:62:17:66:17 | ExprStmt | test.rs:60:13:60:14 | ExprStmt | 0 |
+| test.rs:62:17:66:17 | ExprStmt | test.rs:63:21:63:29 | ExprStmt | 2 |
+| test.rs:62:17:66:17 | ExprStmt | test.rs:64:24:66:17 | if b {...} | 1 |
+| test.rs:76:17:80:17 | ExprStmt | test.rs:72:5:84:5 | enter fn test_loop_label_shadowing | 3 |
+| test.rs:76:17:80:17 | ExprStmt | test.rs:77:21:77:29 | ExprStmt | 2 |
+| test.rs:76:17:80:17 | ExprStmt | test.rs:78:24:80:17 | if b {...} | 1 |
+| test.rs:76:17:80:17 | ExprStmt | test.rs:79:21:79:36 | ExprStmt | 0 |
+| test.rs:88:9:94:9 | while b { ... } | test.rs:88:15:88:15 | b | 0 |
+| test.rs:88:9:94:9 | while b { ... } | test.rs:91:17:91:22 | ExprStmt | 1 |
+| test.rs:88:15:88:15 | b | test.rs:86:5:95:5 | enter fn test_while | 1 |
+| test.rs:88:15:88:15 | b | test.rs:90:13:92:13 | if ... {...} | 0 |
+| test.rs:99:9:103:9 | while ... { ... } | test.rs:99:15:99:39 | let ... = ... | 0 |
+| test.rs:99:9:103:9 | while ... { ... } | test.rs:101:17:101:22 | ExprStmt | 1 |
+| test.rs:99:15:99:39 | let ... = ... | test.rs:97:5:104:5 | enter fn test_while_let | 1 |
+| test.rs:99:15:99:39 | let ... = ... | test.rs:100:13:102:13 | if ... {...} | 0 |
+| test.rs:107:9:112:9 | for ... in ... { ... } | test.rs:107:13:107:13 | i | 1 |
+| test.rs:107:9:112:9 | for ... in ... { ... } | test.rs:109:17:109:22 | ExprStmt | 0 |
+| test.rs:107:13:107:13 | i | test.rs:106:5:113:5 | enter fn test_for | 1 |
+| test.rs:107:13:107:13 | i | test.rs:108:13:110:13 | if ... {...} | 0 |
+| test.rs:130:9:134:9 | if ... {...} else {...} | test.rs:131:13:131:13 | 0 | 1 |
+| test.rs:130:9:134:9 | if ... {...} else {...} | test.rs:133:13:133:13 | n | 0 |
+| test.rs:138:9:142:9 | if ... {...} else {...} | test.rs:138:21:138:21 | n | 0 |
+| test.rs:138:9:142:9 | if ... {...} else {...} | test.rs:141:13:141:13 | 0 | 1 |
+| test.rs:145:5:150:5 | exit fn test_if_let (normal) | test.rs:146:9:148:9 | if ... {...} | 1 |
+| test.rs:145:5:150:5 | exit fn test_if_let (normal) | test.rs:146:21:146:21 | n | 0 |
+| test.rs:153:9:157:9 | if ... {...} else {...} | test.rs:153:13:153:48 | [boolean(false)] if ... {...} else {...} | 0 |
+| test.rs:153:9:157:9 | if ... {...} else {...} | test.rs:153:13:153:48 | [boolean(true)] if ... {...} else {...} | 1 |
+| test.rs:153:13:153:48 | [boolean(false)] if ... {...} else {...} | test.rs:153:22:153:32 | [boolean(false)] { ... } | 1 |
+| test.rs:153:13:153:48 | [boolean(false)] if ... {...} else {...} | test.rs:153:39:153:48 | [boolean(false)] { ... } | 0 |
+| test.rs:153:13:153:48 | [boolean(true)] if ... {...} else {...} | test.rs:153:22:153:32 | [boolean(true)] { ... } | 1 |
+| test.rs:153:13:153:48 | [boolean(true)] if ... {...} else {...} | test.rs:153:39:153:48 | [boolean(true)] { ... } | 0 |
+| test.rs:161:9:168:9 | if ... {...} else {...} | test.rs:162:18:162:21 | true | 0 |
+| test.rs:161:9:168:9 | if ... {...} else {...} | test.rs:163:13:163:13 | _ | 1 |
+| test.rs:172:9:179:9 | if ... {...} else {...} | test.rs:172:12:175:9 | [boolean(false)] { ... } | 0 |
+| test.rs:172:9:179:9 | if ... {...} else {...} | test.rs:172:12:175:9 | [boolean(true)] { ... } | 1 |
+| test.rs:184:9:191:9 | if ... {...} else {...} | test.rs:184:12:187:9 | [boolean(false)] { ... } | 0 |
+| test.rs:184:9:191:9 | if ... {...} else {...} | test.rs:184:12:187:9 | [boolean(true)] { ... } | 1 |
+| test.rs:195:9:204:9 | if ... {...} else {...} | test.rs:197:17:197:28 | [boolean(false)] break ... | 0 |
+| test.rs:195:9:204:9 | if ... {...} else {...} | test.rs:197:17:197:28 | [boolean(true)] break ... | 1 |
+| test.rs:196:13:198:14 | ExprStmt | test.rs:194:5:205:5 | enter fn test_if_loop1 | 1 |
+| test.rs:196:13:198:14 | ExprStmt | test.rs:196:13:198:13 | if ... {...} | 0 |
+| test.rs:208:9:217:9 | if ... {...} else {...} | test.rs:210:17:210:35 | [boolean(false)] break ''label ... | 0 |
+| test.rs:208:9:217:9 | if ... {...} else {...} | test.rs:210:17:210:35 | [boolean(true)] break ''label ... | 1 |
+| test.rs:209:13:211:14 | ExprStmt | test.rs:207:5:218:5 | enter fn test_if_loop2 | 1 |
+| test.rs:209:13:211:14 | ExprStmt | test.rs:209:13:211:13 | if ... {...} | 0 |
+| test.rs:221:9:227:9 | if ... {...} else {...} | test.rs:222:13:222:30 | [boolean(false)] break ''block ... | 0 |
+| test.rs:221:9:227:9 | if ... {...} else {...} | test.rs:222:13:222:30 | [boolean(true)] break ''block ... | 1 |
+| test.rs:234:17:234:22 | [boolean(false)] ... && ... | test.rs:233:5:236:5 | enter fn test_and_operator | 1 |
+| test.rs:234:17:234:22 | [boolean(false)] ... && ... | test.rs:234:22:234:22 | b | 0 |
+| test.rs:234:17:234:27 | ... && ... | test.rs:234:17:234:22 | [boolean(false)] ... && ... | 0 |
+| test.rs:234:17:234:27 | ... && ... | test.rs:234:17:234:22 | [boolean(true)] ... && ... | 1 |
+| test.rs:239:17:239:22 | [boolean(true)] ... \|\| ... | test.rs:238:5:241:5 | enter fn test_or_operator | 1 |
+| test.rs:239:17:239:22 | [boolean(true)] ... \|\| ... | test.rs:239:22:239:22 | b | 0 |
+| test.rs:239:17:239:27 | ... \|\| ... | test.rs:239:17:239:22 | [boolean(false)] ... \|\| ... | 0 |
+| test.rs:239:17:239:27 | ... \|\| ... | test.rs:239:17:239:22 | [boolean(true)] ... \|\| ... | 1 |
+| test.rs:244:17:244:30 | [boolean(true)] ... \|\| ... | test.rs:243:5:246:5 | enter fn test_or_operator_2 | 1 |
+| test.rs:244:17:244:30 | [boolean(true)] ... \|\| ... | test.rs:244:23:244:23 | b | 0 |
+| test.rs:244:17:244:35 | ... \|\| ... | test.rs:244:17:244:30 | [boolean(false)] ... \|\| ... | 0 |
+| test.rs:244:17:244:35 | ... \|\| ... | test.rs:244:17:244:30 | [boolean(true)] ... \|\| ... | 1 |
+| test.rs:254:9:258:9 | if ... {...} else {...} | test.rs:254:12:254:22 | [boolean(false)] ... && ... | 0 |
+| test.rs:254:9:258:9 | if ... {...} else {...} | test.rs:254:12:254:22 | [boolean(true)] ... && ... | 1 |
+| test.rs:254:12:254:17 | [boolean(false)] ... && ... | test.rs:253:5:259:5 | enter fn test_if_and_operator | 1 |
+| test.rs:254:12:254:17 | [boolean(false)] ... && ... | test.rs:254:17:254:17 | b | 0 |
+| test.rs:254:12:254:22 | [boolean(false)] ... && ... | test.rs:254:12:254:17 | [boolean(false)] ... && ... | 0 |
+| test.rs:254:12:254:22 | [boolean(false)] ... && ... | test.rs:254:12:254:17 | [boolean(true)] ... && ... | 1 |
+| test.rs:262:9:266:9 | if ... {...} else {...} | test.rs:262:12:262:22 | [boolean(false)] ... \|\| ... | 0 |
+| test.rs:262:9:266:9 | if ... {...} else {...} | test.rs:262:12:262:22 | [boolean(true)] ... \|\| ... | 1 |
+| test.rs:262:12:262:17 | [boolean(true)] ... \|\| ... | test.rs:261:5:267:5 | enter fn test_if_or_operator | 1 |
+| test.rs:262:12:262:17 | [boolean(true)] ... \|\| ... | test.rs:262:17:262:17 | b | 0 |
+| test.rs:262:12:262:22 | [boolean(true)] ... \|\| ... | test.rs:262:12:262:17 | [boolean(false)] ... \|\| ... | 0 |
+| test.rs:262:12:262:22 | [boolean(true)] ... \|\| ... | test.rs:262:12:262:17 | [boolean(true)] ... \|\| ... | 1 |
+| test.rs:270:9:274:9 | if ... {...} else {...} | test.rs:270:12:270:13 | [boolean(false)] ! ... | 0 |
+| test.rs:270:9:274:9 | if ... {...} else {...} | test.rs:270:12:270:13 | [boolean(true)] ! ... | 1 |
+| test.rs:277:5:279:5 | exit fn test_and_return (normal) | test.rs:278:9:278:19 | ... && ... | 1 |
+| test.rs:277:5:279:5 | exit fn test_and_return (normal) | test.rs:278:14:278:19 | return | 0 |
+| test.rs:281:5:286:5 | exit fn test_and_true (normal) | test.rs:282:13:282:21 | [boolean(false)] ... && ... | 1 |
+| test.rs:281:5:286:5 | exit fn test_and_true (normal) | test.rs:282:18:282:21 | true | 0 |
+| test.rs:292:5:294:5 | exit fn test_question_mark_operator_1 (normal) | test.rs:292:5:294:5 | enter fn test_question_mark_operator_1 | 1 |
+| test.rs:292:5:294:5 | exit fn test_question_mark_operator_1 (normal) | test.rs:293:32:293:32 | 4 | 0 |
+| test.rs:296:5:301:5 | exit fn test_question_mark_operator_2 (normal) | test.rs:296:5:301:5 | enter fn test_question_mark_operator_2 | 1 |
+| test.rs:296:5:301:5 | exit fn test_question_mark_operator_2 (normal) | test.rs:297:9:300:9 | match ... { ... } | 0 |
+| test.rs:297:9:300:9 | match ... { ... } | test.rs:298:21:298:24 | Some | 0 |
+| test.rs:297:9:300:9 | match ... { ... } | test.rs:299:13:299:17 | false | 1 |
+| test.rs:308:9:312:9 | match maybe_digit { ... } | test.rs:309:42:309:42 | x | 0 |
+| test.rs:308:9:312:9 | match maybe_digit { ... } | test.rs:310:26:310:26 | x | 1 |
+| test.rs:308:9:312:9 | match maybe_digit { ... } | test.rs:311:13:311:24 | ...::None | 2 |
+| test.rs:310:13:310:27 | ...::Some(...) | test.rs:307:5:313:5 | enter fn test_match | 1 |
+| test.rs:310:13:310:27 | ...::Some(...) | test.rs:309:26:309:26 | x | 0 |
+| test.rs:315:5:324:5 | exit fn test_match_with_return_in_scrutinee (normal) | test.rs:316:9:323:9 | match ... { ... } | 1 |
+| test.rs:315:5:324:5 | exit fn test_match_with_return_in_scrutinee (normal) | test.rs:317:13:317:21 | ExprStmt | 0 |
+| test.rs:316:9:323:9 | match ... { ... } | test.rs:321:26:321:26 | x | 0 |
+| test.rs:316:9:323:9 | match ... { ... } | test.rs:322:13:322:24 | ...::None | 1 |
+| test.rs:327:9:330:18 | ... && ... | test.rs:327:10:330:9 | [boolean(false)] match r { ... } | 0 |
+| test.rs:327:9:330:18 | ... && ... | test.rs:327:10:330:9 | [boolean(true)] match r { ... } | 1 |
+| test.rs:327:10:330:9 | [boolean(false)] match r { ... } | test.rs:328:18:328:18 | a | 0 |
+| test.rs:327:10:330:9 | [boolean(false)] match r { ... } | test.rs:329:13:329:13 | _ | 1 |
+| test.rs:334:9:337:9 | match r { ... } | test.rs:335:16:335:20 | value | 0 |
+| test.rs:334:9:337:9 | match r { ... } | test.rs:336:13:336:22 | Err(...) | 1 |
+| test.rs:348:5:354:5 | exit fn test_let_with_return (normal) | test.rs:350:18:350:20 | ret | 0 |
+| test.rs:348:5:354:5 | exit fn test_let_with_return (normal) | test.rs:351:13:351:16 | None | 1 |
+| test.rs:373:9:378:9 | match 42 { ... } | test.rs:374:20:374:20 | 1 | 0 |
+| test.rs:373:9:378:9 | match 42 { ... } | test.rs:375:21:375:21 | 2 | 1 |
+| test.rs:373:9:378:9 | match 42 { ... } | test.rs:376:20:376:20 | 3 | 2 |
+| test.rs:373:9:378:9 | match 42 { ... } | test.rs:377:13:377:13 | _ | 3 |
+| test.rs:375:13:375:16 | RangePat | test.rs:372:5:379:5 | enter fn range_pattern | 1 |
+| test.rs:375:13:375:16 | RangePat | test.rs:374:15:374:15 | 0 | 0 |
+| test.rs:376:13:376:15 | RangePat | test.rs:375:13:375:13 | 1 | 1 |
+| test.rs:376:13:376:15 | RangePat | test.rs:375:13:375:16 | RangePat | 2 |
+| test.rs:376:13:376:15 | RangePat | test.rs:375:16:375:16 | 2 | 0 |
+| test.rs:377:13:377:13 | _ | test.rs:376:13:376:13 | 5 | 0 |
+| test.rs:377:13:377:13 | _ | test.rs:376:13:376:15 | RangePat | 1 |
+| test.rs:385:13:385:14 | TupleExpr | test.rs:383:5:388:5 | enter fn test_infinite_loop | 1 |
+| test.rs:385:13:385:14 | TupleExpr | test.rs:385:13:385:14 | TupleExpr | 0 |
+| test.rs:409:28:414:9 | exit { ... } (normal) | test.rs:410:13:412:13 | if b {...} | 1 |
+| test.rs:409:28:414:9 | exit { ... } (normal) | test.rs:411:17:411:41 | ExprStmt | 0 |
+| test.rs:431:21:431:48 | if ... {...} | test.rs:431:21:431:48 | [boolean(false)] ! ... | 0 |
+| test.rs:431:21:431:48 | if ... {...} | test.rs:431:21:431:48 | [boolean(true)] ! ... | 1 |
+| test.rs:467:18:478:5 | 'block: { ... } | test.rs:470:13:470:27 | ExprStmt | 0 |
+| test.rs:467:18:478:5 | 'block: { ... } | test.rs:473:9:475:9 | if ... {...} | 2 |
+| test.rs:467:18:478:5 | 'block: { ... } | test.rs:474:13:474:27 | ExprStmt | 1 |
+| test.rs:483:18:489:5 | 'block: { ... } | test.rs:485:18:485:18 | y | 1 |
+| test.rs:483:18:489:5 | 'block: { ... } | test.rs:486:13:486:27 | ExprStmt | 0 |
diff --git a/rust/ql/test/library-tests/controlflow/BasicBlocks.ql b/rust/ql/test/library-tests/controlflow/BasicBlocks.ql
new file mode 100644
index 000000000000..07045268d834
--- /dev/null
+++ b/rust/ql/test/library-tests/controlflow/BasicBlocks.ql
@@ -0,0 +1,23 @@
+import rust
+import codeql.rust.controlflow.ControlFlowGraph
+import codeql.rust.controlflow.BasicBlocks
+
+query predicate dominates(BasicBlock bb1, BasicBlock bb2) { bb1.dominates(bb2) }
+
+query predicate postDominance(BasicBlock bb1, BasicBlock bb2) { bb1.postDominates(bb2) }
+
+query predicate immediateDominator(BasicBlock bb1, BasicBlock bb2) {
+  bb1.getImmediateDominator() = bb2
+}
+
+query predicate controls(ConditionBlock bb1, BasicBlock bb2, SuccessorType t) {
+  bb1.controls(bb2, t)
+}
+
+query predicate successor(ConditionBlock bb1, BasicBlock bb2, SuccessorType t) {
+  bb1.getASuccessor(t) = bb2
+}
+
+query predicate joinBlockPredecessor(JoinBlock bb1, BasicBlock bb2, int i) {
+  bb1.getJoinBlockPredecessor(i) = bb2
+}

From c051eecfb43ff07b2cc89fd13b83cc8ab9fe959b Mon Sep 17 00:00:00 2001
From: Simon Friis Vindum <simonfv@gmail.com>
Date: Wed, 15 Jan 2025 14:59:49 +0100
Subject: [PATCH 02/12] Shared: Add shared basic block library

---
 .../code/csharp/controlflow/BasicBlocks.qll   | 270 ++---------
 .../internal/ControlFlowGraphImpl.qll         |   4 +
 .../codeql/ruby/controlflow/BasicBlocks.qll   | 257 ++--------
 .../internal/ControlFlowGraphImpl.qll         |   8 +
 .../codeql/rust/controlflow/BasicBlocks.qll   | 265 +---------
 .../rust/controlflow/ControlFlowGraph.qll     |  31 +-
 .../internal/ControlFlowGraphImpl.qll         |  13 +
 .../codeql/rust/dataflow/internal/SsaImpl.qll |   2 +-
 .../controlflow/BasicBlocks.expected          | 456 ++++++++++++++++--
 .../library-tests/controlflow/BasicBlocks.ql  |   6 +-
 .../codeql/controlflow/BasicBlock.qll         | 242 ++++++++++
 shared/controlflow/codeql/controlflow/Cfg.qll | 271 ++++++++++-
 .../codeql/swift/controlflow/BasicBlocks.qll  | 237 ++-------
 .../swift/controlflow/ControlFlowGraph.qll    |  34 +-
 .../internal/ControlFlowGraphImplSpecific.qll |  27 ++
 swift/ql/lib/codeql/swift/dataflow/Ssa.qll    |   2 +-
 16 files changed, 1115 insertions(+), 1010 deletions(-)
 create mode 100644 shared/controlflow/codeql/controlflow/BasicBlock.qll

diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/BasicBlocks.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/BasicBlocks.qll
index 4392a42f9acd..c3581e8f0c86 100644
--- a/csharp/ql/lib/semmle/code/csharp/controlflow/BasicBlocks.qll
+++ b/csharp/ql/lib/semmle/code/csharp/controlflow/BasicBlocks.qll
@@ -4,26 +4,20 @@
 
 import csharp
 private import ControlFlow::SuccessorTypes
+private import semmle.code.csharp.controlflow.internal.ControlFlowGraphImpl as CfgImpl
+private import CfgImpl::BasicBlocks as BasicBlocksImpl
 
 /**
  * A basic block, that is, a maximal straight-line sequence of control flow nodes
  * without branches or joins.
  */
-class BasicBlock extends TBasicBlockStart {
-  /** Gets an immediate successor of this basic block, if any. */
-  BasicBlock getASuccessor() { result.getFirstNode() = this.getLastNode().getASuccessor() }
-
+final class BasicBlock extends BasicBlocksImpl::BasicBlock {
   /** Gets an immediate successor of this basic block of a given type, if any. */
-  BasicBlock getASuccessorByType(ControlFlow::SuccessorType t) {
-    result.getFirstNode() = this.getLastNode().getASuccessorByType(t)
-  }
-
-  /** Gets an immediate predecessor of this basic block, if any. */
-  BasicBlock getAPredecessor() { result.getASuccessor() = this }
+  BasicBlock getASuccessorByType(ControlFlow::SuccessorType t) { result = this.getASuccessor(t) }
 
   /** Gets an immediate predecessor of this basic block of a given type, if any. */
   BasicBlock getAPredecessorByType(ControlFlow::SuccessorType t) {
-    result.getASuccessorByType(t) = this
+    result = this.getAPredecessor(t)
   }
 
   /**
@@ -65,23 +59,20 @@ class BasicBlock extends TBasicBlockStart {
   }
 
   /** Gets the control flow node at a specific (zero-indexed) position in this basic block. */
-  ControlFlow::Node getNode(int pos) { bbIndex(this.getFirstNode(), result, pos) }
+  ControlFlow::Node getNode(int pos) { result = super.getNode(pos) }
 
   /** Gets a control flow node in this basic block. */
-  ControlFlow::Node getANode() { result = this.getNode(_) }
+  ControlFlow::Node getANode() { result = super.getANode() }
 
   /** Gets the first control flow node in this basic block. */
-  ControlFlow::Node getFirstNode() { this = TBasicBlockStart(result) }
+  ControlFlow::Node getFirstNode() { result = super.getFirstNode() }
 
   /** Gets the last control flow node in this basic block. */
-  ControlFlow::Node getLastNode() { result = this.getNode(this.length() - 1) }
+  ControlFlow::Node getLastNode() { result = super.getLastNode() }
 
   /** Gets the callable that this basic block belongs to. */
   final Callable getCallable() { result = this.getFirstNode().getEnclosingCallable() }
 
-  /** Gets the length of this basic block. */
-  int length() { result = strictcount(this.getANode()) }
-
   /**
    * Holds if this basic block immediately dominates basic block `bb`.
    *
@@ -103,7 +94,7 @@ class BasicBlock extends TBasicBlockStart {
    * basic block on line 4 (all paths from the entry point of `M`
    * to `return s.Length;` must go through the null check).
    */
-  predicate immediatelyDominates(BasicBlock bb) { bbIDominates(this, bb) }
+  predicate immediatelyDominates(BasicBlock bb) { super.immediatelyDominates(bb) }
 
   /**
    * Holds if this basic block strictly dominates basic block `bb`.
@@ -126,7 +117,7 @@ class BasicBlock extends TBasicBlockStart {
    * basic block on line 4 (all paths from the entry point of `M`
    * to `return s.Length;` must go through the null check).
    */
-  predicate strictlyDominates(BasicBlock bb) { bbIDominates+(this, bb) }
+  predicate strictlyDominates(BasicBlock bb) { super.strictlyDominates(bb) }
 
   /**
    * Holds if this basic block dominates basic block `bb`.
@@ -178,15 +169,7 @@ class BasicBlock extends TBasicBlockStart {
    * `Console.Write(x);`. Also, the basic block starting on line 2
    * does not dominate the basic block on line 6.
    */
-  predicate inDominanceFrontier(BasicBlock df) {
-    this.dominatesPredecessor(df) and
-    not this.strictlyDominates(df)
-  }
-
-  /**
-   * Holds if this basic block dominates a predecessor of `df`.
-   */
-  private predicate dominatesPredecessor(BasicBlock df) { this.dominates(df.getAPredecessor()) }
+  predicate inDominanceFrontier(BasicBlock df) { super.inDominanceFrontier(df) }
 
   /**
    * Gets the basic block that immediately dominates this basic block, if any.
@@ -208,7 +191,7 @@ class BasicBlock extends TBasicBlockStart {
    * the basic block online 4 (all paths from the entry point of `M`
    * to `return s.Length;` must go through the null check.
    */
-  BasicBlock getImmediateDominator() { bbIDominates(result, this) }
+  BasicBlock getImmediateDominator() { result = super.getImmediateDominator() }
 
   /**
    * Holds if this basic block strictly post-dominates basic block `bb`.
@@ -234,7 +217,7 @@ class BasicBlock extends TBasicBlockStart {
    * line 3 (all paths to the exit point of `M` from `return s.Length;`
    * must go through the `WriteLine` call).
    */
-  predicate strictlyPostDominates(BasicBlock bb) { bbIPostDominates+(this, bb) }
+  predicate strictlyPostDominates(BasicBlock bb) { super.strictlyPostDominates(bb) }
 
   /**
    * Holds if this basic block post-dominates basic block `bb`.
@@ -262,10 +245,7 @@ class BasicBlock extends TBasicBlockStart {
    * This predicate is *reflexive*, so for example `Console.WriteLine("M");`
    * post-dominates itself.
    */
-  predicate postDominates(BasicBlock bb) {
-    this.strictlyPostDominates(bb) or
-    this = bb
-  }
+  predicate postDominates(BasicBlock bb) { super.postDominates(bb) }
 
   /**
    * Holds if this basic block is in a loop in the control flow graph. This
@@ -274,230 +254,44 @@ class BasicBlock extends TBasicBlockStart {
    * necessary back edges are unreachable.
    */
   predicate inLoop() { this.getASuccessor+() = this }
-
-  /** Gets a textual representation of this basic block. */
-  string toString() { result = this.getFirstNode().toString() }
-
-  /** Gets the location of this basic block. */
-  Location getLocation() { result = this.getFirstNode().getLocation() }
-}
-
-/**
- * Internal implementation details.
- */
-cached
-private module Internal {
-  /** Internal representation of basic blocks. */
-  cached
-  newtype TBasicBlock = TBasicBlockStart(ControlFlow::Node cfn) { startsBB(cfn) }
-
-  /** Holds if `cfn` starts a new basic block. */
-  private predicate startsBB(ControlFlow::Node cfn) {
-    not exists(cfn.getAPredecessor()) and exists(cfn.getASuccessor())
-    or
-    cfn.isJoin()
-    or
-    cfn.getAPredecessor().isBranch()
-    or
-    /*
-     * In cases such as
-     * ```csharp
-     * if (b)
-     *     M()
-     * ```
-     * where the `false` edge out of `b` is not present (because we can prove it
-     * impossible), we still split up the basic block in two, in order to generate
-     * a `ConditionBlock` which can be used by the guards library.
-     */
-
-    exists(cfn.getAPredecessorByType(any(ControlFlow::SuccessorTypes::ConditionalSuccessor s)))
-  }
-
-  /**
-   * Holds if `succ` is a control flow successor of `pred` within
-   * the same basic block.
-   */
-  private predicate intraBBSucc(ControlFlow::Node pred, ControlFlow::Node succ) {
-    succ = pred.getASuccessor() and
-    not startsBB(succ)
-  }
-
-  /**
-   * Holds if `cfn` is the `i`th node in basic block `bb`.
-   *
-   * In other words, `i` is the shortest distance from a node `bb`
-   * that starts a basic block to `cfn` along the `intraBBSucc` relation.
-   */
-  cached
-  predicate bbIndex(ControlFlow::Node bbStart, ControlFlow::Node cfn, int i) =
-    shortestDistances(startsBB/1, intraBBSucc/2)(bbStart, cfn, i)
-
-  /**
-   * Holds if the first node of basic block `succ` is a control flow
-   * successor of the last node of basic block `pred`.
-   */
-  private predicate succBB(BasicBlock pred, BasicBlock succ) { succ = pred.getASuccessor() }
-
-  /** Holds if `dom` is an immediate dominator of `bb`. */
-  cached
-  predicate bbIDominates(BasicBlock dom, BasicBlock bb) =
-    idominance(entryBB/1, succBB/2)(_, dom, bb)
-
-  /** Holds if `pred` is a basic block predecessor of `succ`. */
-  private predicate predBB(BasicBlock succ, BasicBlock pred) { succBB(pred, succ) }
-
-  /** Holds if `bb` is an exit basic block that represents normal exit. */
-  private predicate normalExitBB(BasicBlock bb) {
-    bb.getANode().(ControlFlow::Nodes::AnnotatedExitNode).isNormal()
-  }
-
-  /** Holds if `dom` is an immediate post-dominator of `bb`. */
-  cached
-  predicate bbIPostDominates(BasicBlock dom, BasicBlock bb) =
-    idominance(normalExitBB/1, predBB/2)(_, dom, bb)
 }
 
-private import Internal
-
 /**
  * An entry basic block, that is, a basic block whose first node is
- * the entry node of a callable.
+ * an entry node.
  */
-class EntryBasicBlock extends BasicBlock {
-  EntryBasicBlock() { entryBB(this) }
-}
-
-/** Holds if `bb` is an entry basic block. */
-private predicate entryBB(BasicBlock bb) {
-  bb.getFirstNode() instanceof ControlFlow::Nodes::EntryNode
-}
+final class EntryBasicBlock extends BasicBlock, BasicBlocksImpl::EntryBasicBlock { }
 
 /**
- * An annotated exit basic block, that is, a basic block that contains
- * an annotated exit node.
+ * An annotated exit basic block, that is, a basic block that contains an
+ * annotated exit node.
  */
-class AnnotatedExitBasicBlock extends BasicBlock {
-  private boolean isNormal;
-
-  AnnotatedExitBasicBlock() {
-    this.getANode() =
-      any(ControlFlow::Nodes::AnnotatedExitNode n |
-        if n.isNormal() then isNormal = true else isNormal = false
-      )
-  }
-
-  /** Holds if this block represents a normal exit. */
-  predicate isNormal() { isNormal = true }
-}
+final class AnnotatedExitBasicBlock extends BasicBlock, BasicBlocksImpl::AnnotatedExitBasicBlock { }
 
 /**
  * An exit basic block, that is, a basic block whose last node is
- * the exit node of a callable.
+ * an exit node.
  */
-class ExitBasicBlock extends BasicBlock {
-  ExitBasicBlock() { this.getLastNode() instanceof ControlFlow::Nodes::ExitNode }
-}
-
-private module JoinBlockPredecessors {
-  private import ControlFlow::Nodes
-  private import semmle.code.csharp.controlflow.internal.ControlFlowGraphImpl as Impl
-
-  int getId(JoinBlockPredecessor jbp) {
-    exists(Impl::AstNode n | result = n.getId() |
-      n = jbp.getFirstNode().getAstNode()
-      or
-      n = jbp.(EntryBasicBlock).getCallable()
-    )
-  }
-
-  string getSplitString(JoinBlockPredecessor jbp) {
-    result = jbp.getFirstNode().(ElementNode).getSplitsString()
-    or
-    not exists(jbp.getFirstNode().(ElementNode).getSplitsString()) and
-    result = ""
-  }
-}
+final class ExitBasicBlock extends BasicBlock, BasicBlocksImpl::ExitBasicBlock { }
 
 /** A basic block with more than one predecessor. */
-class JoinBlock extends BasicBlock {
-  JoinBlock() { this.getFirstNode().isJoin() }
-
-  /**
-   * Gets the `i`th predecessor of this join block, with respect to some
-   * arbitrary order.
-   */
-  cached
-  JoinBlockPredecessor getJoinBlockPredecessor(int i) {
-    result =
-      rank[i + 1](JoinBlockPredecessor jbp |
-        jbp = this.getAPredecessor()
-      |
-        jbp order by JoinBlockPredecessors::getId(jbp), JoinBlockPredecessors::getSplitString(jbp)
-      )
-  }
+final class JoinBlock extends BasicBlock, BasicBlocksImpl::JoinBasicBlock {
+  JoinBlockPredecessor getJoinBlockPredecessor(int i) { result = super.getJoinBlockPredecessor(i) }
 }
 
 /** A basic block that is an immediate predecessor of a join block. */
-class JoinBlockPredecessor extends BasicBlock {
-  JoinBlockPredecessor() { this.getASuccessor() instanceof JoinBlock }
-}
-
-/** A basic block that terminates in a condition, splitting the subsequent control flow. */
-class ConditionBlock extends BasicBlock {
-  ConditionBlock() { this.getLastNode().isCondition() }
+final class JoinBlockPredecessor extends BasicBlock, BasicBlocksImpl::JoinPredecessorBasicBlock { }
 
-  /**
-   * Holds if basic block `succ` is immediately controlled by this basic
-   * block with conditional value `s`. That is, `succ` is an immediate
-   * successor of this block, and `succ` can only be reached from
-   * the callable entry point by going via the `s` edge out of this basic block.
-   */
-  pragma[nomagic]
+/**
+ * A basic block that terminates in a condition, splitting the subsequent
+ * control flow.
+ */
+final class ConditionBlock extends BasicBlock, BasicBlocksImpl::ConditionBasicBlock {
   predicate immediatelyControls(BasicBlock succ, ConditionalSuccessor s) {
-    succ = this.getASuccessorByType(s) and
-    forall(BasicBlock pred | pred = succ.getAPredecessor() and pred != this | succ.dominates(pred))
+    super.immediatelyControls(succ, s)
   }
 
-  /**
-   * Holds if basic block `controlled` is controlled by this basic block with
-   * conditional value `s`. That is, `controlled` can only be reached from
-   * the callable entry point by going via the `s` edge out of this basic block.
-   */
   predicate controls(BasicBlock controlled, ConditionalSuccessor s) {
-    /*
-     * For this block to control the block `controlled` with `testIsTrue` the following must be true:
-     * Execution must have passed through the test i.e. `this` must strictly dominate `controlled`.
-     * Execution must have passed through the `testIsTrue` edge leaving `this`.
-     *
-     * Although "passed through the true edge" implies that `this.getATrueSuccessor()` dominates `controlled`,
-     * the reverse is not true, as flow may have passed through another edge to get to `this.getATrueSuccessor()`
-     * so we need to assert that `this.getATrueSuccessor()` dominates `controlled` *and* that
-     * all predecessors of `this.getATrueSuccessor()` are either `this` or dominated by `this.getATrueSuccessor()`.
-     *
-     * For example, in the following C# snippet:
-     * ```csharp
-     * if (x)
-     *   controlled;
-     * false_successor;
-     * uncontrolled;
-     * ```
-     * `false_successor` dominates `uncontrolled`, but not all of its predecessors are `this` (`if (x)`)
-     *  or dominated by itself. Whereas in the following code:
-     * ```csharp
-     * if (x)
-     *   while (controlled)
-     *     also_controlled;
-     * false_successor;
-     * uncontrolled;
-     * ```
-     * the block `while controlled` is controlled because all of its predecessors are `this` (`if (x)`)
-     * or (in the case of `also_controlled`) dominated by itself.
-     *
-     * The additional constraint on the predecessors of the test successor implies
-     * that `this` strictly dominates `controlled` so that isn't necessary to check
-     * directly.
-     */
-
-    exists(BasicBlock succ | this.immediatelyControls(succ, s) | succ.dominates(controlled))
+    super.controls(controlled, s)
   }
 }
diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/internal/ControlFlowGraphImpl.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/internal/ControlFlowGraphImpl.qll
index 463ed260067c..fcbdaeb8b4c1 100644
--- a/csharp/ql/lib/semmle/code/csharp/controlflow/internal/ControlFlowGraphImpl.qll
+++ b/csharp/ql/lib/semmle/code/csharp/controlflow/internal/ControlFlowGraphImpl.qll
@@ -95,6 +95,10 @@ private module CfgInput implements CfgShared::InputSig<Location> {
     t instanceof ST::SuccessorTypes::ExceptionSuccessor or
     t instanceof ST::SuccessorTypes::ExitSuccessor
   }
+
+  predicate idOfAstNode(AstNode node, int id) { node.getId() = id }
+
+  predicate idOfCfgScope(CfgScope node, int id) { idOfAstNode(node, id) }
 }
 
 private module CfgSplittingInput implements CfgShared::SplittingInputSig<Location, CfgInput> {
diff --git a/ruby/ql/lib/codeql/ruby/controlflow/BasicBlocks.qll b/ruby/ql/lib/codeql/ruby/controlflow/BasicBlocks.qll
index 350f07a431a7..892cf032be24 100644
--- a/ruby/ql/lib/codeql/ruby/controlflow/BasicBlocks.qll
+++ b/ruby/ql/lib/codeql/ruby/controlflow/BasicBlocks.qll
@@ -4,45 +4,40 @@ private import codeql.ruby.AST
 private import codeql.ruby.ast.internal.AST
 private import codeql.ruby.ast.internal.TreeSitter
 private import codeql.ruby.controlflow.ControlFlowGraph
+private import codeql.ruby.controlflow.ControlFlowGraph as Cfg
+private import internal.ControlFlowGraphImpl as CfgImpl
 private import CfgNodes
 private import SuccessorTypes
+private import codeql.controlflow.BasicBlock as BB
+private import CfgImpl::BasicBlocks as BasicBlocksImpl
 
 /**
  * A basic block, that is, a maximal straight-line sequence of control flow nodes
  * without branches or joins.
  */
-class BasicBlock extends TBasicBlockStart {
-  /** Gets the scope of this basic block. */
-  final CfgScope getScope() { result = this.getFirstNode().getScope() }
-
+final class BasicBlock extends BasicBlocksImpl::BasicBlock {
   /** Gets an immediate successor of this basic block, if any. */
-  BasicBlock getASuccessor() { result = this.getASuccessor(_) }
+  BasicBlock getASuccessor() { result = super.getASuccessor() }
 
   /** Gets an immediate successor of this basic block of a given type, if any. */
-  BasicBlock getASuccessor(SuccessorType t) {
-    result.getFirstNode() = this.getLastNode().getASuccessor(t)
-  }
+  BasicBlock getASuccessor(SuccessorType t) { result = super.getASuccessor(t) }
 
   /** Gets an immediate predecessor of this basic block, if any. */
-  BasicBlock getAPredecessor() { result.getASuccessor() = this }
+  BasicBlock getAPredecessor() { result = super.getAPredecessor() }
 
   /** Gets an immediate predecessor of this basic block of a given type, if any. */
-  BasicBlock getAPredecessor(SuccessorType t) { result.getASuccessor(t) = this }
+  BasicBlock getAPredecessor(SuccessorType t) { result = super.getAPredecessor(t) }
 
-  /** Gets the control flow node at a specific (zero-indexed) position in this basic block. */
-  CfgNode getNode(int pos) { bbIndex(this.getFirstNode(), result, pos) }
+  // The overrides below are to use `CfgNode` instead of `CfgImpl::Node`
+  CfgNode getNode(int pos) { result = super.getNode(pos) }
 
-  /** Gets a control flow node in this basic block. */
-  CfgNode getANode() { result = this.getNode(_) }
+  CfgNode getANode() { result = super.getANode() }
 
   /** Gets the first control flow node in this basic block. */
-  CfgNode getFirstNode() { this = TBasicBlockStart(result) }
+  CfgNode getFirstNode() { result = super.getFirstNode() }
 
   /** Gets the last control flow node in this basic block. */
-  CfgNode getLastNode() { result = this.getNode(this.length() - 1) }
-
-  /** Gets the length of this basic block. */
-  int length() { result = strictcount(this.getANode()) }
+  CfgNode getLastNode() { result = super.getLastNode() }
 
   /**
    * Holds if this basic block immediately dominates basic block `bb`.
@@ -66,7 +61,7 @@ class BasicBlock extends TBasicBlockStart {
    * basic block on line 5 (all paths from the entry point of `m`
    * to `return 1` must go through the `if` block).
    */
-  predicate immediatelyDominates(BasicBlock bb) { bbIDominates(this, bb) }
+  predicate immediatelyDominates(BasicBlock bb) { super.immediatelyDominates(bb) }
 
   /**
    * Holds if this basic block strictly dominates basic block `bb`.
@@ -90,7 +85,7 @@ class BasicBlock extends TBasicBlockStart {
    * basic block on line 5 (all paths from the entry point of `m`
    * to `return 1` must go through the `if` block).
    */
-  predicate strictlyDominates(BasicBlock bb) { bbIDominates+(this, bb) }
+  predicate strictlyDominates(BasicBlock bb) { super.strictlyDominates(bb) }
 
   /**
    * Holds if this basic block dominates basic block `bb`.
@@ -113,10 +108,7 @@ class BasicBlock extends TBasicBlockStart {
    * basic block on line 5 (all paths from the entry point of `m`
    * to `return 1` must go through the `if` block).
    */
-  predicate dominates(BasicBlock bb) {
-    bb = this or
-    this.strictlyDominates(bb)
-  }
+  predicate dominates(BasicBlock bb) { super.dominates(bb) }
 
   /**
    * Holds if `df` is in the dominance frontier of this basic block.
@@ -143,15 +135,7 @@ class BasicBlock extends TBasicBlockStart {
    * `puts x`. Also, the basic block starting on line 3 does not
    * dominate the basic block on line 8.
    */
-  predicate inDominanceFrontier(BasicBlock df) {
-    this.dominatesPredecessor(df) and
-    not this.strictlyDominates(df)
-  }
-
-  /**
-   * Holds if this basic block dominates a predecessor of `df`.
-   */
-  private predicate dominatesPredecessor(BasicBlock df) { this.dominates(df.getAPredecessor()) }
+  predicate inDominanceFrontier(BasicBlock df) { super.inDominanceFrontier(df) }
 
   /**
    * Gets the basic block that immediately dominates this basic block, if any.
@@ -176,7 +160,7 @@ class BasicBlock extends TBasicBlockStart {
    * to `return 1` must go through the `if` block, and the `if` block
    * is an immediate predecessor of `return 1`).
    */
-  BasicBlock getImmediateDominator() { bbIDominates(result, this) }
+  BasicBlock getImmediateDominator() { result = super.getImmediateDominator() }
 
   /**
    * Holds if this basic block strictly post-dominates basic block `bb`.
@@ -200,7 +184,7 @@ class BasicBlock extends TBasicBlockStart {
    * line 3 (all paths to the exit point of `m` from `puts "b"` must go
    * through `puts "m"`).
    */
-  predicate strictlyPostDominates(BasicBlock bb) { bbIPostDominates+(this, bb) }
+  predicate strictlyPostDominates(BasicBlock bb) { super.strictlyPostDominates(bb) }
 
   /**
    * Holds if this basic block post-dominates basic block `bb`.
@@ -223,205 +207,40 @@ class BasicBlock extends TBasicBlockStart {
    * (all paths to the exit point of `m` from `puts "b"` must go through
    * `puts "m"`).
    */
-  predicate postDominates(BasicBlock bb) {
-    this.strictlyPostDominates(bb) or
-    this = bb
-  }
-
-  /** Holds if this basic block is in a loop in the control flow graph. */
-  predicate inLoop() { this.getASuccessor+() = this }
-
-  /** Gets a textual representation of this basic block. */
-  string toString() { result = this.getFirstNode().toString() }
-
-  /** Gets the location of this basic block. */
-  Location getLocation() { result = this.getFirstNode().getLocation() }
+  predicate postDominates(BasicBlock bb) { super.postDominates(bb) }
 }
 
-cached
-private module Cached {
-  /** Internal representation of basic blocks. */
-  cached
-  newtype TBasicBlock = TBasicBlockStart(CfgNode cfn) { startsBB(cfn) }
-
-  /** Holds if `cfn` starts a new basic block. */
-  private predicate startsBB(CfgNode cfn) {
-    not exists(cfn.getAPredecessor()) and exists(cfn.getASuccessor())
-    or
-    cfn.isJoin()
-    or
-    cfn.getAPredecessor().isBranch()
-    or
-    /*
-     * In cases such as
-     *
-     * ```rb
-     * if x or y
-     *     foo
-     * else
-     *     bar
-     * ```
-     *
-     * we have a CFG that looks like
-     *
-     * x --false--> [false] x or y --false--> bar
-     * \                    |
-     *  --true--> y --false--
-     *            \
-     *             --true--> [true] x or y --true--> foo
-     *
-     * and we want to ensure that both `foo` and `bar` start a new basic block,
-     * in order to get a `ConditionalBlock` out of the disjunction.
-     */
-
-    exists(cfn.getAPredecessor(any(SuccessorTypes::ConditionalSuccessor s)))
-  }
-
-  /**
-   * Holds if `succ` is a control flow successor of `pred` within
-   * the same basic block.
-   */
-  private predicate intraBBSucc(CfgNode pred, CfgNode succ) {
-    succ = pred.getASuccessor() and
-    not startsBB(succ)
-  }
-
-  /**
-   * Holds if `cfn` is the `i`th node in basic block `bb`.
-   *
-   * In other words, `i` is the shortest distance from a node `bb`
-   * that starts a basic block to `cfn` along the `intraBBSucc` relation.
-   */
-  cached
-  predicate bbIndex(CfgNode bbStart, CfgNode cfn, int i) =
-    shortestDistances(startsBB/1, intraBBSucc/2)(bbStart, cfn, i)
-
-  /**
-   * Holds if the first node of basic block `succ` is a control flow
-   * successor of the last node of basic block `pred`.
-   */
-  private predicate succBB(BasicBlock pred, BasicBlock succ) { succ = pred.getASuccessor() }
-
-  /** Holds if `dom` is an immediate dominator of `bb`. */
-  cached
-  predicate bbIDominates(BasicBlock dom, BasicBlock bb) =
-    idominance(entryBB/1, succBB/2)(_, dom, bb)
-
-  /** Holds if `pred` is a basic block predecessor of `succ`. */
-  private predicate predBB(BasicBlock succ, BasicBlock pred) { succBB(pred, succ) }
-
-  /** Holds if `bb` is an exit basic block that represents normal exit. */
-  private predicate normalExitBB(BasicBlock bb) { bb.getANode().(AnnotatedExitNode).isNormal() }
-
-  /** Holds if `dom` is an immediate post-dominator of `bb`. */
-  cached
-  predicate bbIPostDominates(BasicBlock dom, BasicBlock bb) =
-    idominance(normalExitBB/1, predBB/2)(_, dom, bb)
-
-  /**
-   * Gets the `i`th predecessor of join block `jb`, with respect to some
-   * arbitrary order.
-   */
-  cached
-  JoinBlockPredecessor getJoinBlockPredecessor(JoinBlock jb, int i) {
-    result =
-      rank[i + 1](JoinBlockPredecessor jbp |
-        jbp = jb.getAPredecessor()
-      |
-        jbp order by JoinBlockPredecessors::getId(jbp), JoinBlockPredecessors::getSplitString(jbp)
-      )
-  }
-
-  cached
-  predicate immediatelyControls(ConditionBlock cb, BasicBlock succ, ConditionalSuccessor s) {
-    succ = cb.getASuccessor(s) and
-    forall(BasicBlock pred | pred = succ.getAPredecessor() and pred != cb | succ.dominates(pred))
-  }
-
-  cached
-  predicate controls(ConditionBlock cb, BasicBlock controlled, ConditionalSuccessor s) {
-    exists(BasicBlock succ | cb.immediatelyControls(succ, s) | succ.dominates(controlled))
-  }
-}
-
-private import Cached
-
-/** Holds if `bb` is an entry basic block. */
-private predicate entryBB(BasicBlock bb) { bb.getFirstNode() instanceof EntryNode }
-
 /**
  * An entry basic block, that is, a basic block whose first node is
  * an entry node.
  */
-class EntryBasicBlock extends BasicBlock {
-  EntryBasicBlock() { entryBB(this) }
-}
+final class EntryBasicBlock extends BasicBlock, BasicBlocksImpl::EntryBasicBlock { }
 
 /**
- * An annotated exit basic block, that is, a basic block whose last node is
- * an annotated exit node.
+ * An annotated exit basic block, that is, a basic block that contains an
+ * annotated exit node.
  */
-class AnnotatedExitBasicBlock extends BasicBlock {
-  private boolean normal;
-
-  AnnotatedExitBasicBlock() {
-    exists(AnnotatedExitNode n |
-      n = this.getANode() and
-      if n.isNormal() then normal = true else normal = false
-    )
-  }
-
-  /** Holds if this block represent a normal exit. */
-  final predicate isNormal() { normal = true }
-}
+final class AnnotatedExitBasicBlock extends BasicBlock, BasicBlocksImpl::AnnotatedExitBasicBlock { }
 
 /**
  * An exit basic block, that is, a basic block whose last node is
  * an exit node.
  */
-class ExitBasicBlock extends BasicBlock {
-  ExitBasicBlock() { this.getLastNode() instanceof ExitNode }
-}
-
-private module JoinBlockPredecessors {
-  private predicate id(Ruby::AstNode x, Ruby::AstNode y) { x = y }
-
-  private predicate idOf(Ruby::AstNode x, int y) = equivalenceRelation(id/2)(x, y)
-
-  int getId(JoinBlockPredecessor jbp) {
-    idOf(toGeneratedInclSynth(jbp.getFirstNode().(AstCfgNode).getAstNode()), result)
-    or
-    idOf(toGeneratedInclSynth(jbp.(EntryBasicBlock).getScope()), result)
-  }
-
-  string getSplitString(JoinBlockPredecessor jbp) {
-    result = jbp.getFirstNode().(AstCfgNode).getSplitsString()
-    or
-    not exists(jbp.getFirstNode().(AstCfgNode).getSplitsString()) and
-    result = ""
-  }
-}
+final class ExitBasicBlock extends BasicBlock, BasicBlocksImpl::ExitBasicBlock { }
 
 /** A basic block with more than one predecessor. */
-class JoinBlock extends BasicBlock {
-  JoinBlock() { this.getFirstNode().isJoin() }
-
-  /**
-   * Gets the `i`th predecessor of this join block, with respect to some
-   * arbitrary order.
-   */
-  JoinBlockPredecessor getJoinBlockPredecessor(int i) { result = getJoinBlockPredecessor(this, i) }
+final class JoinBlock extends BasicBlock, BasicBlocksImpl::JoinBasicBlock {
+  JoinBlockPredecessor getJoinBlockPredecessor(int i) { result = super.getJoinBlockPredecessor(i) }
 }
 
 /** A basic block that is an immediate predecessor of a join block. */
-class JoinBlockPredecessor extends BasicBlock {
-  JoinBlockPredecessor() { this.getASuccessor() instanceof JoinBlock }
-}
-
-/** A basic block that terminates in a condition, splitting the subsequent control flow. */
-class ConditionBlock extends BasicBlock {
-  ConditionBlock() { this.getLastNode().isCondition() }
+final class JoinBlockPredecessor extends BasicBlock, BasicBlocksImpl::JoinPredecessorBasicBlock { }
 
+/**
+ * A basic block that terminates in a condition, splitting the subsequent
+ * control flow.
+ */
+final class ConditionBlock extends BasicBlock, BasicBlocksImpl::ConditionBasicBlock {
   /**
    * Holds if basic block `succ` is immediately controlled by this basic
    * block with conditional value `s`. That is, `succ` is an immediate
@@ -429,15 +248,15 @@ class ConditionBlock extends BasicBlock {
    * the callable entry point by going via the `s` edge out of this basic block.
    */
   predicate immediatelyControls(BasicBlock succ, ConditionalSuccessor s) {
-    immediatelyControls(this, succ, s)
+    super.immediatelyControls(succ, s)
   }
 
   /**
    * Holds if basic block `controlled` is controlled by this basic block with
-   * conditional value `s`. That is, `controlled` can only be reached from
-   * the callable entry point by going via the `s` edge out of this basic block.
+   * conditional value `s`. That is, `controlled` can only be reached from the
+   * callable entry point by going via the `s` edge out of this basic block.
    */
   predicate controls(BasicBlock controlled, ConditionalSuccessor s) {
-    controls(this, controlled, s)
+    super.controls(controlled, s)
   }
 }
diff --git a/ruby/ql/lib/codeql/ruby/controlflow/internal/ControlFlowGraphImpl.qll b/ruby/ql/lib/codeql/ruby/controlflow/internal/ControlFlowGraphImpl.qll
index 643decb560b9..3046994d3d54 100644
--- a/ruby/ql/lib/codeql/ruby/controlflow/internal/ControlFlowGraphImpl.qll
+++ b/ruby/ql/lib/codeql/ruby/controlflow/internal/ControlFlowGraphImpl.qll
@@ -60,6 +60,14 @@ private module CfgInput implements CfgShared::InputSig<Location> {
     t instanceof Cfg::SuccessorTypes::RaiseSuccessor or
     t instanceof Cfg::SuccessorTypes::ExitSuccessor
   }
+
+  private predicate id(Ruby::AstNode node1, Ruby::AstNode node2) { node1 = node2 }
+
+  private predicate idOf(Ruby::AstNode node, int id) = equivalenceRelation(id/2)(node, id)
+
+  predicate idOfAstNode(AstNode node, int id) { idOf(AstInternal::toGeneratedInclSynth(node), id) }
+
+  predicate idOfCfgScope(CfgScope node, int id) { idOfAstNode(node, id) }
 }
 
 private module CfgSplittingInput implements CfgShared::SplittingInputSig<Location, CfgInput> {
diff --git a/rust/ql/lib/codeql/rust/controlflow/BasicBlocks.qll b/rust/ql/lib/codeql/rust/controlflow/BasicBlocks.qll
index f87a48a28a5b..4a4b637f3d3d 100644
--- a/rust/ql/lib/codeql/rust/controlflow/BasicBlocks.qll
+++ b/rust/ql/lib/codeql/rust/controlflow/BasicBlocks.qll
@@ -1,263 +1,16 @@
-private import rust
-private import ControlFlowGraph
-private import internal.SuccessorType
-private import internal.ControlFlowGraphImpl as Impl
-private import codeql.rust.elements.internal.generated.Raw
-private import codeql.rust.elements.internal.generated.Synth
+private import internal.ControlFlowGraphImpl as CfgImpl
+private import CfgImpl::BasicBlocks as BasicBlocksImpl
 
-final class BasicBlock = BasicBlockImpl;
+final class BasicBlock = BasicBlocksImpl::BasicBlock;
 
-/**
- * A basic block, that is, a maximal straight-line sequence of control flow nodes
- * without branches or joins.
- */
-private class BasicBlockImpl extends TBasicBlockStart {
-  /** Gets the CFG scope of this basic block. */
-  CfgScope getScope() { result = this.getAPredecessor().getScope() }
+final class EntryBasicBlock = BasicBlocksImpl::EntryBasicBlock;
 
-  /** Gets an immediate successor of this basic block, if any. */
-  BasicBlock getASuccessor() { result = this.getASuccessor(_) }
+final class ExitBasicBlock = BasicBlocksImpl::ExitBasicBlock;
 
-  /** Gets an immediate successor of this basic block of a given type, if any. */
-  BasicBlock getASuccessor(SuccessorType t) {
-    result.getFirstNode() = this.getLastNode().getASuccessor(t)
-  }
+final class AnnotatedExitBasicBlock = BasicBlocksImpl::AnnotatedExitBasicBlock;
 
-  /** Gets an immediate predecessor of this basic block, if any. */
-  BasicBlock getAPredecessor() { result.getASuccessor() = this }
+final class ConditionBasicBlock = BasicBlocksImpl::ConditionBasicBlock;
 
-  /** Gets an immediate predecessor of this basic block of a given type, if any. */
-  BasicBlock getAPredecessor(SuccessorType t) { result.getASuccessor(t) = this }
+final class JoinBasicBlock = BasicBlocksImpl::JoinBasicBlock;
 
-  /** Gets the control flow node at a specific (zero-indexed) position in this basic block. */
-  CfgNode getNode(int pos) { bbIndex(this.getFirstNode(), result, pos) }
-
-  /** Gets a control flow node in this basic block. */
-  CfgNode getANode() { result = this.getNode(_) }
-
-  /** Gets the first control flow node in this basic block. */
-  CfgNode getFirstNode() { this = TBasicBlockStart(result) }
-
-  /** Gets the last control flow node in this basic block. */
-  CfgNode getLastNode() { result = this.getNode(this.length() - 1) }
-
-  /** Gets the length of this basic block. */
-  int length() { result = strictcount(this.getANode()) }
-
-  predicate immediatelyDominates(BasicBlock bb) { bbIDominates(this, bb) }
-
-  predicate strictlyDominates(BasicBlock bb) { bbIDominates+(this, bb) }
-
-  predicate dominates(BasicBlock bb) {
-    bb = this or
-    this.strictlyDominates(bb)
-  }
-
-  predicate inDominanceFrontier(BasicBlock df) {
-    this.dominatesPredecessor(df) and
-    not this.strictlyDominates(df)
-  }
-
-  /**
-   * Holds if this basic block dominates a predecessor of `df`.
-   */
-  private predicate dominatesPredecessor(BasicBlock df) { this.dominates(df.getAPredecessor()) }
-
-  BasicBlock getImmediateDominator() { bbIDominates(result, this) }
-
-  predicate strictlyPostDominates(BasicBlock bb) { bbIPostDominates+(this, bb) }
-
-  predicate postDominates(BasicBlock bb) {
-    this.strictlyPostDominates(bb) or
-    this = bb
-  }
-
-  /** Holds if this basic block is in a loop in the control flow graph. */
-  predicate inLoop() { this.getASuccessor+() = this }
-
-  /** Gets a textual representation of this basic block. */
-  string toString() { result = this.getFirstNode().toString() }
-
-  /** Gets the location of this basic block. */
-  Location getLocation() { result = this.getFirstNode().getLocation() }
-}
-
-cached
-private module Cached {
-  /** Internal representation of basic blocks. */
-  cached
-  newtype TBasicBlock = TBasicBlockStart(CfgNode cfn) { startsBB(cfn) }
-
-  /** Holds if `cfn` starts a new basic block. */
-  private predicate startsBB(CfgNode cfn) {
-    not exists(cfn.getAPredecessor()) and exists(cfn.getASuccessor())
-    or
-    cfn.isJoin()
-    or
-    cfn.getAPredecessor().isBranch()
-  }
-
-  /**
-   * Holds if `succ` is a control flow successor of `pred` within
-   * the same basic block.
-   */
-  private predicate intraBBSucc(CfgNode pred, CfgNode succ) {
-    succ = pred.getASuccessor() and
-    not startsBB(succ)
-  }
-
-  /**
-   * Holds if `cfn` is the `i`th node in basic block `bb`.
-   *
-   * In other words, `i` is the shortest distance from a node `bb`
-   * that starts a basic block to `cfn` along the `intraBBSucc` relation.
-   */
-  cached
-  predicate bbIndex(CfgNode bbStart, CfgNode cfn, int i) =
-    shortestDistances(startsBB/1, intraBBSucc/2)(bbStart, cfn, i)
-
-  /**
-   * Holds if the first node of basic block `succ` is a control flow
-   * successor of the last node of basic block `pred`.
-   */
-  private predicate succBB(BasicBlock pred, BasicBlock succ) { succ = pred.getASuccessor() }
-
-  /** Holds if `dom` is an immediate dominator of `bb`. */
-  cached
-  predicate bbIDominates(BasicBlock dom, BasicBlock bb) =
-    idominance(entryBB/1, succBB/2)(_, dom, bb)
-
-  /** Holds if `pred` is a basic block predecessor of `succ`. */
-  private predicate predBB(BasicBlock succ, BasicBlock pred) { succBB(pred, succ) }
-
-  /** Holds if `bb` is an exit basic block that represents normal exit. */
-  private predicate normalExitBB(BasicBlock bb) {
-    bb.getANode().(Impl::AnnotatedExitNode).isNormal()
-  }
-
-  /** Holds if `dom` is an immediate post-dominator of `bb`. */
-  cached
-  predicate bbIPostDominates(BasicBlock dom, BasicBlock bb) =
-    idominance(normalExitBB/1, predBB/2)(_, dom, bb)
-
-  /**
-   * Gets the `i`th predecessor of join block `jb`, with respect to some
-   * arbitrary order.
-   */
-  cached
-  JoinBlockPredecessor getJoinBlockPredecessor(JoinBlock jb, int i) {
-    result =
-      rank[i + 1](JoinBlockPredecessor jbp |
-        jbp = jb.getAPredecessor()
-      |
-        jbp order by JoinBlockPredecessors::getId(jbp), JoinBlockPredecessors::getSplitString(jbp)
-      )
-  }
-}
-
-private import Cached
-
-/** Holds if `bb` is an entry basic block. */
-private predicate entryBB(BasicBlock bb) { bb.getFirstNode() instanceof Impl::EntryNode }
-
-/**
- * An entry basic block, that is, a basic block whose first node is
- * an entry node.
- */
-class EntryBasicBlock extends BasicBlockImpl {
-  EntryBasicBlock() { entryBB(this) }
-
-  override CfgScope getScope() {
-    this.getFirstNode() = any(Impl::EntryNode node | node.getScope() = result)
-  }
-}
-
-/**
- * An annotated exit basic block, that is, a basic block whose last node is
- * an annotated exit node.
- */
-class AnnotatedExitBasicBlock extends BasicBlockImpl {
-  private boolean normal;
-
-  AnnotatedExitBasicBlock() {
-    exists(Impl::AnnotatedExitNode n |
-      n = this.getANode() and
-      if n.isNormal() then normal = true else normal = false
-    )
-  }
-
-  /** Holds if this block represent a normal exit. */
-  final predicate isNormal() { normal = true }
-}
-
-/**
- * An exit basic block, that is, a basic block whose last node is
- * an exit node.
- */
-class ExitBasicBlock extends BasicBlockImpl {
-  ExitBasicBlock() { this.getLastNode() instanceof Impl::ExitNode }
-}
-
-private module JoinBlockPredecessors {
-  private predicate id(Raw::AstNode x, Raw::AstNode y) { x = y }
-
-  private predicate idOfDbAstNode(Raw::AstNode x, int y) = equivalenceRelation(id/2)(x, y)
-
-  // TODO: does not work if fresh ipa entities (`ipa: on:`) turn out to be first of the block
-  private predicate idOf(AstNode x, int y) { idOfDbAstNode(Synth::convertAstNodeToRaw(x), y) }
-
-  int getId(JoinBlockPredecessor jbp) {
-    idOf(jbp.getFirstNode().(Impl::AstCfgNode).getAstNode(), result)
-    or
-    idOf(jbp.(EntryBasicBlock).getScope(), result)
-  }
-
-  string getSplitString(JoinBlockPredecessor jbp) {
-    result = jbp.getFirstNode().(Impl::AstCfgNode).getSplitsString()
-    or
-    not exists(jbp.getFirstNode().(Impl::AstCfgNode).getSplitsString()) and
-    result = ""
-  }
-}
-
-/** A basic block with more than one predecessor. */
-class JoinBlock extends BasicBlockImpl {
-  JoinBlock() { this.getFirstNode().isJoin() }
-
-  /**
-   * Gets the `i`th predecessor of this join block, with respect to some
-   * arbitrary order.
-   */
-  JoinBlockPredecessor getJoinBlockPredecessor(int i) { result = getJoinBlockPredecessor(this, i) }
-}
-
-/** A basic block that is an immediate predecessor of a join block. */
-class JoinBlockPredecessor extends BasicBlockImpl {
-  JoinBlockPredecessor() { this.getASuccessor() instanceof JoinBlock }
-}
-
-/** A basic block that terminates in a condition, splitting the subsequent control flow. */
-class ConditionBlock extends BasicBlockImpl {
-  ConditionBlock() { this.getLastNode().isCondition() }
-
-  /**
-   * Holds if basic block `succ` is immediately controlled by this basic
-   * block with conditional value `s`. That is, `succ` is an immediate
-   * successor of this block, and `succ` can only be reached from
-   * the callable entry point by going via the `s` edge out of this basic block.
-   */
-  pragma[nomagic]
-  predicate immediatelyControls(BasicBlock succ, SuccessorType s) {
-    succ = this.getASuccessor(s) and
-    forall(BasicBlock pred | pred = succ.getAPredecessor() and pred != this | succ.dominates(pred))
-  }
-
-  /**
-   * Holds if basic block `controlled` is controlled by this basic block with
-   * conditional value `s`. That is, `controlled` can only be reached from
-   * the callable entry point by going via the `s` edge out of this basic block.
-   */
-  predicate controls(BasicBlock controlled, BooleanSuccessor s) {
-    exists(BasicBlock succ | this.immediatelyControls(succ, s) | succ.dominates(controlled))
-  }
-}
+final class JoinPredecessorBasicBlock = BasicBlocksImpl::JoinPredecessorBasicBlock;
diff --git a/rust/ql/lib/codeql/rust/controlflow/ControlFlowGraph.qll b/rust/ql/lib/codeql/rust/controlflow/ControlFlowGraph.qll
index 20f1af4a4afb..eb8dbdea39f7 100644
--- a/rust/ql/lib/codeql/rust/controlflow/ControlFlowGraph.qll
+++ b/rust/ql/lib/codeql/rust/controlflow/ControlFlowGraph.qll
@@ -1,11 +1,8 @@
 /** Provides classes representing the control flow graph. */
 
-private import rust
 private import internal.ControlFlowGraphImpl
-private import internal.Completion
 private import internal.SuccessorType
 private import internal.Scope as Scope
-private import BasicBlocks
 
 final class CfgScope = Scope::CfgScope;
 
@@ -25,30 +22,4 @@ final class ContinueSuccessor = ContinueSuccessorImpl;
 
 final class ReturnSuccessor = ReturnSuccessorImpl;
 
-/**
- * A control flow node.
- *
- * A control flow node is a node in the control flow graph (CFG). There is a
- * many-to-one relationship between CFG nodes and AST nodes.
- *
- * Only nodes that can be reached from an entry point are included in the CFG.
- */
-final class CfgNode extends Node {
-  /** Gets the file of this control flow node. */
-  File getFile() { result = this.getLocation().getFile() }
-
-  /** Gets a successor node of a given type, if any. */
-  CfgNode getASuccessor(SuccessorType t) { result = super.getASuccessor(t) }
-
-  /** Gets an immediate successor, if any. */
-  CfgNode getASuccessor() { result = this.getASuccessor(_) }
-
-  /** Gets an immediate predecessor node of a given flow type, if any. */
-  CfgNode getAPredecessor(SuccessorType t) { result.getASuccessor(t) = this }
-
-  /** Gets an immediate predecessor, if any. */
-  CfgNode getAPredecessor() { result = this.getAPredecessor(_) }
-
-  /** Gets the basic block that this control flow node belongs to. */
-  BasicBlock getBasicBlock() { result.getANode() = this }
-}
+final class CfgNode = Node;
diff --git a/rust/ql/lib/codeql/rust/controlflow/internal/ControlFlowGraphImpl.qll b/rust/ql/lib/codeql/rust/controlflow/internal/ControlFlowGraphImpl.qll
index b999c5c78488..2039ec755464 100644
--- a/rust/ql/lib/codeql/rust/controlflow/internal/ControlFlowGraphImpl.qll
+++ b/rust/ql/lib/codeql/rust/controlflow/internal/ControlFlowGraphImpl.qll
@@ -3,6 +3,8 @@ import codeql.controlflow.Cfg
 import Completion
 private import Scope as Scope
 private import codeql.rust.controlflow.ControlFlowGraph as Cfg
+private import codeql.rust.elements.internal.generated.Raw
+private import codeql.rust.elements.internal.generated.Synth
 
 private module CfgInput implements InputSig<Location> {
   private import codeql.rust.internal.CachedStages
@@ -48,6 +50,17 @@ private module CfgInput implements InputSig<Location> {
 
   /** Holds if `scope` is exited when `last` finishes with completion `c`. */
   predicate scopeLast(CfgScope scope, AstNode last, Completion c) { scope.scopeLast(last, c) }
+
+  private predicate id(Raw::AstNode x, Raw::AstNode y) { x = y }
+
+  private predicate idOfDbAstNode(Raw::AstNode x, int y) = equivalenceRelation(id/2)(x, y)
+
+  // TODO: does not work if fresh ipa entities (`ipa: on:`) turn out to be first of the block
+  predicate idOfAstNode(AstNode node, int id) {
+    idOfDbAstNode(Synth::convertAstNodeToRaw(node), id)
+  }
+
+  predicate idOfCfgScope(CfgScope node, int id) { idOfAstNode(node, id) }
 }
 
 private module CfgSplittingInput implements SplittingInputSig<Location, CfgInput> {
diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/SsaImpl.qll b/rust/ql/lib/codeql/rust/dataflow/internal/SsaImpl.qll
index f2078999e60d..0ed5c3ee2a17 100644
--- a/rust/ql/lib/codeql/rust/dataflow/internal/SsaImpl.qll
+++ b/rust/ql/lib/codeql/rust/dataflow/internal/SsaImpl.qll
@@ -488,7 +488,7 @@ private module DataFlowIntegrationInput implements Impl::DataFlowIntegrationInpu
 
   /** Holds if the guard `guard` controls block `bb` upon evaluating to `branch`. */
   predicate guardControlsBlock(Guard guard, SsaInput::BasicBlock bb, boolean branch) {
-    exists(ConditionBlock conditionBlock, ConditionalSuccessor s |
+    exists(ConditionBasicBlock conditionBlock, ConditionalSuccessor s |
       guard = conditionBlock.getLastNode() and
       s.getValue() = branch and
       conditionBlock.controls(bb, s)
diff --git a/rust/ql/test/library-tests/controlflow/BasicBlocks.expected b/rust/ql/test/library-tests/controlflow/BasicBlocks.expected
index a17ff6a28ce4..a1e189a99e09 100644
--- a/rust/ql/test/library-tests/controlflow/BasicBlocks.expected
+++ b/rust/ql/test/library-tests/controlflow/BasicBlocks.expected
@@ -184,9 +184,13 @@ dominates
 | test.rs:152:5:158:5 | enter fn test_nested_if | test.rs:153:39:153:48 | [boolean(false)] { ... } |
 | test.rs:152:5:158:5 | enter fn test_nested_if | test.rs:153:39:153:48 | [boolean(true)] { ... } |
 | test.rs:152:5:158:5 | enter fn test_nested_if | test.rs:153:41:153:41 | a |
+| test.rs:152:5:158:5 | enter fn test_nested_if | test.rs:154:13:154:13 | 1 |
+| test.rs:152:5:158:5 | enter fn test_nested_if | test.rs:156:13:156:13 | 0 |
 | test.rs:153:9:157:9 | if ... {...} else {...} | test.rs:153:9:157:9 | if ... {...} else {...} |
 | test.rs:153:13:153:48 | [boolean(false)] if ... {...} else {...} | test.rs:153:13:153:48 | [boolean(false)] if ... {...} else {...} |
+| test.rs:153:13:153:48 | [boolean(false)] if ... {...} else {...} | test.rs:156:13:156:13 | 0 |
 | test.rs:153:13:153:48 | [boolean(true)] if ... {...} else {...} | test.rs:153:13:153:48 | [boolean(true)] if ... {...} else {...} |
+| test.rs:153:13:153:48 | [boolean(true)] if ... {...} else {...} | test.rs:154:13:154:13 | 1 |
 | test.rs:153:22:153:32 | [boolean(false)] { ... } | test.rs:153:22:153:32 | [boolean(false)] { ... } |
 | test.rs:153:22:153:32 | [boolean(true)] { ... } | test.rs:153:22:153:32 | [boolean(true)] { ... } |
 | test.rs:153:24:153:24 | a | test.rs:153:22:153:32 | [boolean(false)] { ... } |
@@ -197,27 +201,55 @@ dominates
 | test.rs:153:41:153:41 | a | test.rs:153:39:153:48 | [boolean(false)] { ... } |
 | test.rs:153:41:153:41 | a | test.rs:153:39:153:48 | [boolean(true)] { ... } |
 | test.rs:153:41:153:41 | a | test.rs:153:41:153:41 | a |
+| test.rs:154:13:154:13 | 1 | test.rs:154:13:154:13 | 1 |
+| test.rs:156:13:156:13 | 0 | test.rs:156:13:156:13 | 0 |
 | test.rs:160:5:169:5 | enter fn test_nested_if_match | test.rs:160:5:169:5 | enter fn test_nested_if_match |
 | test.rs:160:5:169:5 | enter fn test_nested_if_match | test.rs:161:9:168:9 | if ... {...} else {...} |
+| test.rs:160:5:169:5 | enter fn test_nested_if_match | test.rs:161:13:164:9 | [boolean(false)] match a { ... } |
+| test.rs:160:5:169:5 | enter fn test_nested_if_match | test.rs:161:13:164:9 | [boolean(true)] match a { ... } |
 | test.rs:160:5:169:5 | enter fn test_nested_if_match | test.rs:162:18:162:21 | true |
 | test.rs:160:5:169:5 | enter fn test_nested_if_match | test.rs:163:13:163:13 | _ |
+| test.rs:160:5:169:5 | enter fn test_nested_if_match | test.rs:165:13:165:13 | 1 |
+| test.rs:160:5:169:5 | enter fn test_nested_if_match | test.rs:167:13:167:13 | 0 |
 | test.rs:161:9:168:9 | if ... {...} else {...} | test.rs:161:9:168:9 | if ... {...} else {...} |
+| test.rs:161:13:164:9 | [boolean(false)] match a { ... } | test.rs:161:13:164:9 | [boolean(false)] match a { ... } |
+| test.rs:161:13:164:9 | [boolean(false)] match a { ... } | test.rs:167:13:167:13 | 0 |
+| test.rs:161:13:164:9 | [boolean(true)] match a { ... } | test.rs:161:13:164:9 | [boolean(true)] match a { ... } |
+| test.rs:161:13:164:9 | [boolean(true)] match a { ... } | test.rs:165:13:165:13 | 1 |
+| test.rs:162:18:162:21 | true | test.rs:161:13:164:9 | [boolean(true)] match a { ... } |
 | test.rs:162:18:162:21 | true | test.rs:162:18:162:21 | true |
+| test.rs:162:18:162:21 | true | test.rs:165:13:165:13 | 1 |
+| test.rs:163:13:163:13 | _ | test.rs:161:13:164:9 | [boolean(false)] match a { ... } |
 | test.rs:163:13:163:13 | _ | test.rs:163:13:163:13 | _ |
+| test.rs:163:13:163:13 | _ | test.rs:167:13:167:13 | 0 |
+| test.rs:165:13:165:13 | 1 | test.rs:165:13:165:13 | 1 |
+| test.rs:167:13:167:13 | 0 | test.rs:167:13:167:13 | 0 |
 | test.rs:171:5:180:5 | enter fn test_nested_if_block | test.rs:171:5:180:5 | enter fn test_nested_if_block |
 | test.rs:171:5:180:5 | enter fn test_nested_if_block | test.rs:172:9:179:9 | if ... {...} else {...} |
 | test.rs:171:5:180:5 | enter fn test_nested_if_block | test.rs:172:12:175:9 | [boolean(false)] { ... } |
 | test.rs:171:5:180:5 | enter fn test_nested_if_block | test.rs:172:12:175:9 | [boolean(true)] { ... } |
+| test.rs:171:5:180:5 | enter fn test_nested_if_block | test.rs:176:13:176:13 | 1 |
+| test.rs:171:5:180:5 | enter fn test_nested_if_block | test.rs:178:13:178:13 | 0 |
 | test.rs:172:9:179:9 | if ... {...} else {...} | test.rs:172:9:179:9 | if ... {...} else {...} |
 | test.rs:172:12:175:9 | [boolean(false)] { ... } | test.rs:172:12:175:9 | [boolean(false)] { ... } |
+| test.rs:172:12:175:9 | [boolean(false)] { ... } | test.rs:178:13:178:13 | 0 |
 | test.rs:172:12:175:9 | [boolean(true)] { ... } | test.rs:172:12:175:9 | [boolean(true)] { ... } |
+| test.rs:172:12:175:9 | [boolean(true)] { ... } | test.rs:176:13:176:13 | 1 |
+| test.rs:176:13:176:13 | 1 | test.rs:176:13:176:13 | 1 |
+| test.rs:178:13:178:13 | 0 | test.rs:178:13:178:13 | 0 |
 | test.rs:182:5:192:5 | enter fn test_if_assignment | test.rs:182:5:192:5 | enter fn test_if_assignment |
 | test.rs:182:5:192:5 | enter fn test_if_assignment | test.rs:184:9:191:9 | if ... {...} else {...} |
 | test.rs:182:5:192:5 | enter fn test_if_assignment | test.rs:184:12:187:9 | [boolean(false)] { ... } |
 | test.rs:182:5:192:5 | enter fn test_if_assignment | test.rs:184:12:187:9 | [boolean(true)] { ... } |
+| test.rs:182:5:192:5 | enter fn test_if_assignment | test.rs:188:13:188:13 | 1 |
+| test.rs:182:5:192:5 | enter fn test_if_assignment | test.rs:190:13:190:13 | 0 |
 | test.rs:184:9:191:9 | if ... {...} else {...} | test.rs:184:9:191:9 | if ... {...} else {...} |
 | test.rs:184:12:187:9 | [boolean(false)] { ... } | test.rs:184:12:187:9 | [boolean(false)] { ... } |
+| test.rs:184:12:187:9 | [boolean(false)] { ... } | test.rs:190:13:190:13 | 0 |
 | test.rs:184:12:187:9 | [boolean(true)] { ... } | test.rs:184:12:187:9 | [boolean(true)] { ... } |
+| test.rs:184:12:187:9 | [boolean(true)] { ... } | test.rs:188:13:188:13 | 1 |
+| test.rs:188:13:188:13 | 1 | test.rs:188:13:188:13 | 1 |
+| test.rs:190:13:190:13 | 0 | test.rs:190:13:190:13 | 0 |
 | test.rs:194:5:205:5 | enter fn test_if_loop1 | test.rs:194:5:205:5 | enter fn test_if_loop1 |
 | test.rs:194:5:205:5 | enter fn test_if_loop1 | test.rs:195:9:204:9 | if ... {...} else {...} |
 | test.rs:194:5:205:5 | enter fn test_if_loop1 | test.rs:196:13:198:13 | if ... {...} |
@@ -225,6 +257,8 @@ dominates
 | test.rs:194:5:205:5 | enter fn test_if_loop1 | test.rs:197:17:197:28 | [boolean(false)] break ... |
 | test.rs:194:5:205:5 | enter fn test_if_loop1 | test.rs:197:17:197:28 | [boolean(true)] break ... |
 | test.rs:194:5:205:5 | enter fn test_if_loop1 | test.rs:197:17:197:29 | ExprStmt |
+| test.rs:194:5:205:5 | enter fn test_if_loop1 | test.rs:201:13:201:13 | 1 |
+| test.rs:194:5:205:5 | enter fn test_if_loop1 | test.rs:203:13:203:13 | 0 |
 | test.rs:195:9:204:9 | if ... {...} else {...} | test.rs:195:9:204:9 | if ... {...} else {...} |
 | test.rs:196:13:198:13 | if ... {...} | test.rs:196:13:198:13 | if ... {...} |
 | test.rs:196:13:198:14 | ExprStmt | test.rs:195:9:204:9 | if ... {...} else {...} |
@@ -233,12 +267,20 @@ dominates
 | test.rs:196:13:198:14 | ExprStmt | test.rs:197:17:197:28 | [boolean(false)] break ... |
 | test.rs:196:13:198:14 | ExprStmt | test.rs:197:17:197:28 | [boolean(true)] break ... |
 | test.rs:196:13:198:14 | ExprStmt | test.rs:197:17:197:29 | ExprStmt |
+| test.rs:196:13:198:14 | ExprStmt | test.rs:201:13:201:13 | 1 |
+| test.rs:196:13:198:14 | ExprStmt | test.rs:203:13:203:13 | 0 |
 | test.rs:197:17:197:28 | [boolean(false)] break ... | test.rs:197:17:197:28 | [boolean(false)] break ... |
+| test.rs:197:17:197:28 | [boolean(false)] break ... | test.rs:203:13:203:13 | 0 |
 | test.rs:197:17:197:28 | [boolean(true)] break ... | test.rs:197:17:197:28 | [boolean(true)] break ... |
+| test.rs:197:17:197:28 | [boolean(true)] break ... | test.rs:201:13:201:13 | 1 |
 | test.rs:197:17:197:29 | ExprStmt | test.rs:195:9:204:9 | if ... {...} else {...} |
 | test.rs:197:17:197:29 | ExprStmt | test.rs:197:17:197:28 | [boolean(false)] break ... |
 | test.rs:197:17:197:29 | ExprStmt | test.rs:197:17:197:28 | [boolean(true)] break ... |
 | test.rs:197:17:197:29 | ExprStmt | test.rs:197:17:197:29 | ExprStmt |
+| test.rs:197:17:197:29 | ExprStmt | test.rs:201:13:201:13 | 1 |
+| test.rs:197:17:197:29 | ExprStmt | test.rs:203:13:203:13 | 0 |
+| test.rs:201:13:201:13 | 1 | test.rs:201:13:201:13 | 1 |
+| test.rs:203:13:203:13 | 0 | test.rs:203:13:203:13 | 0 |
 | test.rs:207:5:218:5 | enter fn test_if_loop2 | test.rs:207:5:218:5 | enter fn test_if_loop2 |
 | test.rs:207:5:218:5 | enter fn test_if_loop2 | test.rs:208:9:217:9 | if ... {...} else {...} |
 | test.rs:207:5:218:5 | enter fn test_if_loop2 | test.rs:209:13:211:13 | if ... {...} |
@@ -246,6 +288,8 @@ dominates
 | test.rs:207:5:218:5 | enter fn test_if_loop2 | test.rs:210:17:210:35 | [boolean(false)] break ''label ... |
 | test.rs:207:5:218:5 | enter fn test_if_loop2 | test.rs:210:17:210:35 | [boolean(true)] break ''label ... |
 | test.rs:207:5:218:5 | enter fn test_if_loop2 | test.rs:210:17:210:36 | ExprStmt |
+| test.rs:207:5:218:5 | enter fn test_if_loop2 | test.rs:214:13:214:13 | 1 |
+| test.rs:207:5:218:5 | enter fn test_if_loop2 | test.rs:216:13:216:13 | 0 |
 | test.rs:208:9:217:9 | if ... {...} else {...} | test.rs:208:9:217:9 | if ... {...} else {...} |
 | test.rs:209:13:211:13 | if ... {...} | test.rs:209:13:211:13 | if ... {...} |
 | test.rs:209:13:211:14 | ExprStmt | test.rs:208:9:217:9 | if ... {...} else {...} |
@@ -254,49 +298,75 @@ dominates
 | test.rs:209:13:211:14 | ExprStmt | test.rs:210:17:210:35 | [boolean(false)] break ''label ... |
 | test.rs:209:13:211:14 | ExprStmt | test.rs:210:17:210:35 | [boolean(true)] break ''label ... |
 | test.rs:209:13:211:14 | ExprStmt | test.rs:210:17:210:36 | ExprStmt |
+| test.rs:209:13:211:14 | ExprStmt | test.rs:214:13:214:13 | 1 |
+| test.rs:209:13:211:14 | ExprStmt | test.rs:216:13:216:13 | 0 |
 | test.rs:210:17:210:35 | [boolean(false)] break ''label ... | test.rs:210:17:210:35 | [boolean(false)] break ''label ... |
+| test.rs:210:17:210:35 | [boolean(false)] break ''label ... | test.rs:216:13:216:13 | 0 |
 | test.rs:210:17:210:35 | [boolean(true)] break ''label ... | test.rs:210:17:210:35 | [boolean(true)] break ''label ... |
+| test.rs:210:17:210:35 | [boolean(true)] break ''label ... | test.rs:214:13:214:13 | 1 |
 | test.rs:210:17:210:36 | ExprStmt | test.rs:208:9:217:9 | if ... {...} else {...} |
 | test.rs:210:17:210:36 | ExprStmt | test.rs:210:17:210:35 | [boolean(false)] break ''label ... |
 | test.rs:210:17:210:36 | ExprStmt | test.rs:210:17:210:35 | [boolean(true)] break ''label ... |
 | test.rs:210:17:210:36 | ExprStmt | test.rs:210:17:210:36 | ExprStmt |
+| test.rs:210:17:210:36 | ExprStmt | test.rs:214:13:214:13 | 1 |
+| test.rs:210:17:210:36 | ExprStmt | test.rs:216:13:216:13 | 0 |
+| test.rs:214:13:214:13 | 1 | test.rs:214:13:214:13 | 1 |
+| test.rs:216:13:216:13 | 0 | test.rs:216:13:216:13 | 0 |
 | test.rs:220:5:228:5 | enter fn test_labelled_block | test.rs:220:5:228:5 | enter fn test_labelled_block |
 | test.rs:220:5:228:5 | enter fn test_labelled_block | test.rs:221:9:227:9 | if ... {...} else {...} |
 | test.rs:220:5:228:5 | enter fn test_labelled_block | test.rs:222:13:222:30 | [boolean(false)] break ''block ... |
 | test.rs:220:5:228:5 | enter fn test_labelled_block | test.rs:222:13:222:30 | [boolean(true)] break ''block ... |
+| test.rs:220:5:228:5 | enter fn test_labelled_block | test.rs:224:13:224:13 | 1 |
+| test.rs:220:5:228:5 | enter fn test_labelled_block | test.rs:226:13:226:13 | 0 |
 | test.rs:221:9:227:9 | if ... {...} else {...} | test.rs:221:9:227:9 | if ... {...} else {...} |
 | test.rs:222:13:222:30 | [boolean(false)] break ''block ... | test.rs:222:13:222:30 | [boolean(false)] break ''block ... |
+| test.rs:222:13:222:30 | [boolean(false)] break ''block ... | test.rs:226:13:226:13 | 0 |
 | test.rs:222:13:222:30 | [boolean(true)] break ''block ... | test.rs:222:13:222:30 | [boolean(true)] break ''block ... |
+| test.rs:222:13:222:30 | [boolean(true)] break ''block ... | test.rs:224:13:224:13 | 1 |
+| test.rs:224:13:224:13 | 1 | test.rs:224:13:224:13 | 1 |
+| test.rs:226:13:226:13 | 0 | test.rs:226:13:226:13 | 0 |
 | test.rs:233:5:236:5 | enter fn test_and_operator | test.rs:233:5:236:5 | enter fn test_and_operator |
 | test.rs:233:5:236:5 | enter fn test_and_operator | test.rs:234:17:234:22 | [boolean(false)] ... && ... |
 | test.rs:233:5:236:5 | enter fn test_and_operator | test.rs:234:17:234:22 | [boolean(true)] ... && ... |
 | test.rs:233:5:236:5 | enter fn test_and_operator | test.rs:234:17:234:27 | ... && ... |
 | test.rs:233:5:236:5 | enter fn test_and_operator | test.rs:234:22:234:22 | b |
+| test.rs:233:5:236:5 | enter fn test_and_operator | test.rs:234:27:234:27 | c |
 | test.rs:234:17:234:22 | [boolean(false)] ... && ... | test.rs:234:17:234:22 | [boolean(false)] ... && ... |
 | test.rs:234:17:234:22 | [boolean(true)] ... && ... | test.rs:234:17:234:22 | [boolean(true)] ... && ... |
+| test.rs:234:17:234:22 | [boolean(true)] ... && ... | test.rs:234:27:234:27 | c |
 | test.rs:234:17:234:27 | ... && ... | test.rs:234:17:234:27 | ... && ... |
 | test.rs:234:22:234:22 | b | test.rs:234:17:234:22 | [boolean(true)] ... && ... |
 | test.rs:234:22:234:22 | b | test.rs:234:22:234:22 | b |
+| test.rs:234:22:234:22 | b | test.rs:234:27:234:27 | c |
+| test.rs:234:27:234:27 | c | test.rs:234:27:234:27 | c |
 | test.rs:238:5:241:5 | enter fn test_or_operator | test.rs:238:5:241:5 | enter fn test_or_operator |
 | test.rs:238:5:241:5 | enter fn test_or_operator | test.rs:239:17:239:22 | [boolean(false)] ... \|\| ... |
 | test.rs:238:5:241:5 | enter fn test_or_operator | test.rs:239:17:239:22 | [boolean(true)] ... \|\| ... |
 | test.rs:238:5:241:5 | enter fn test_or_operator | test.rs:239:17:239:27 | ... \|\| ... |
 | test.rs:238:5:241:5 | enter fn test_or_operator | test.rs:239:22:239:22 | b |
+| test.rs:238:5:241:5 | enter fn test_or_operator | test.rs:239:27:239:27 | c |
 | test.rs:239:17:239:22 | [boolean(false)] ... \|\| ... | test.rs:239:17:239:22 | [boolean(false)] ... \|\| ... |
+| test.rs:239:17:239:22 | [boolean(false)] ... \|\| ... | test.rs:239:27:239:27 | c |
 | test.rs:239:17:239:22 | [boolean(true)] ... \|\| ... | test.rs:239:17:239:22 | [boolean(true)] ... \|\| ... |
 | test.rs:239:17:239:27 | ... \|\| ... | test.rs:239:17:239:27 | ... \|\| ... |
 | test.rs:239:22:239:22 | b | test.rs:239:17:239:22 | [boolean(false)] ... \|\| ... |
 | test.rs:239:22:239:22 | b | test.rs:239:22:239:22 | b |
+| test.rs:239:22:239:22 | b | test.rs:239:27:239:27 | c |
+| test.rs:239:27:239:27 | c | test.rs:239:27:239:27 | c |
 | test.rs:243:5:246:5 | enter fn test_or_operator_2 | test.rs:243:5:246:5 | enter fn test_or_operator_2 |
 | test.rs:243:5:246:5 | enter fn test_or_operator_2 | test.rs:244:17:244:30 | [boolean(false)] ... \|\| ... |
 | test.rs:243:5:246:5 | enter fn test_or_operator_2 | test.rs:244:17:244:30 | [boolean(true)] ... \|\| ... |
 | test.rs:243:5:246:5 | enter fn test_or_operator_2 | test.rs:244:17:244:35 | ... \|\| ... |
 | test.rs:243:5:246:5 | enter fn test_or_operator_2 | test.rs:244:23:244:23 | b |
+| test.rs:243:5:246:5 | enter fn test_or_operator_2 | test.rs:244:35:244:35 | c |
 | test.rs:244:17:244:30 | [boolean(false)] ... \|\| ... | test.rs:244:17:244:30 | [boolean(false)] ... \|\| ... |
+| test.rs:244:17:244:30 | [boolean(false)] ... \|\| ... | test.rs:244:35:244:35 | c |
 | test.rs:244:17:244:30 | [boolean(true)] ... \|\| ... | test.rs:244:17:244:30 | [boolean(true)] ... \|\| ... |
 | test.rs:244:17:244:35 | ... \|\| ... | test.rs:244:17:244:35 | ... \|\| ... |
 | test.rs:244:23:244:23 | b | test.rs:244:17:244:30 | [boolean(false)] ... \|\| ... |
 | test.rs:244:23:244:23 | b | test.rs:244:23:244:23 | b |
+| test.rs:244:23:244:23 | b | test.rs:244:35:244:35 | c |
+| test.rs:244:35:244:35 | c | test.rs:244:35:244:35 | c |
 | test.rs:248:5:251:5 | enter fn test_not_operator | test.rs:248:5:251:5 | enter fn test_not_operator |
 | test.rs:253:5:259:5 | enter fn test_if_and_operator | test.rs:253:5:259:5 | enter fn test_if_and_operator |
 | test.rs:253:5:259:5 | enter fn test_if_and_operator | test.rs:254:9:258:9 | if ... {...} else {...} |
@@ -305,15 +375,29 @@ dominates
 | test.rs:253:5:259:5 | enter fn test_if_and_operator | test.rs:254:12:254:22 | [boolean(false)] ... && ... |
 | test.rs:253:5:259:5 | enter fn test_if_and_operator | test.rs:254:12:254:22 | [boolean(true)] ... && ... |
 | test.rs:253:5:259:5 | enter fn test_if_and_operator | test.rs:254:17:254:17 | b |
+| test.rs:253:5:259:5 | enter fn test_if_and_operator | test.rs:254:22:254:22 | c |
+| test.rs:253:5:259:5 | enter fn test_if_and_operator | test.rs:255:13:255:16 | true |
+| test.rs:253:5:259:5 | enter fn test_if_and_operator | test.rs:257:13:257:17 | false |
 | test.rs:254:9:258:9 | if ... {...} else {...} | test.rs:254:9:258:9 | if ... {...} else {...} |
 | test.rs:254:12:254:17 | [boolean(false)] ... && ... | test.rs:254:12:254:17 | [boolean(false)] ... && ... |
 | test.rs:254:12:254:17 | [boolean(true)] ... && ... | test.rs:254:12:254:17 | [boolean(true)] ... && ... |
 | test.rs:254:12:254:17 | [boolean(true)] ... && ... | test.rs:254:12:254:22 | [boolean(true)] ... && ... |
+| test.rs:254:12:254:17 | [boolean(true)] ... && ... | test.rs:254:22:254:22 | c |
+| test.rs:254:12:254:17 | [boolean(true)] ... && ... | test.rs:255:13:255:16 | true |
 | test.rs:254:12:254:22 | [boolean(false)] ... && ... | test.rs:254:12:254:22 | [boolean(false)] ... && ... |
+| test.rs:254:12:254:22 | [boolean(false)] ... && ... | test.rs:257:13:257:17 | false |
 | test.rs:254:12:254:22 | [boolean(true)] ... && ... | test.rs:254:12:254:22 | [boolean(true)] ... && ... |
+| test.rs:254:12:254:22 | [boolean(true)] ... && ... | test.rs:255:13:255:16 | true |
 | test.rs:254:17:254:17 | b | test.rs:254:12:254:17 | [boolean(true)] ... && ... |
 | test.rs:254:17:254:17 | b | test.rs:254:12:254:22 | [boolean(true)] ... && ... |
 | test.rs:254:17:254:17 | b | test.rs:254:17:254:17 | b |
+| test.rs:254:17:254:17 | b | test.rs:254:22:254:22 | c |
+| test.rs:254:17:254:17 | b | test.rs:255:13:255:16 | true |
+| test.rs:254:22:254:22 | c | test.rs:254:12:254:22 | [boolean(true)] ... && ... |
+| test.rs:254:22:254:22 | c | test.rs:254:22:254:22 | c |
+| test.rs:254:22:254:22 | c | test.rs:255:13:255:16 | true |
+| test.rs:255:13:255:16 | true | test.rs:255:13:255:16 | true |
+| test.rs:257:13:257:17 | false | test.rs:257:13:257:17 | false |
 | test.rs:261:5:267:5 | enter fn test_if_or_operator | test.rs:261:5:267:5 | enter fn test_if_or_operator |
 | test.rs:261:5:267:5 | enter fn test_if_or_operator | test.rs:262:9:266:9 | if ... {...} else {...} |
 | test.rs:261:5:267:5 | enter fn test_if_or_operator | test.rs:262:12:262:17 | [boolean(false)] ... \|\| ... |
@@ -321,22 +405,42 @@ dominates
 | test.rs:261:5:267:5 | enter fn test_if_or_operator | test.rs:262:12:262:22 | [boolean(false)] ... \|\| ... |
 | test.rs:261:5:267:5 | enter fn test_if_or_operator | test.rs:262:12:262:22 | [boolean(true)] ... \|\| ... |
 | test.rs:261:5:267:5 | enter fn test_if_or_operator | test.rs:262:17:262:17 | b |
+| test.rs:261:5:267:5 | enter fn test_if_or_operator | test.rs:262:22:262:22 | c |
+| test.rs:261:5:267:5 | enter fn test_if_or_operator | test.rs:263:13:263:16 | true |
+| test.rs:261:5:267:5 | enter fn test_if_or_operator | test.rs:265:13:265:17 | false |
 | test.rs:262:9:266:9 | if ... {...} else {...} | test.rs:262:9:266:9 | if ... {...} else {...} |
 | test.rs:262:12:262:17 | [boolean(false)] ... \|\| ... | test.rs:262:12:262:17 | [boolean(false)] ... \|\| ... |
 | test.rs:262:12:262:17 | [boolean(false)] ... \|\| ... | test.rs:262:12:262:22 | [boolean(false)] ... \|\| ... |
+| test.rs:262:12:262:17 | [boolean(false)] ... \|\| ... | test.rs:262:22:262:22 | c |
+| test.rs:262:12:262:17 | [boolean(false)] ... \|\| ... | test.rs:265:13:265:17 | false |
 | test.rs:262:12:262:17 | [boolean(true)] ... \|\| ... | test.rs:262:12:262:17 | [boolean(true)] ... \|\| ... |
 | test.rs:262:12:262:22 | [boolean(false)] ... \|\| ... | test.rs:262:12:262:22 | [boolean(false)] ... \|\| ... |
+| test.rs:262:12:262:22 | [boolean(false)] ... \|\| ... | test.rs:265:13:265:17 | false |
 | test.rs:262:12:262:22 | [boolean(true)] ... \|\| ... | test.rs:262:12:262:22 | [boolean(true)] ... \|\| ... |
+| test.rs:262:12:262:22 | [boolean(true)] ... \|\| ... | test.rs:263:13:263:16 | true |
 | test.rs:262:17:262:17 | b | test.rs:262:12:262:17 | [boolean(false)] ... \|\| ... |
 | test.rs:262:17:262:17 | b | test.rs:262:12:262:22 | [boolean(false)] ... \|\| ... |
 | test.rs:262:17:262:17 | b | test.rs:262:17:262:17 | b |
+| test.rs:262:17:262:17 | b | test.rs:262:22:262:22 | c |
+| test.rs:262:17:262:17 | b | test.rs:265:13:265:17 | false |
+| test.rs:262:22:262:22 | c | test.rs:262:12:262:22 | [boolean(false)] ... \|\| ... |
+| test.rs:262:22:262:22 | c | test.rs:262:22:262:22 | c |
+| test.rs:262:22:262:22 | c | test.rs:265:13:265:17 | false |
+| test.rs:263:13:263:16 | true | test.rs:263:13:263:16 | true |
+| test.rs:265:13:265:17 | false | test.rs:265:13:265:17 | false |
 | test.rs:269:5:275:5 | enter fn test_if_not_operator | test.rs:269:5:275:5 | enter fn test_if_not_operator |
 | test.rs:269:5:275:5 | enter fn test_if_not_operator | test.rs:270:9:274:9 | if ... {...} else {...} |
 | test.rs:269:5:275:5 | enter fn test_if_not_operator | test.rs:270:12:270:13 | [boolean(false)] ! ... |
 | test.rs:269:5:275:5 | enter fn test_if_not_operator | test.rs:270:12:270:13 | [boolean(true)] ! ... |
+| test.rs:269:5:275:5 | enter fn test_if_not_operator | test.rs:271:13:271:16 | true |
+| test.rs:269:5:275:5 | enter fn test_if_not_operator | test.rs:273:13:273:17 | false |
 | test.rs:270:9:274:9 | if ... {...} else {...} | test.rs:270:9:274:9 | if ... {...} else {...} |
 | test.rs:270:12:270:13 | [boolean(false)] ! ... | test.rs:270:12:270:13 | [boolean(false)] ! ... |
+| test.rs:270:12:270:13 | [boolean(false)] ! ... | test.rs:273:13:273:17 | false |
 | test.rs:270:12:270:13 | [boolean(true)] ! ... | test.rs:270:12:270:13 | [boolean(true)] ! ... |
+| test.rs:270:12:270:13 | [boolean(true)] ! ... | test.rs:271:13:271:16 | true |
+| test.rs:271:13:271:16 | true | test.rs:271:13:271:16 | true |
+| test.rs:273:13:273:17 | false | test.rs:273:13:273:17 | false |
 | test.rs:277:5:279:5 | enter fn test_and_return | test.rs:277:5:279:5 | enter fn test_and_return |
 | test.rs:277:5:279:5 | enter fn test_and_return | test.rs:277:5:279:5 | exit fn test_and_return (normal) |
 | test.rs:277:5:279:5 | enter fn test_and_return | test.rs:278:9:278:19 | ... && ... |
@@ -346,11 +450,21 @@ dominates
 | test.rs:278:14:278:19 | return | test.rs:278:14:278:19 | return |
 | test.rs:281:5:286:5 | enter fn test_and_true | test.rs:281:5:286:5 | enter fn test_and_true |
 | test.rs:281:5:286:5 | enter fn test_and_true | test.rs:281:5:286:5 | exit fn test_and_true (normal) |
+| test.rs:281:5:286:5 | enter fn test_and_true | test.rs:282:9:284:9 | if ... {...} |
 | test.rs:281:5:286:5 | enter fn test_and_true | test.rs:282:13:282:21 | [boolean(false)] ... && ... |
+| test.rs:281:5:286:5 | enter fn test_and_true | test.rs:282:13:282:21 | [boolean(true)] ... && ... |
 | test.rs:281:5:286:5 | enter fn test_and_true | test.rs:282:18:282:21 | true |
+| test.rs:281:5:286:5 | enter fn test_and_true | test.rs:283:13:283:21 | ExprStmt |
 | test.rs:281:5:286:5 | exit fn test_and_true (normal) | test.rs:281:5:286:5 | exit fn test_and_true (normal) |
+| test.rs:282:9:284:9 | if ... {...} | test.rs:282:9:284:9 | if ... {...} |
+| test.rs:282:13:282:21 | [boolean(false)] ... && ... | test.rs:282:9:284:9 | if ... {...} |
 | test.rs:282:13:282:21 | [boolean(false)] ... && ... | test.rs:282:13:282:21 | [boolean(false)] ... && ... |
+| test.rs:282:13:282:21 | [boolean(true)] ... && ... | test.rs:282:13:282:21 | [boolean(true)] ... && ... |
+| test.rs:282:13:282:21 | [boolean(true)] ... && ... | test.rs:283:13:283:21 | ExprStmt |
+| test.rs:282:18:282:21 | true | test.rs:282:13:282:21 | [boolean(true)] ... && ... |
 | test.rs:282:18:282:21 | true | test.rs:282:18:282:21 | true |
+| test.rs:282:18:282:21 | true | test.rs:283:13:283:21 | ExprStmt |
+| test.rs:283:13:283:21 | ExprStmt | test.rs:283:13:283:21 | ExprStmt |
 | test.rs:292:5:294:5 | enter fn test_question_mark_operator_1 | test.rs:292:5:294:5 | enter fn test_question_mark_operator_1 |
 | test.rs:292:5:294:5 | enter fn test_question_mark_operator_1 | test.rs:292:5:294:5 | exit fn test_question_mark_operator_1 (normal) |
 | test.rs:292:5:294:5 | enter fn test_question_mark_operator_1 | test.rs:293:32:293:32 | 4 |
@@ -408,12 +522,16 @@ dominates
 | test.rs:326:5:331:5 | enter fn test_match_and | test.rs:327:10:330:9 | [boolean(true)] match r { ... } |
 | test.rs:326:5:331:5 | enter fn test_match_and | test.rs:328:18:328:18 | a |
 | test.rs:326:5:331:5 | enter fn test_match_and | test.rs:329:13:329:13 | _ |
+| test.rs:326:5:331:5 | enter fn test_match_and | test.rs:330:15:330:18 | cond |
 | test.rs:327:9:330:18 | ... && ... | test.rs:327:9:330:18 | ... && ... |
 | test.rs:327:10:330:9 | [boolean(false)] match r { ... } | test.rs:327:10:330:9 | [boolean(false)] match r { ... } |
 | test.rs:327:10:330:9 | [boolean(true)] match r { ... } | test.rs:327:10:330:9 | [boolean(true)] match r { ... } |
+| test.rs:327:10:330:9 | [boolean(true)] match r { ... } | test.rs:330:15:330:18 | cond |
 | test.rs:328:18:328:18 | a | test.rs:327:10:330:9 | [boolean(true)] match r { ... } |
 | test.rs:328:18:328:18 | a | test.rs:328:18:328:18 | a |
+| test.rs:328:18:328:18 | a | test.rs:330:15:330:18 | cond |
 | test.rs:329:13:329:13 | _ | test.rs:329:13:329:13 | _ |
+| test.rs:330:15:330:18 | cond | test.rs:330:15:330:18 | cond |
 | test.rs:333:5:338:5 | enter fn test_match_with_no_arms | test.rs:333:5:338:5 | enter fn test_match_with_no_arms |
 | test.rs:333:5:338:5 | enter fn test_match_with_no_arms | test.rs:334:9:337:9 | match r { ... } |
 | test.rs:333:5:338:5 | enter fn test_match_with_no_arms | test.rs:335:16:335:20 | value |
@@ -490,16 +608,23 @@ dominates
 | test.rs:411:17:411:41 | ExprStmt | test.rs:411:17:411:41 | ExprStmt |
 | test.rs:421:5:423:5 | enter fn add_two | test.rs:421:5:423:5 | enter fn add_two |
 | test.rs:427:5:435:5 | enter fn const_block_assert | test.rs:427:5:435:5 | enter fn const_block_assert |
+| test.rs:427:5:435:5 | enter fn const_block_assert | test.rs:431:13:431:49 | ExprStmt |
 | test.rs:427:5:435:5 | enter fn const_block_assert | test.rs:431:21:431:48 | [boolean(false)] ! ... |
 | test.rs:427:5:435:5 | enter fn const_block_assert | test.rs:431:21:431:48 | [boolean(true)] ! ... |
 | test.rs:427:5:435:5 | enter fn const_block_assert | test.rs:431:21:431:48 | if ... {...} |
+| test.rs:431:13:431:49 | ExprStmt | test.rs:431:13:431:49 | ExprStmt |
 | test.rs:431:13:431:49 | enter fn panic_cold_explicit | test.rs:431:13:431:49 | enter fn panic_cold_explicit |
 | test.rs:431:21:431:48 | [boolean(false)] ! ... | test.rs:431:21:431:48 | [boolean(false)] ! ... |
+| test.rs:431:21:431:48 | [boolean(true)] ! ... | test.rs:431:13:431:49 | ExprStmt |
 | test.rs:431:21:431:48 | [boolean(true)] ! ... | test.rs:431:21:431:48 | [boolean(true)] ! ... |
 | test.rs:431:21:431:48 | if ... {...} | test.rs:431:21:431:48 | if ... {...} |
 | test.rs:437:5:446:5 | enter fn const_block_panic | test.rs:437:5:446:5 | enter fn const_block_panic |
+| test.rs:437:5:446:5 | enter fn const_block_panic | test.rs:439:9:444:9 | if false {...} |
+| test.rs:439:9:444:9 | if false {...} | test.rs:439:9:444:9 | if false {...} |
 | test.rs:442:17:442:24 | enter fn panic_cold_explicit | test.rs:442:17:442:24 | enter fn panic_cold_explicit |
 | test.rs:449:1:454:1 | enter fn dead_code | test.rs:449:1:454:1 | enter fn dead_code |
+| test.rs:449:1:454:1 | enter fn dead_code | test.rs:451:9:451:17 | ExprStmt |
+| test.rs:451:9:451:17 | ExprStmt | test.rs:451:9:451:17 | ExprStmt |
 | test.rs:456:1:456:16 | enter fn do_thing | test.rs:456:1:456:16 | enter fn do_thing |
 | test.rs:458:1:460:1 | enter fn condition_not_met | test.rs:458:1:460:1 | enter fn condition_not_met |
 | test.rs:462:1:462:21 | enter fn do_next_thing | test.rs:462:1:462:21 | enter fn do_next_thing |
@@ -671,6 +796,8 @@ postDominance
 | test.rs:153:9:157:9 | if ... {...} else {...} | test.rs:153:39:153:48 | [boolean(false)] { ... } |
 | test.rs:153:9:157:9 | if ... {...} else {...} | test.rs:153:39:153:48 | [boolean(true)] { ... } |
 | test.rs:153:9:157:9 | if ... {...} else {...} | test.rs:153:41:153:41 | a |
+| test.rs:153:9:157:9 | if ... {...} else {...} | test.rs:154:13:154:13 | 1 |
+| test.rs:153:9:157:9 | if ... {...} else {...} | test.rs:156:13:156:13 | 0 |
 | test.rs:153:13:153:48 | [boolean(false)] if ... {...} else {...} | test.rs:153:13:153:48 | [boolean(false)] if ... {...} else {...} |
 | test.rs:153:13:153:48 | [boolean(false)] if ... {...} else {...} | test.rs:153:22:153:32 | [boolean(false)] { ... } |
 | test.rs:153:13:153:48 | [boolean(false)] if ... {...} else {...} | test.rs:153:39:153:48 | [boolean(false)] { ... } |
@@ -683,27 +810,61 @@ postDominance
 | test.rs:153:39:153:48 | [boolean(false)] { ... } | test.rs:153:39:153:48 | [boolean(false)] { ... } |
 | test.rs:153:39:153:48 | [boolean(true)] { ... } | test.rs:153:39:153:48 | [boolean(true)] { ... } |
 | test.rs:153:41:153:41 | a | test.rs:153:41:153:41 | a |
+| test.rs:154:13:154:13 | 1 | test.rs:153:13:153:48 | [boolean(true)] if ... {...} else {...} |
+| test.rs:154:13:154:13 | 1 | test.rs:153:22:153:32 | [boolean(true)] { ... } |
+| test.rs:154:13:154:13 | 1 | test.rs:153:39:153:48 | [boolean(true)] { ... } |
+| test.rs:154:13:154:13 | 1 | test.rs:154:13:154:13 | 1 |
+| test.rs:156:13:156:13 | 0 | test.rs:153:13:153:48 | [boolean(false)] if ... {...} else {...} |
+| test.rs:156:13:156:13 | 0 | test.rs:153:22:153:32 | [boolean(false)] { ... } |
+| test.rs:156:13:156:13 | 0 | test.rs:153:39:153:48 | [boolean(false)] { ... } |
+| test.rs:156:13:156:13 | 0 | test.rs:156:13:156:13 | 0 |
 | test.rs:160:5:169:5 | enter fn test_nested_if_match | test.rs:160:5:169:5 | enter fn test_nested_if_match |
 | test.rs:161:9:168:9 | if ... {...} else {...} | test.rs:160:5:169:5 | enter fn test_nested_if_match |
 | test.rs:161:9:168:9 | if ... {...} else {...} | test.rs:161:9:168:9 | if ... {...} else {...} |
+| test.rs:161:9:168:9 | if ... {...} else {...} | test.rs:161:13:164:9 | [boolean(false)] match a { ... } |
+| test.rs:161:9:168:9 | if ... {...} else {...} | test.rs:161:13:164:9 | [boolean(true)] match a { ... } |
 | test.rs:161:9:168:9 | if ... {...} else {...} | test.rs:162:18:162:21 | true |
 | test.rs:161:9:168:9 | if ... {...} else {...} | test.rs:163:13:163:13 | _ |
+| test.rs:161:9:168:9 | if ... {...} else {...} | test.rs:165:13:165:13 | 1 |
+| test.rs:161:9:168:9 | if ... {...} else {...} | test.rs:167:13:167:13 | 0 |
+| test.rs:161:13:164:9 | [boolean(false)] match a { ... } | test.rs:161:13:164:9 | [boolean(false)] match a { ... } |
+| test.rs:161:13:164:9 | [boolean(false)] match a { ... } | test.rs:163:13:163:13 | _ |
+| test.rs:161:13:164:9 | [boolean(true)] match a { ... } | test.rs:161:13:164:9 | [boolean(true)] match a { ... } |
+| test.rs:161:13:164:9 | [boolean(true)] match a { ... } | test.rs:162:18:162:21 | true |
 | test.rs:162:18:162:21 | true | test.rs:162:18:162:21 | true |
 | test.rs:163:13:163:13 | _ | test.rs:163:13:163:13 | _ |
+| test.rs:165:13:165:13 | 1 | test.rs:161:13:164:9 | [boolean(true)] match a { ... } |
+| test.rs:165:13:165:13 | 1 | test.rs:162:18:162:21 | true |
+| test.rs:165:13:165:13 | 1 | test.rs:165:13:165:13 | 1 |
+| test.rs:167:13:167:13 | 0 | test.rs:161:13:164:9 | [boolean(false)] match a { ... } |
+| test.rs:167:13:167:13 | 0 | test.rs:163:13:163:13 | _ |
+| test.rs:167:13:167:13 | 0 | test.rs:167:13:167:13 | 0 |
 | test.rs:171:5:180:5 | enter fn test_nested_if_block | test.rs:171:5:180:5 | enter fn test_nested_if_block |
 | test.rs:172:9:179:9 | if ... {...} else {...} | test.rs:171:5:180:5 | enter fn test_nested_if_block |
 | test.rs:172:9:179:9 | if ... {...} else {...} | test.rs:172:9:179:9 | if ... {...} else {...} |
 | test.rs:172:9:179:9 | if ... {...} else {...} | test.rs:172:12:175:9 | [boolean(false)] { ... } |
 | test.rs:172:9:179:9 | if ... {...} else {...} | test.rs:172:12:175:9 | [boolean(true)] { ... } |
+| test.rs:172:9:179:9 | if ... {...} else {...} | test.rs:176:13:176:13 | 1 |
+| test.rs:172:9:179:9 | if ... {...} else {...} | test.rs:178:13:178:13 | 0 |
 | test.rs:172:12:175:9 | [boolean(false)] { ... } | test.rs:172:12:175:9 | [boolean(false)] { ... } |
 | test.rs:172:12:175:9 | [boolean(true)] { ... } | test.rs:172:12:175:9 | [boolean(true)] { ... } |
+| test.rs:176:13:176:13 | 1 | test.rs:172:12:175:9 | [boolean(true)] { ... } |
+| test.rs:176:13:176:13 | 1 | test.rs:176:13:176:13 | 1 |
+| test.rs:178:13:178:13 | 0 | test.rs:172:12:175:9 | [boolean(false)] { ... } |
+| test.rs:178:13:178:13 | 0 | test.rs:178:13:178:13 | 0 |
 | test.rs:182:5:192:5 | enter fn test_if_assignment | test.rs:182:5:192:5 | enter fn test_if_assignment |
 | test.rs:184:9:191:9 | if ... {...} else {...} | test.rs:182:5:192:5 | enter fn test_if_assignment |
 | test.rs:184:9:191:9 | if ... {...} else {...} | test.rs:184:9:191:9 | if ... {...} else {...} |
 | test.rs:184:9:191:9 | if ... {...} else {...} | test.rs:184:12:187:9 | [boolean(false)] { ... } |
 | test.rs:184:9:191:9 | if ... {...} else {...} | test.rs:184:12:187:9 | [boolean(true)] { ... } |
+| test.rs:184:9:191:9 | if ... {...} else {...} | test.rs:188:13:188:13 | 1 |
+| test.rs:184:9:191:9 | if ... {...} else {...} | test.rs:190:13:190:13 | 0 |
 | test.rs:184:12:187:9 | [boolean(false)] { ... } | test.rs:184:12:187:9 | [boolean(false)] { ... } |
 | test.rs:184:12:187:9 | [boolean(true)] { ... } | test.rs:184:12:187:9 | [boolean(true)] { ... } |
+| test.rs:188:13:188:13 | 1 | test.rs:184:12:187:9 | [boolean(true)] { ... } |
+| test.rs:188:13:188:13 | 1 | test.rs:188:13:188:13 | 1 |
+| test.rs:190:13:190:13 | 0 | test.rs:184:12:187:9 | [boolean(false)] { ... } |
+| test.rs:190:13:190:13 | 0 | test.rs:190:13:190:13 | 0 |
 | test.rs:194:5:205:5 | enter fn test_if_loop1 | test.rs:194:5:205:5 | enter fn test_if_loop1 |
 | test.rs:195:9:204:9 | if ... {...} else {...} | test.rs:194:5:205:5 | enter fn test_if_loop1 |
 | test.rs:195:9:204:9 | if ... {...} else {...} | test.rs:195:9:204:9 | if ... {...} else {...} |
@@ -712,6 +873,8 @@ postDominance
 | test.rs:195:9:204:9 | if ... {...} else {...} | test.rs:197:17:197:28 | [boolean(false)] break ... |
 | test.rs:195:9:204:9 | if ... {...} else {...} | test.rs:197:17:197:28 | [boolean(true)] break ... |
 | test.rs:195:9:204:9 | if ... {...} else {...} | test.rs:197:17:197:29 | ExprStmt |
+| test.rs:195:9:204:9 | if ... {...} else {...} | test.rs:201:13:201:13 | 1 |
+| test.rs:195:9:204:9 | if ... {...} else {...} | test.rs:203:13:203:13 | 0 |
 | test.rs:196:13:198:13 | if ... {...} | test.rs:196:13:198:13 | if ... {...} |
 | test.rs:196:13:198:14 | ExprStmt | test.rs:194:5:205:5 | enter fn test_if_loop1 |
 | test.rs:196:13:198:14 | ExprStmt | test.rs:196:13:198:13 | if ... {...} |
@@ -722,6 +885,10 @@ postDominance
 | test.rs:197:17:197:29 | ExprStmt | test.rs:196:13:198:13 | if ... {...} |
 | test.rs:197:17:197:29 | ExprStmt | test.rs:196:13:198:14 | ExprStmt |
 | test.rs:197:17:197:29 | ExprStmt | test.rs:197:17:197:29 | ExprStmt |
+| test.rs:201:13:201:13 | 1 | test.rs:197:17:197:28 | [boolean(true)] break ... |
+| test.rs:201:13:201:13 | 1 | test.rs:201:13:201:13 | 1 |
+| test.rs:203:13:203:13 | 0 | test.rs:197:17:197:28 | [boolean(false)] break ... |
+| test.rs:203:13:203:13 | 0 | test.rs:203:13:203:13 | 0 |
 | test.rs:207:5:218:5 | enter fn test_if_loop2 | test.rs:207:5:218:5 | enter fn test_if_loop2 |
 | test.rs:208:9:217:9 | if ... {...} else {...} | test.rs:207:5:218:5 | enter fn test_if_loop2 |
 | test.rs:208:9:217:9 | if ... {...} else {...} | test.rs:208:9:217:9 | if ... {...} else {...} |
@@ -730,6 +897,8 @@ postDominance
 | test.rs:208:9:217:9 | if ... {...} else {...} | test.rs:210:17:210:35 | [boolean(false)] break ''label ... |
 | test.rs:208:9:217:9 | if ... {...} else {...} | test.rs:210:17:210:35 | [boolean(true)] break ''label ... |
 | test.rs:208:9:217:9 | if ... {...} else {...} | test.rs:210:17:210:36 | ExprStmt |
+| test.rs:208:9:217:9 | if ... {...} else {...} | test.rs:214:13:214:13 | 1 |
+| test.rs:208:9:217:9 | if ... {...} else {...} | test.rs:216:13:216:13 | 0 |
 | test.rs:209:13:211:13 | if ... {...} | test.rs:209:13:211:13 | if ... {...} |
 | test.rs:209:13:211:14 | ExprStmt | test.rs:207:5:218:5 | enter fn test_if_loop2 |
 | test.rs:209:13:211:14 | ExprStmt | test.rs:209:13:211:13 | if ... {...} |
@@ -740,13 +909,23 @@ postDominance
 | test.rs:210:17:210:36 | ExprStmt | test.rs:209:13:211:13 | if ... {...} |
 | test.rs:210:17:210:36 | ExprStmt | test.rs:209:13:211:14 | ExprStmt |
 | test.rs:210:17:210:36 | ExprStmt | test.rs:210:17:210:36 | ExprStmt |
+| test.rs:214:13:214:13 | 1 | test.rs:210:17:210:35 | [boolean(true)] break ''label ... |
+| test.rs:214:13:214:13 | 1 | test.rs:214:13:214:13 | 1 |
+| test.rs:216:13:216:13 | 0 | test.rs:210:17:210:35 | [boolean(false)] break ''label ... |
+| test.rs:216:13:216:13 | 0 | test.rs:216:13:216:13 | 0 |
 | test.rs:220:5:228:5 | enter fn test_labelled_block | test.rs:220:5:228:5 | enter fn test_labelled_block |
 | test.rs:221:9:227:9 | if ... {...} else {...} | test.rs:220:5:228:5 | enter fn test_labelled_block |
 | test.rs:221:9:227:9 | if ... {...} else {...} | test.rs:221:9:227:9 | if ... {...} else {...} |
 | test.rs:221:9:227:9 | if ... {...} else {...} | test.rs:222:13:222:30 | [boolean(false)] break ''block ... |
 | test.rs:221:9:227:9 | if ... {...} else {...} | test.rs:222:13:222:30 | [boolean(true)] break ''block ... |
+| test.rs:221:9:227:9 | if ... {...} else {...} | test.rs:224:13:224:13 | 1 |
+| test.rs:221:9:227:9 | if ... {...} else {...} | test.rs:226:13:226:13 | 0 |
 | test.rs:222:13:222:30 | [boolean(false)] break ''block ... | test.rs:222:13:222:30 | [boolean(false)] break ''block ... |
 | test.rs:222:13:222:30 | [boolean(true)] break ''block ... | test.rs:222:13:222:30 | [boolean(true)] break ''block ... |
+| test.rs:224:13:224:13 | 1 | test.rs:222:13:222:30 | [boolean(true)] break ''block ... |
+| test.rs:224:13:224:13 | 1 | test.rs:224:13:224:13 | 1 |
+| test.rs:226:13:226:13 | 0 | test.rs:222:13:222:30 | [boolean(false)] break ''block ... |
+| test.rs:226:13:226:13 | 0 | test.rs:226:13:226:13 | 0 |
 | test.rs:233:5:236:5 | enter fn test_and_operator | test.rs:233:5:236:5 | enter fn test_and_operator |
 | test.rs:234:17:234:22 | [boolean(false)] ... && ... | test.rs:234:17:234:22 | [boolean(false)] ... && ... |
 | test.rs:234:17:234:22 | [boolean(true)] ... && ... | test.rs:234:17:234:22 | [boolean(true)] ... && ... |
@@ -755,7 +934,10 @@ postDominance
 | test.rs:234:17:234:27 | ... && ... | test.rs:234:17:234:22 | [boolean(true)] ... && ... |
 | test.rs:234:17:234:27 | ... && ... | test.rs:234:17:234:27 | ... && ... |
 | test.rs:234:17:234:27 | ... && ... | test.rs:234:22:234:22 | b |
+| test.rs:234:17:234:27 | ... && ... | test.rs:234:27:234:27 | c |
 | test.rs:234:22:234:22 | b | test.rs:234:22:234:22 | b |
+| test.rs:234:27:234:27 | c | test.rs:234:17:234:22 | [boolean(true)] ... && ... |
+| test.rs:234:27:234:27 | c | test.rs:234:27:234:27 | c |
 | test.rs:238:5:241:5 | enter fn test_or_operator | test.rs:238:5:241:5 | enter fn test_or_operator |
 | test.rs:239:17:239:22 | [boolean(false)] ... \|\| ... | test.rs:239:17:239:22 | [boolean(false)] ... \|\| ... |
 | test.rs:239:17:239:22 | [boolean(true)] ... \|\| ... | test.rs:239:17:239:22 | [boolean(true)] ... \|\| ... |
@@ -764,7 +946,10 @@ postDominance
 | test.rs:239:17:239:27 | ... \|\| ... | test.rs:239:17:239:22 | [boolean(true)] ... \|\| ... |
 | test.rs:239:17:239:27 | ... \|\| ... | test.rs:239:17:239:27 | ... \|\| ... |
 | test.rs:239:17:239:27 | ... \|\| ... | test.rs:239:22:239:22 | b |
+| test.rs:239:17:239:27 | ... \|\| ... | test.rs:239:27:239:27 | c |
 | test.rs:239:22:239:22 | b | test.rs:239:22:239:22 | b |
+| test.rs:239:27:239:27 | c | test.rs:239:17:239:22 | [boolean(false)] ... \|\| ... |
+| test.rs:239:27:239:27 | c | test.rs:239:27:239:27 | c |
 | test.rs:243:5:246:5 | enter fn test_or_operator_2 | test.rs:243:5:246:5 | enter fn test_or_operator_2 |
 | test.rs:244:17:244:30 | [boolean(false)] ... \|\| ... | test.rs:244:17:244:30 | [boolean(false)] ... \|\| ... |
 | test.rs:244:17:244:30 | [boolean(true)] ... \|\| ... | test.rs:244:17:244:30 | [boolean(true)] ... \|\| ... |
@@ -773,7 +958,10 @@ postDominance
 | test.rs:244:17:244:35 | ... \|\| ... | test.rs:244:17:244:30 | [boolean(true)] ... \|\| ... |
 | test.rs:244:17:244:35 | ... \|\| ... | test.rs:244:17:244:35 | ... \|\| ... |
 | test.rs:244:17:244:35 | ... \|\| ... | test.rs:244:23:244:23 | b |
+| test.rs:244:17:244:35 | ... \|\| ... | test.rs:244:35:244:35 | c |
 | test.rs:244:23:244:23 | b | test.rs:244:23:244:23 | b |
+| test.rs:244:35:244:35 | c | test.rs:244:17:244:30 | [boolean(false)] ... \|\| ... |
+| test.rs:244:35:244:35 | c | test.rs:244:35:244:35 | c |
 | test.rs:248:5:251:5 | enter fn test_not_operator | test.rs:248:5:251:5 | enter fn test_not_operator |
 | test.rs:253:5:259:5 | enter fn test_if_and_operator | test.rs:253:5:259:5 | enter fn test_if_and_operator |
 | test.rs:254:9:258:9 | if ... {...} else {...} | test.rs:253:5:259:5 | enter fn test_if_and_operator |
@@ -783,12 +971,22 @@ postDominance
 | test.rs:254:9:258:9 | if ... {...} else {...} | test.rs:254:12:254:22 | [boolean(false)] ... && ... |
 | test.rs:254:9:258:9 | if ... {...} else {...} | test.rs:254:12:254:22 | [boolean(true)] ... && ... |
 | test.rs:254:9:258:9 | if ... {...} else {...} | test.rs:254:17:254:17 | b |
+| test.rs:254:9:258:9 | if ... {...} else {...} | test.rs:254:22:254:22 | c |
+| test.rs:254:9:258:9 | if ... {...} else {...} | test.rs:255:13:255:16 | true |
+| test.rs:254:9:258:9 | if ... {...} else {...} | test.rs:257:13:257:17 | false |
 | test.rs:254:12:254:17 | [boolean(false)] ... && ... | test.rs:254:12:254:17 | [boolean(false)] ... && ... |
 | test.rs:254:12:254:17 | [boolean(true)] ... && ... | test.rs:254:12:254:17 | [boolean(true)] ... && ... |
 | test.rs:254:12:254:22 | [boolean(false)] ... && ... | test.rs:254:12:254:17 | [boolean(false)] ... && ... |
 | test.rs:254:12:254:22 | [boolean(false)] ... && ... | test.rs:254:12:254:22 | [boolean(false)] ... && ... |
 | test.rs:254:12:254:22 | [boolean(true)] ... && ... | test.rs:254:12:254:22 | [boolean(true)] ... && ... |
 | test.rs:254:17:254:17 | b | test.rs:254:17:254:17 | b |
+| test.rs:254:22:254:22 | c | test.rs:254:12:254:17 | [boolean(true)] ... && ... |
+| test.rs:254:22:254:22 | c | test.rs:254:22:254:22 | c |
+| test.rs:255:13:255:16 | true | test.rs:254:12:254:22 | [boolean(true)] ... && ... |
+| test.rs:255:13:255:16 | true | test.rs:255:13:255:16 | true |
+| test.rs:257:13:257:17 | false | test.rs:254:12:254:17 | [boolean(false)] ... && ... |
+| test.rs:257:13:257:17 | false | test.rs:254:12:254:22 | [boolean(false)] ... && ... |
+| test.rs:257:13:257:17 | false | test.rs:257:13:257:17 | false |
 | test.rs:261:5:267:5 | enter fn test_if_or_operator | test.rs:261:5:267:5 | enter fn test_if_or_operator |
 | test.rs:262:9:266:9 | if ... {...} else {...} | test.rs:261:5:267:5 | enter fn test_if_or_operator |
 | test.rs:262:9:266:9 | if ... {...} else {...} | test.rs:262:9:266:9 | if ... {...} else {...} |
@@ -797,19 +995,35 @@ postDominance
 | test.rs:262:9:266:9 | if ... {...} else {...} | test.rs:262:12:262:22 | [boolean(false)] ... \|\| ... |
 | test.rs:262:9:266:9 | if ... {...} else {...} | test.rs:262:12:262:22 | [boolean(true)] ... \|\| ... |
 | test.rs:262:9:266:9 | if ... {...} else {...} | test.rs:262:17:262:17 | b |
+| test.rs:262:9:266:9 | if ... {...} else {...} | test.rs:262:22:262:22 | c |
+| test.rs:262:9:266:9 | if ... {...} else {...} | test.rs:263:13:263:16 | true |
+| test.rs:262:9:266:9 | if ... {...} else {...} | test.rs:265:13:265:17 | false |
 | test.rs:262:12:262:17 | [boolean(false)] ... \|\| ... | test.rs:262:12:262:17 | [boolean(false)] ... \|\| ... |
 | test.rs:262:12:262:17 | [boolean(true)] ... \|\| ... | test.rs:262:12:262:17 | [boolean(true)] ... \|\| ... |
 | test.rs:262:12:262:22 | [boolean(false)] ... \|\| ... | test.rs:262:12:262:22 | [boolean(false)] ... \|\| ... |
 | test.rs:262:12:262:22 | [boolean(true)] ... \|\| ... | test.rs:262:12:262:17 | [boolean(true)] ... \|\| ... |
 | test.rs:262:12:262:22 | [boolean(true)] ... \|\| ... | test.rs:262:12:262:22 | [boolean(true)] ... \|\| ... |
 | test.rs:262:17:262:17 | b | test.rs:262:17:262:17 | b |
+| test.rs:262:22:262:22 | c | test.rs:262:12:262:17 | [boolean(false)] ... \|\| ... |
+| test.rs:262:22:262:22 | c | test.rs:262:22:262:22 | c |
+| test.rs:263:13:263:16 | true | test.rs:262:12:262:17 | [boolean(true)] ... \|\| ... |
+| test.rs:263:13:263:16 | true | test.rs:262:12:262:22 | [boolean(true)] ... \|\| ... |
+| test.rs:263:13:263:16 | true | test.rs:263:13:263:16 | true |
+| test.rs:265:13:265:17 | false | test.rs:262:12:262:22 | [boolean(false)] ... \|\| ... |
+| test.rs:265:13:265:17 | false | test.rs:265:13:265:17 | false |
 | test.rs:269:5:275:5 | enter fn test_if_not_operator | test.rs:269:5:275:5 | enter fn test_if_not_operator |
 | test.rs:270:9:274:9 | if ... {...} else {...} | test.rs:269:5:275:5 | enter fn test_if_not_operator |
 | test.rs:270:9:274:9 | if ... {...} else {...} | test.rs:270:9:274:9 | if ... {...} else {...} |
 | test.rs:270:9:274:9 | if ... {...} else {...} | test.rs:270:12:270:13 | [boolean(false)] ! ... |
 | test.rs:270:9:274:9 | if ... {...} else {...} | test.rs:270:12:270:13 | [boolean(true)] ! ... |
+| test.rs:270:9:274:9 | if ... {...} else {...} | test.rs:271:13:271:16 | true |
+| test.rs:270:9:274:9 | if ... {...} else {...} | test.rs:273:13:273:17 | false |
 | test.rs:270:12:270:13 | [boolean(false)] ! ... | test.rs:270:12:270:13 | [boolean(false)] ! ... |
 | test.rs:270:12:270:13 | [boolean(true)] ! ... | test.rs:270:12:270:13 | [boolean(true)] ! ... |
+| test.rs:271:13:271:16 | true | test.rs:270:12:270:13 | [boolean(true)] ! ... |
+| test.rs:271:13:271:16 | true | test.rs:271:13:271:16 | true |
+| test.rs:273:13:273:17 | false | test.rs:270:12:270:13 | [boolean(false)] ! ... |
+| test.rs:273:13:273:17 | false | test.rs:273:13:273:17 | false |
 | test.rs:277:5:279:5 | enter fn test_and_return | test.rs:277:5:279:5 | enter fn test_and_return |
 | test.rs:277:5:279:5 | exit fn test_and_return (normal) | test.rs:277:5:279:5 | enter fn test_and_return |
 | test.rs:277:5:279:5 | exit fn test_and_return (normal) | test.rs:277:5:279:5 | exit fn test_and_return (normal) |
@@ -820,10 +1034,20 @@ postDominance
 | test.rs:281:5:286:5 | enter fn test_and_true | test.rs:281:5:286:5 | enter fn test_and_true |
 | test.rs:281:5:286:5 | exit fn test_and_true (normal) | test.rs:281:5:286:5 | enter fn test_and_true |
 | test.rs:281:5:286:5 | exit fn test_and_true (normal) | test.rs:281:5:286:5 | exit fn test_and_true (normal) |
+| test.rs:281:5:286:5 | exit fn test_and_true (normal) | test.rs:282:9:284:9 | if ... {...} |
 | test.rs:281:5:286:5 | exit fn test_and_true (normal) | test.rs:282:13:282:21 | [boolean(false)] ... && ... |
+| test.rs:281:5:286:5 | exit fn test_and_true (normal) | test.rs:282:13:282:21 | [boolean(true)] ... && ... |
 | test.rs:281:5:286:5 | exit fn test_and_true (normal) | test.rs:282:18:282:21 | true |
+| test.rs:281:5:286:5 | exit fn test_and_true (normal) | test.rs:283:13:283:21 | ExprStmt |
+| test.rs:282:9:284:9 | if ... {...} | test.rs:282:9:284:9 | if ... {...} |
+| test.rs:282:9:284:9 | if ... {...} | test.rs:282:13:282:21 | [boolean(false)] ... && ... |
 | test.rs:282:13:282:21 | [boolean(false)] ... && ... | test.rs:282:13:282:21 | [boolean(false)] ... && ... |
+| test.rs:282:13:282:21 | [boolean(true)] ... && ... | test.rs:282:13:282:21 | [boolean(true)] ... && ... |
+| test.rs:282:13:282:21 | [boolean(true)] ... && ... | test.rs:282:18:282:21 | true |
 | test.rs:282:18:282:21 | true | test.rs:282:18:282:21 | true |
+| test.rs:283:13:283:21 | ExprStmt | test.rs:282:13:282:21 | [boolean(true)] ... && ... |
+| test.rs:283:13:283:21 | ExprStmt | test.rs:282:18:282:21 | true |
+| test.rs:283:13:283:21 | ExprStmt | test.rs:283:13:283:21 | ExprStmt |
 | test.rs:292:5:294:5 | enter fn test_question_mark_operator_1 | test.rs:292:5:294:5 | enter fn test_question_mark_operator_1 |
 | test.rs:292:5:294:5 | exit fn test_question_mark_operator_1 (normal) | test.rs:292:5:294:5 | enter fn test_question_mark_operator_1 |
 | test.rs:292:5:294:5 | exit fn test_question_mark_operator_1 (normal) | test.rs:292:5:294:5 | exit fn test_question_mark_operator_1 (normal) |
@@ -879,11 +1103,14 @@ postDominance
 | test.rs:327:9:330:18 | ... && ... | test.rs:327:10:330:9 | [boolean(true)] match r { ... } |
 | test.rs:327:9:330:18 | ... && ... | test.rs:328:18:328:18 | a |
 | test.rs:327:9:330:18 | ... && ... | test.rs:329:13:329:13 | _ |
+| test.rs:327:9:330:18 | ... && ... | test.rs:330:15:330:18 | cond |
 | test.rs:327:10:330:9 | [boolean(false)] match r { ... } | test.rs:327:10:330:9 | [boolean(false)] match r { ... } |
 | test.rs:327:10:330:9 | [boolean(false)] match r { ... } | test.rs:329:13:329:13 | _ |
 | test.rs:327:10:330:9 | [boolean(true)] match r { ... } | test.rs:327:10:330:9 | [boolean(true)] match r { ... } |
 | test.rs:328:18:328:18 | a | test.rs:328:18:328:18 | a |
 | test.rs:329:13:329:13 | _ | test.rs:329:13:329:13 | _ |
+| test.rs:330:15:330:18 | cond | test.rs:327:10:330:9 | [boolean(true)] match r { ... } |
+| test.rs:330:15:330:18 | cond | test.rs:330:15:330:18 | cond |
 | test.rs:333:5:338:5 | enter fn test_match_with_no_arms | test.rs:333:5:338:5 | enter fn test_match_with_no_arms |
 | test.rs:334:9:337:9 | match r { ... } | test.rs:333:5:338:5 | enter fn test_match_with_no_arms |
 | test.rs:334:9:337:9 | match r { ... } | test.rs:334:9:337:9 | match r { ... } |
@@ -943,16 +1170,23 @@ postDominance
 | test.rs:411:17:411:41 | ExprStmt | test.rs:411:17:411:41 | ExprStmt |
 | test.rs:421:5:423:5 | enter fn add_two | test.rs:421:5:423:5 | enter fn add_two |
 | test.rs:427:5:435:5 | enter fn const_block_assert | test.rs:427:5:435:5 | enter fn const_block_assert |
+| test.rs:431:13:431:49 | ExprStmt | test.rs:431:13:431:49 | ExprStmt |
+| test.rs:431:13:431:49 | ExprStmt | test.rs:431:21:431:48 | [boolean(true)] ! ... |
 | test.rs:431:13:431:49 | enter fn panic_cold_explicit | test.rs:431:13:431:49 | enter fn panic_cold_explicit |
 | test.rs:431:21:431:48 | [boolean(false)] ! ... | test.rs:431:21:431:48 | [boolean(false)] ! ... |
 | test.rs:431:21:431:48 | [boolean(true)] ! ... | test.rs:431:21:431:48 | [boolean(true)] ! ... |
 | test.rs:431:21:431:48 | if ... {...} | test.rs:427:5:435:5 | enter fn const_block_assert |
+| test.rs:431:21:431:48 | if ... {...} | test.rs:431:13:431:49 | ExprStmt |
 | test.rs:431:21:431:48 | if ... {...} | test.rs:431:21:431:48 | [boolean(false)] ! ... |
 | test.rs:431:21:431:48 | if ... {...} | test.rs:431:21:431:48 | [boolean(true)] ! ... |
 | test.rs:431:21:431:48 | if ... {...} | test.rs:431:21:431:48 | if ... {...} |
 | test.rs:437:5:446:5 | enter fn const_block_panic | test.rs:437:5:446:5 | enter fn const_block_panic |
+| test.rs:439:9:444:9 | if false {...} | test.rs:437:5:446:5 | enter fn const_block_panic |
+| test.rs:439:9:444:9 | if false {...} | test.rs:439:9:444:9 | if false {...} |
 | test.rs:442:17:442:24 | enter fn panic_cold_explicit | test.rs:442:17:442:24 | enter fn panic_cold_explicit |
 | test.rs:449:1:454:1 | enter fn dead_code | test.rs:449:1:454:1 | enter fn dead_code |
+| test.rs:451:9:451:17 | ExprStmt | test.rs:449:1:454:1 | enter fn dead_code |
+| test.rs:451:9:451:17 | ExprStmt | test.rs:451:9:451:17 | ExprStmt |
 | test.rs:456:1:456:16 | enter fn do_thing | test.rs:456:1:456:16 | enter fn do_thing |
 | test.rs:458:1:460:1 | enter fn condition_not_met | test.rs:458:1:460:1 | enter fn condition_not_met |
 | test.rs:462:1:462:21 | enter fn do_next_thing | test.rs:462:1:462:21 | enter fn do_next_thing |
@@ -1042,63 +1276,93 @@ immediateDominator
 | test.rs:153:39:153:48 | [boolean(false)] { ... } | test.rs:153:41:153:41 | a |
 | test.rs:153:39:153:48 | [boolean(true)] { ... } | test.rs:153:41:153:41 | a |
 | test.rs:153:41:153:41 | a | test.rs:152:5:158:5 | enter fn test_nested_if |
+| test.rs:154:13:154:13 | 1 | test.rs:153:13:153:48 | [boolean(true)] if ... {...} else {...} |
+| test.rs:156:13:156:13 | 0 | test.rs:153:13:153:48 | [boolean(false)] if ... {...} else {...} |
 | test.rs:161:9:168:9 | if ... {...} else {...} | test.rs:160:5:169:5 | enter fn test_nested_if_match |
+| test.rs:161:13:164:9 | [boolean(false)] match a { ... } | test.rs:163:13:163:13 | _ |
+| test.rs:161:13:164:9 | [boolean(true)] match a { ... } | test.rs:162:18:162:21 | true |
 | test.rs:162:18:162:21 | true | test.rs:160:5:169:5 | enter fn test_nested_if_match |
 | test.rs:163:13:163:13 | _ | test.rs:160:5:169:5 | enter fn test_nested_if_match |
+| test.rs:165:13:165:13 | 1 | test.rs:161:13:164:9 | [boolean(true)] match a { ... } |
+| test.rs:167:13:167:13 | 0 | test.rs:161:13:164:9 | [boolean(false)] match a { ... } |
 | test.rs:172:9:179:9 | if ... {...} else {...} | test.rs:171:5:180:5 | enter fn test_nested_if_block |
 | test.rs:172:12:175:9 | [boolean(false)] { ... } | test.rs:171:5:180:5 | enter fn test_nested_if_block |
 | test.rs:172:12:175:9 | [boolean(true)] { ... } | test.rs:171:5:180:5 | enter fn test_nested_if_block |
+| test.rs:176:13:176:13 | 1 | test.rs:172:12:175:9 | [boolean(true)] { ... } |
+| test.rs:178:13:178:13 | 0 | test.rs:172:12:175:9 | [boolean(false)] { ... } |
 | test.rs:184:9:191:9 | if ... {...} else {...} | test.rs:182:5:192:5 | enter fn test_if_assignment |
 | test.rs:184:12:187:9 | [boolean(false)] { ... } | test.rs:182:5:192:5 | enter fn test_if_assignment |
 | test.rs:184:12:187:9 | [boolean(true)] { ... } | test.rs:182:5:192:5 | enter fn test_if_assignment |
+| test.rs:188:13:188:13 | 1 | test.rs:184:12:187:9 | [boolean(true)] { ... } |
+| test.rs:190:13:190:13 | 0 | test.rs:184:12:187:9 | [boolean(false)] { ... } |
 | test.rs:195:9:204:9 | if ... {...} else {...} | test.rs:197:17:197:29 | ExprStmt |
 | test.rs:196:13:198:13 | if ... {...} | test.rs:196:13:198:14 | ExprStmt |
 | test.rs:196:13:198:14 | ExprStmt | test.rs:194:5:205:5 | enter fn test_if_loop1 |
 | test.rs:197:17:197:28 | [boolean(false)] break ... | test.rs:197:17:197:29 | ExprStmt |
 | test.rs:197:17:197:28 | [boolean(true)] break ... | test.rs:197:17:197:29 | ExprStmt |
 | test.rs:197:17:197:29 | ExprStmt | test.rs:196:13:198:14 | ExprStmt |
+| test.rs:201:13:201:13 | 1 | test.rs:197:17:197:28 | [boolean(true)] break ... |
+| test.rs:203:13:203:13 | 0 | test.rs:197:17:197:28 | [boolean(false)] break ... |
 | test.rs:208:9:217:9 | if ... {...} else {...} | test.rs:210:17:210:36 | ExprStmt |
 | test.rs:209:13:211:13 | if ... {...} | test.rs:209:13:211:14 | ExprStmt |
 | test.rs:209:13:211:14 | ExprStmt | test.rs:207:5:218:5 | enter fn test_if_loop2 |
 | test.rs:210:17:210:35 | [boolean(false)] break ''label ... | test.rs:210:17:210:36 | ExprStmt |
 | test.rs:210:17:210:35 | [boolean(true)] break ''label ... | test.rs:210:17:210:36 | ExprStmt |
 | test.rs:210:17:210:36 | ExprStmt | test.rs:209:13:211:14 | ExprStmt |
+| test.rs:214:13:214:13 | 1 | test.rs:210:17:210:35 | [boolean(true)] break ''label ... |
+| test.rs:216:13:216:13 | 0 | test.rs:210:17:210:35 | [boolean(false)] break ''label ... |
 | test.rs:221:9:227:9 | if ... {...} else {...} | test.rs:220:5:228:5 | enter fn test_labelled_block |
 | test.rs:222:13:222:30 | [boolean(false)] break ''block ... | test.rs:220:5:228:5 | enter fn test_labelled_block |
 | test.rs:222:13:222:30 | [boolean(true)] break ''block ... | test.rs:220:5:228:5 | enter fn test_labelled_block |
+| test.rs:224:13:224:13 | 1 | test.rs:222:13:222:30 | [boolean(true)] break ''block ... |
+| test.rs:226:13:226:13 | 0 | test.rs:222:13:222:30 | [boolean(false)] break ''block ... |
 | test.rs:234:17:234:22 | [boolean(false)] ... && ... | test.rs:233:5:236:5 | enter fn test_and_operator |
 | test.rs:234:17:234:22 | [boolean(true)] ... && ... | test.rs:234:22:234:22 | b |
 | test.rs:234:17:234:27 | ... && ... | test.rs:233:5:236:5 | enter fn test_and_operator |
 | test.rs:234:22:234:22 | b | test.rs:233:5:236:5 | enter fn test_and_operator |
+| test.rs:234:27:234:27 | c | test.rs:234:17:234:22 | [boolean(true)] ... && ... |
 | test.rs:239:17:239:22 | [boolean(false)] ... \|\| ... | test.rs:239:22:239:22 | b |
 | test.rs:239:17:239:22 | [boolean(true)] ... \|\| ... | test.rs:238:5:241:5 | enter fn test_or_operator |
 | test.rs:239:17:239:27 | ... \|\| ... | test.rs:238:5:241:5 | enter fn test_or_operator |
 | test.rs:239:22:239:22 | b | test.rs:238:5:241:5 | enter fn test_or_operator |
+| test.rs:239:27:239:27 | c | test.rs:239:17:239:22 | [boolean(false)] ... \|\| ... |
 | test.rs:244:17:244:30 | [boolean(false)] ... \|\| ... | test.rs:244:23:244:23 | b |
 | test.rs:244:17:244:30 | [boolean(true)] ... \|\| ... | test.rs:243:5:246:5 | enter fn test_or_operator_2 |
 | test.rs:244:17:244:35 | ... \|\| ... | test.rs:243:5:246:5 | enter fn test_or_operator_2 |
 | test.rs:244:23:244:23 | b | test.rs:243:5:246:5 | enter fn test_or_operator_2 |
+| test.rs:244:35:244:35 | c | test.rs:244:17:244:30 | [boolean(false)] ... \|\| ... |
 | test.rs:254:9:258:9 | if ... {...} else {...} | test.rs:253:5:259:5 | enter fn test_if_and_operator |
 | test.rs:254:12:254:17 | [boolean(false)] ... && ... | test.rs:253:5:259:5 | enter fn test_if_and_operator |
 | test.rs:254:12:254:17 | [boolean(true)] ... && ... | test.rs:254:17:254:17 | b |
 | test.rs:254:12:254:22 | [boolean(false)] ... && ... | test.rs:253:5:259:5 | enter fn test_if_and_operator |
-| test.rs:254:12:254:22 | [boolean(true)] ... && ... | test.rs:254:12:254:17 | [boolean(true)] ... && ... |
+| test.rs:254:12:254:22 | [boolean(true)] ... && ... | test.rs:254:22:254:22 | c |
 | test.rs:254:17:254:17 | b | test.rs:253:5:259:5 | enter fn test_if_and_operator |
+| test.rs:254:22:254:22 | c | test.rs:254:12:254:17 | [boolean(true)] ... && ... |
+| test.rs:255:13:255:16 | true | test.rs:254:12:254:22 | [boolean(true)] ... && ... |
+| test.rs:257:13:257:17 | false | test.rs:254:12:254:22 | [boolean(false)] ... && ... |
 | test.rs:262:9:266:9 | if ... {...} else {...} | test.rs:261:5:267:5 | enter fn test_if_or_operator |
 | test.rs:262:12:262:17 | [boolean(false)] ... \|\| ... | test.rs:262:17:262:17 | b |
 | test.rs:262:12:262:17 | [boolean(true)] ... \|\| ... | test.rs:261:5:267:5 | enter fn test_if_or_operator |
-| test.rs:262:12:262:22 | [boolean(false)] ... \|\| ... | test.rs:262:12:262:17 | [boolean(false)] ... \|\| ... |
+| test.rs:262:12:262:22 | [boolean(false)] ... \|\| ... | test.rs:262:22:262:22 | c |
 | test.rs:262:12:262:22 | [boolean(true)] ... \|\| ... | test.rs:261:5:267:5 | enter fn test_if_or_operator |
 | test.rs:262:17:262:17 | b | test.rs:261:5:267:5 | enter fn test_if_or_operator |
+| test.rs:262:22:262:22 | c | test.rs:262:12:262:17 | [boolean(false)] ... \|\| ... |
+| test.rs:263:13:263:16 | true | test.rs:262:12:262:22 | [boolean(true)] ... \|\| ... |
+| test.rs:265:13:265:17 | false | test.rs:262:12:262:22 | [boolean(false)] ... \|\| ... |
 | test.rs:270:9:274:9 | if ... {...} else {...} | test.rs:269:5:275:5 | enter fn test_if_not_operator |
 | test.rs:270:12:270:13 | [boolean(false)] ! ... | test.rs:269:5:275:5 | enter fn test_if_not_operator |
 | test.rs:270:12:270:13 | [boolean(true)] ! ... | test.rs:269:5:275:5 | enter fn test_if_not_operator |
+| test.rs:271:13:271:16 | true | test.rs:270:12:270:13 | [boolean(true)] ! ... |
+| test.rs:273:13:273:17 | false | test.rs:270:12:270:13 | [boolean(false)] ! ... |
 | test.rs:277:5:279:5 | exit fn test_and_return (normal) | test.rs:277:5:279:5 | enter fn test_and_return |
 | test.rs:278:9:278:19 | ... && ... | test.rs:277:5:279:5 | enter fn test_and_return |
 | test.rs:278:14:278:19 | return | test.rs:277:5:279:5 | enter fn test_and_return |
 | test.rs:281:5:286:5 | exit fn test_and_true (normal) | test.rs:281:5:286:5 | enter fn test_and_true |
+| test.rs:282:9:284:9 | if ... {...} | test.rs:282:13:282:21 | [boolean(false)] ... && ... |
 | test.rs:282:13:282:21 | [boolean(false)] ... && ... | test.rs:281:5:286:5 | enter fn test_and_true |
+| test.rs:282:13:282:21 | [boolean(true)] ... && ... | test.rs:282:18:282:21 | true |
 | test.rs:282:18:282:21 | true | test.rs:281:5:286:5 | enter fn test_and_true |
+| test.rs:283:13:283:21 | ExprStmt | test.rs:282:13:282:21 | [boolean(true)] ... && ... |
 | test.rs:292:5:294:5 | exit fn test_question_mark_operator_1 (normal) | test.rs:292:5:294:5 | enter fn test_question_mark_operator_1 |
 | test.rs:293:32:293:32 | 4 | test.rs:292:5:294:5 | enter fn test_question_mark_operator_1 |
 | test.rs:296:5:301:5 | exit fn test_question_mark_operator_2 (normal) | test.rs:296:5:301:5 | enter fn test_question_mark_operator_2 |
@@ -1123,6 +1387,7 @@ immediateDominator
 | test.rs:327:10:330:9 | [boolean(true)] match r { ... } | test.rs:328:18:328:18 | a |
 | test.rs:328:18:328:18 | a | test.rs:326:5:331:5 | enter fn test_match_and |
 | test.rs:329:13:329:13 | _ | test.rs:326:5:331:5 | enter fn test_match_and |
+| test.rs:330:15:330:18 | cond | test.rs:327:10:330:9 | [boolean(true)] match r { ... } |
 | test.rs:334:9:337:9 | match r { ... } | test.rs:333:5:338:5 | enter fn test_match_with_no_arms |
 | test.rs:335:16:335:20 | value | test.rs:333:5:338:5 | enter fn test_match_with_no_arms |
 | test.rs:336:13:336:22 | Err(...) | test.rs:333:5:338:5 | enter fn test_match_with_no_arms |
@@ -1146,9 +1411,12 @@ immediateDominator
 | test.rs:409:28:414:9 | exit { ... } (normal) | test.rs:409:28:414:9 | enter { ... } |
 | test.rs:410:13:412:13 | if b {...} | test.rs:409:28:414:9 | enter { ... } |
 | test.rs:411:17:411:41 | ExprStmt | test.rs:409:28:414:9 | enter { ... } |
+| test.rs:431:13:431:49 | ExprStmt | test.rs:431:21:431:48 | [boolean(true)] ! ... |
 | test.rs:431:21:431:48 | [boolean(false)] ! ... | test.rs:427:5:435:5 | enter fn const_block_assert |
 | test.rs:431:21:431:48 | [boolean(true)] ! ... | test.rs:427:5:435:5 | enter fn const_block_assert |
 | test.rs:431:21:431:48 | if ... {...} | test.rs:427:5:435:5 | enter fn const_block_assert |
+| test.rs:439:9:444:9 | if false {...} | test.rs:437:5:446:5 | enter fn const_block_panic |
+| test.rs:451:9:451:17 | ExprStmt | test.rs:449:1:454:1 | enter fn dead_code |
 | test.rs:467:18:478:5 | 'block: { ... } | test.rs:466:1:480:1 | enter fn labelled_block1 |
 | test.rs:469:9:471:9 | if ... {...} | test.rs:466:1:480:1 | enter fn labelled_block1 |
 | test.rs:470:13:470:27 | ExprStmt | test.rs:466:1:480:1 | enter fn labelled_block1 |
@@ -1207,68 +1475,146 @@ controls
 | test.rs:152:5:158:5 | enter fn test_nested_if | test.rs:153:39:153:48 | [boolean(false)] { ... } | false |
 | test.rs:152:5:158:5 | enter fn test_nested_if | test.rs:153:39:153:48 | [boolean(true)] { ... } | false |
 | test.rs:152:5:158:5 | enter fn test_nested_if | test.rs:153:41:153:41 | a | false |
+| test.rs:153:13:153:48 | [boolean(false)] if ... {...} else {...} | test.rs:156:13:156:13 | 0 | false |
+| test.rs:153:13:153:48 | [boolean(true)] if ... {...} else {...} | test.rs:154:13:154:13 | 1 | true |
 | test.rs:153:24:153:24 | a | test.rs:153:22:153:32 | [boolean(false)] { ... } | false |
 | test.rs:153:24:153:24 | a | test.rs:153:22:153:32 | [boolean(true)] { ... } | true |
 | test.rs:153:41:153:41 | a | test.rs:153:39:153:48 | [boolean(false)] { ... } | false |
 | test.rs:153:41:153:41 | a | test.rs:153:39:153:48 | [boolean(true)] { ... } | true |
+| test.rs:161:13:164:9 | [boolean(false)] match a { ... } | test.rs:167:13:167:13 | 0 | false |
+| test.rs:161:13:164:9 | [boolean(true)] match a { ... } | test.rs:165:13:165:13 | 1 | true |
+| test.rs:162:18:162:21 | true | test.rs:161:13:164:9 | [boolean(true)] match a { ... } | true |
+| test.rs:162:18:162:21 | true | test.rs:165:13:165:13 | 1 | true |
+| test.rs:163:13:163:13 | _ | test.rs:161:13:164:9 | [boolean(false)] match a { ... } | false |
+| test.rs:163:13:163:13 | _ | test.rs:167:13:167:13 | 0 | false |
 | test.rs:171:5:180:5 | enter fn test_nested_if_block | test.rs:172:12:175:9 | [boolean(false)] { ... } | false |
 | test.rs:171:5:180:5 | enter fn test_nested_if_block | test.rs:172:12:175:9 | [boolean(true)] { ... } | true |
+| test.rs:171:5:180:5 | enter fn test_nested_if_block | test.rs:176:13:176:13 | 1 | true |
+| test.rs:171:5:180:5 | enter fn test_nested_if_block | test.rs:178:13:178:13 | 0 | false |
+| test.rs:172:12:175:9 | [boolean(false)] { ... } | test.rs:178:13:178:13 | 0 | false |
+| test.rs:172:12:175:9 | [boolean(true)] { ... } | test.rs:176:13:176:13 | 1 | true |
 | test.rs:182:5:192:5 | enter fn test_if_assignment | test.rs:184:12:187:9 | [boolean(false)] { ... } | false |
 | test.rs:182:5:192:5 | enter fn test_if_assignment | test.rs:184:12:187:9 | [boolean(true)] { ... } | true |
+| test.rs:182:5:192:5 | enter fn test_if_assignment | test.rs:188:13:188:13 | 1 | true |
+| test.rs:182:5:192:5 | enter fn test_if_assignment | test.rs:190:13:190:13 | 0 | false |
+| test.rs:184:12:187:9 | [boolean(false)] { ... } | test.rs:190:13:190:13 | 0 | false |
+| test.rs:184:12:187:9 | [boolean(true)] { ... } | test.rs:188:13:188:13 | 1 | true |
 | test.rs:196:13:198:14 | ExprStmt | test.rs:195:9:204:9 | if ... {...} else {...} | true |
 | test.rs:196:13:198:14 | ExprStmt | test.rs:196:13:198:13 | if ... {...} | false |
 | test.rs:196:13:198:14 | ExprStmt | test.rs:197:17:197:28 | [boolean(false)] break ... | true |
 | test.rs:196:13:198:14 | ExprStmt | test.rs:197:17:197:28 | [boolean(true)] break ... | true |
 | test.rs:196:13:198:14 | ExprStmt | test.rs:197:17:197:29 | ExprStmt | true |
+| test.rs:196:13:198:14 | ExprStmt | test.rs:201:13:201:13 | 1 | true |
+| test.rs:196:13:198:14 | ExprStmt | test.rs:203:13:203:13 | 0 | true |
+| test.rs:197:17:197:28 | [boolean(false)] break ... | test.rs:203:13:203:13 | 0 | false |
+| test.rs:197:17:197:28 | [boolean(true)] break ... | test.rs:201:13:201:13 | 1 | true |
 | test.rs:197:17:197:29 | ExprStmt | test.rs:197:17:197:28 | [boolean(false)] break ... | false |
 | test.rs:197:17:197:29 | ExprStmt | test.rs:197:17:197:28 | [boolean(true)] break ... | true |
+| test.rs:197:17:197:29 | ExprStmt | test.rs:201:13:201:13 | 1 | true |
+| test.rs:197:17:197:29 | ExprStmt | test.rs:203:13:203:13 | 0 | false |
 | test.rs:209:13:211:14 | ExprStmt | test.rs:208:9:217:9 | if ... {...} else {...} | true |
 | test.rs:209:13:211:14 | ExprStmt | test.rs:209:13:211:13 | if ... {...} | false |
 | test.rs:209:13:211:14 | ExprStmt | test.rs:210:17:210:35 | [boolean(false)] break ''label ... | true |
 | test.rs:209:13:211:14 | ExprStmt | test.rs:210:17:210:35 | [boolean(true)] break ''label ... | true |
 | test.rs:209:13:211:14 | ExprStmt | test.rs:210:17:210:36 | ExprStmt | true |
+| test.rs:209:13:211:14 | ExprStmt | test.rs:214:13:214:13 | 1 | true |
+| test.rs:209:13:211:14 | ExprStmt | test.rs:216:13:216:13 | 0 | true |
+| test.rs:210:17:210:35 | [boolean(false)] break ''label ... | test.rs:216:13:216:13 | 0 | false |
+| test.rs:210:17:210:35 | [boolean(true)] break ''label ... | test.rs:214:13:214:13 | 1 | true |
 | test.rs:210:17:210:36 | ExprStmt | test.rs:210:17:210:35 | [boolean(false)] break ''label ... | false |
 | test.rs:210:17:210:36 | ExprStmt | test.rs:210:17:210:35 | [boolean(true)] break ''label ... | true |
+| test.rs:210:17:210:36 | ExprStmt | test.rs:214:13:214:13 | 1 | true |
+| test.rs:210:17:210:36 | ExprStmt | test.rs:216:13:216:13 | 0 | false |
 | test.rs:220:5:228:5 | enter fn test_labelled_block | test.rs:222:13:222:30 | [boolean(false)] break ''block ... | false |
 | test.rs:220:5:228:5 | enter fn test_labelled_block | test.rs:222:13:222:30 | [boolean(true)] break ''block ... | true |
+| test.rs:220:5:228:5 | enter fn test_labelled_block | test.rs:224:13:224:13 | 1 | true |
+| test.rs:220:5:228:5 | enter fn test_labelled_block | test.rs:226:13:226:13 | 0 | false |
+| test.rs:222:13:222:30 | [boolean(false)] break ''block ... | test.rs:226:13:226:13 | 0 | false |
+| test.rs:222:13:222:30 | [boolean(true)] break ''block ... | test.rs:224:13:224:13 | 1 | true |
 | test.rs:233:5:236:5 | enter fn test_and_operator | test.rs:234:17:234:22 | [boolean(true)] ... && ... | true |
 | test.rs:233:5:236:5 | enter fn test_and_operator | test.rs:234:22:234:22 | b | true |
+| test.rs:233:5:236:5 | enter fn test_and_operator | test.rs:234:27:234:27 | c | true |
+| test.rs:234:17:234:22 | [boolean(true)] ... && ... | test.rs:234:27:234:27 | c | true |
 | test.rs:234:22:234:22 | b | test.rs:234:17:234:22 | [boolean(true)] ... && ... | true |
+| test.rs:234:22:234:22 | b | test.rs:234:27:234:27 | c | true |
 | test.rs:238:5:241:5 | enter fn test_or_operator | test.rs:239:17:239:22 | [boolean(false)] ... \|\| ... | false |
 | test.rs:238:5:241:5 | enter fn test_or_operator | test.rs:239:22:239:22 | b | false |
+| test.rs:238:5:241:5 | enter fn test_or_operator | test.rs:239:27:239:27 | c | false |
+| test.rs:239:17:239:22 | [boolean(false)] ... \|\| ... | test.rs:239:27:239:27 | c | false |
 | test.rs:239:22:239:22 | b | test.rs:239:17:239:22 | [boolean(false)] ... \|\| ... | false |
+| test.rs:239:22:239:22 | b | test.rs:239:27:239:27 | c | false |
 | test.rs:243:5:246:5 | enter fn test_or_operator_2 | test.rs:244:17:244:30 | [boolean(false)] ... \|\| ... | false |
 | test.rs:243:5:246:5 | enter fn test_or_operator_2 | test.rs:244:23:244:23 | b | false |
+| test.rs:243:5:246:5 | enter fn test_or_operator_2 | test.rs:244:35:244:35 | c | false |
+| test.rs:244:17:244:30 | [boolean(false)] ... \|\| ... | test.rs:244:35:244:35 | c | false |
 | test.rs:244:23:244:23 | b | test.rs:244:17:244:30 | [boolean(false)] ... \|\| ... | false |
+| test.rs:244:23:244:23 | b | test.rs:244:35:244:35 | c | false |
 | test.rs:253:5:259:5 | enter fn test_if_and_operator | test.rs:254:12:254:17 | [boolean(true)] ... && ... | true |
 | test.rs:253:5:259:5 | enter fn test_if_and_operator | test.rs:254:12:254:22 | [boolean(true)] ... && ... | true |
 | test.rs:253:5:259:5 | enter fn test_if_and_operator | test.rs:254:17:254:17 | b | true |
+| test.rs:253:5:259:5 | enter fn test_if_and_operator | test.rs:254:22:254:22 | c | true |
+| test.rs:253:5:259:5 | enter fn test_if_and_operator | test.rs:255:13:255:16 | true | true |
 | test.rs:254:12:254:17 | [boolean(true)] ... && ... | test.rs:254:12:254:22 | [boolean(true)] ... && ... | true |
+| test.rs:254:12:254:17 | [boolean(true)] ... && ... | test.rs:254:22:254:22 | c | true |
+| test.rs:254:12:254:17 | [boolean(true)] ... && ... | test.rs:255:13:255:16 | true | true |
+| test.rs:254:12:254:22 | [boolean(false)] ... && ... | test.rs:257:13:257:17 | false | false |
+| test.rs:254:12:254:22 | [boolean(true)] ... && ... | test.rs:255:13:255:16 | true | true |
 | test.rs:254:17:254:17 | b | test.rs:254:12:254:17 | [boolean(true)] ... && ... | true |
 | test.rs:254:17:254:17 | b | test.rs:254:12:254:22 | [boolean(true)] ... && ... | true |
+| test.rs:254:17:254:17 | b | test.rs:254:22:254:22 | c | true |
+| test.rs:254:17:254:17 | b | test.rs:255:13:255:16 | true | true |
+| test.rs:254:22:254:22 | c | test.rs:254:12:254:22 | [boolean(true)] ... && ... | true |
+| test.rs:254:22:254:22 | c | test.rs:255:13:255:16 | true | true |
 | test.rs:261:5:267:5 | enter fn test_if_or_operator | test.rs:262:12:262:17 | [boolean(false)] ... \|\| ... | false |
 | test.rs:261:5:267:5 | enter fn test_if_or_operator | test.rs:262:12:262:22 | [boolean(false)] ... \|\| ... | false |
 | test.rs:261:5:267:5 | enter fn test_if_or_operator | test.rs:262:17:262:17 | b | false |
+| test.rs:261:5:267:5 | enter fn test_if_or_operator | test.rs:262:22:262:22 | c | false |
+| test.rs:261:5:267:5 | enter fn test_if_or_operator | test.rs:265:13:265:17 | false | false |
 | test.rs:262:12:262:17 | [boolean(false)] ... \|\| ... | test.rs:262:12:262:22 | [boolean(false)] ... \|\| ... | false |
+| test.rs:262:12:262:17 | [boolean(false)] ... \|\| ... | test.rs:262:22:262:22 | c | false |
+| test.rs:262:12:262:17 | [boolean(false)] ... \|\| ... | test.rs:265:13:265:17 | false | false |
+| test.rs:262:12:262:22 | [boolean(false)] ... \|\| ... | test.rs:265:13:265:17 | false | false |
+| test.rs:262:12:262:22 | [boolean(true)] ... \|\| ... | test.rs:263:13:263:16 | true | true |
 | test.rs:262:17:262:17 | b | test.rs:262:12:262:17 | [boolean(false)] ... \|\| ... | false |
 | test.rs:262:17:262:17 | b | test.rs:262:12:262:22 | [boolean(false)] ... \|\| ... | false |
+| test.rs:262:17:262:17 | b | test.rs:262:22:262:22 | c | false |
+| test.rs:262:17:262:17 | b | test.rs:265:13:265:17 | false | false |
+| test.rs:262:22:262:22 | c | test.rs:262:12:262:22 | [boolean(false)] ... \|\| ... | false |
+| test.rs:262:22:262:22 | c | test.rs:265:13:265:17 | false | false |
 | test.rs:269:5:275:5 | enter fn test_if_not_operator | test.rs:270:12:270:13 | [boolean(false)] ! ... | true |
 | test.rs:269:5:275:5 | enter fn test_if_not_operator | test.rs:270:12:270:13 | [boolean(true)] ! ... | false |
+| test.rs:269:5:275:5 | enter fn test_if_not_operator | test.rs:271:13:271:16 | true | false |
+| test.rs:269:5:275:5 | enter fn test_if_not_operator | test.rs:273:13:273:17 | false | true |
+| test.rs:270:12:270:13 | [boolean(false)] ! ... | test.rs:273:13:273:17 | false | false |
+| test.rs:270:12:270:13 | [boolean(true)] ! ... | test.rs:271:13:271:16 | true | true |
 | test.rs:277:5:279:5 | enter fn test_and_return | test.rs:278:9:278:19 | ... && ... | false |
 | test.rs:277:5:279:5 | enter fn test_and_return | test.rs:278:14:278:19 | return | true |
+| test.rs:281:5:286:5 | enter fn test_and_true | test.rs:282:9:284:9 | if ... {...} | false |
 | test.rs:281:5:286:5 | enter fn test_and_true | test.rs:282:13:282:21 | [boolean(false)] ... && ... | false |
+| test.rs:281:5:286:5 | enter fn test_and_true | test.rs:282:13:282:21 | [boolean(true)] ... && ... | true |
 | test.rs:281:5:286:5 | enter fn test_and_true | test.rs:282:18:282:21 | true | true |
+| test.rs:281:5:286:5 | enter fn test_and_true | test.rs:283:13:283:21 | ExprStmt | true |
+| test.rs:282:13:282:21 | [boolean(false)] ... && ... | test.rs:282:9:284:9 | if ... {...} | false |
+| test.rs:282:13:282:21 | [boolean(true)] ... && ... | test.rs:283:13:283:21 | ExprStmt | true |
+| test.rs:282:18:282:21 | true | test.rs:282:13:282:21 | [boolean(true)] ... && ... | true |
+| test.rs:282:18:282:21 | true | test.rs:283:13:283:21 | ExprStmt | true |
 | test.rs:309:26:309:26 | x | test.rs:309:42:309:42 | x | true |
 | test.rs:315:5:324:5 | enter fn test_match_with_return_in_scrutinee | test.rs:316:9:323:9 | match ... { ... } | false |
 | test.rs:315:5:324:5 | enter fn test_match_with_return_in_scrutinee | test.rs:317:13:317:21 | ExprStmt | true |
 | test.rs:315:5:324:5 | enter fn test_match_with_return_in_scrutinee | test.rs:319:13:319:23 | maybe_digit | false |
 | test.rs:315:5:324:5 | enter fn test_match_with_return_in_scrutinee | test.rs:321:26:321:26 | x | false |
 | test.rs:315:5:324:5 | enter fn test_match_with_return_in_scrutinee | test.rs:322:13:322:24 | ...::None | false |
+| test.rs:327:10:330:9 | [boolean(true)] match r { ... } | test.rs:330:15:330:18 | cond | true |
 | test.rs:328:18:328:18 | a | test.rs:327:10:330:9 | [boolean(true)] match r { ... } | true |
+| test.rs:328:18:328:18 | a | test.rs:330:15:330:18 | cond | true |
 | test.rs:409:28:414:9 | enter { ... } | test.rs:410:13:412:13 | if b {...} | false |
 | test.rs:409:28:414:9 | enter { ... } | test.rs:411:17:411:41 | ExprStmt | true |
+| test.rs:427:5:435:5 | enter fn const_block_assert | test.rs:431:13:431:49 | ExprStmt | false |
 | test.rs:427:5:435:5 | enter fn const_block_assert | test.rs:431:21:431:48 | [boolean(false)] ! ... | true |
 | test.rs:427:5:435:5 | enter fn const_block_assert | test.rs:431:21:431:48 | [boolean(true)] ! ... | false |
+| test.rs:431:21:431:48 | [boolean(true)] ! ... | test.rs:431:13:431:49 | ExprStmt | true |
+| test.rs:437:5:446:5 | enter fn const_block_panic | test.rs:439:9:444:9 | if false {...} | false |
+| test.rs:449:1:454:1 | enter fn dead_code | test.rs:451:9:451:17 | ExprStmt | true |
 | test.rs:466:1:480:1 | enter fn labelled_block1 | test.rs:469:9:471:9 | if ... {...} | false |
 | test.rs:466:1:480:1 | enter fn labelled_block1 | test.rs:470:13:470:27 | ExprStmt | true |
 | test.rs:466:1:480:1 | enter fn labelled_block1 | test.rs:473:9:475:9 | if ... {...} | false |
@@ -1308,6 +1654,8 @@ successor
 | test.rs:129:5:135:5 | enter fn test_if_else | test.rs:133:13:133:13 | n | false |
 | test.rs:152:5:158:5 | enter fn test_nested_if | test.rs:153:24:153:24 | a | true |
 | test.rs:152:5:158:5 | enter fn test_nested_if | test.rs:153:41:153:41 | a | false |
+| test.rs:153:13:153:48 | [boolean(false)] if ... {...} else {...} | test.rs:156:13:156:13 | 0 | false |
+| test.rs:153:13:153:48 | [boolean(true)] if ... {...} else {...} | test.rs:154:13:154:13 | 1 | true |
 | test.rs:153:22:153:32 | [boolean(false)] { ... } | test.rs:153:13:153:48 | [boolean(false)] if ... {...} else {...} | false |
 | test.rs:153:22:153:32 | [boolean(true)] { ... } | test.rs:153:13:153:48 | [boolean(true)] if ... {...} else {...} | true |
 | test.rs:153:24:153:24 | a | test.rs:153:22:153:32 | [boolean(false)] { ... } | false |
@@ -1316,60 +1664,89 @@ successor
 | test.rs:153:39:153:48 | [boolean(true)] { ... } | test.rs:153:13:153:48 | [boolean(true)] if ... {...} else {...} | true |
 | test.rs:153:41:153:41 | a | test.rs:153:39:153:48 | [boolean(false)] { ... } | false |
 | test.rs:153:41:153:41 | a | test.rs:153:39:153:48 | [boolean(true)] { ... } | true |
+| test.rs:161:13:164:9 | [boolean(false)] match a { ... } | test.rs:167:13:167:13 | 0 | false |
+| test.rs:161:13:164:9 | [boolean(true)] match a { ... } | test.rs:165:13:165:13 | 1 | true |
+| test.rs:162:18:162:21 | true | test.rs:161:13:164:9 | [boolean(true)] match a { ... } | true |
+| test.rs:163:13:163:13 | _ | test.rs:161:13:164:9 | [boolean(false)] match a { ... } | false |
 | test.rs:171:5:180:5 | enter fn test_nested_if_block | test.rs:172:12:175:9 | [boolean(false)] { ... } | false |
 | test.rs:171:5:180:5 | enter fn test_nested_if_block | test.rs:172:12:175:9 | [boolean(true)] { ... } | true |
+| test.rs:172:12:175:9 | [boolean(false)] { ... } | test.rs:178:13:178:13 | 0 | false |
+| test.rs:172:12:175:9 | [boolean(true)] { ... } | test.rs:176:13:176:13 | 1 | true |
 | test.rs:182:5:192:5 | enter fn test_if_assignment | test.rs:184:12:187:9 | [boolean(false)] { ... } | false |
 | test.rs:182:5:192:5 | enter fn test_if_assignment | test.rs:184:12:187:9 | [boolean(true)] { ... } | true |
+| test.rs:184:12:187:9 | [boolean(false)] { ... } | test.rs:190:13:190:13 | 0 | false |
+| test.rs:184:12:187:9 | [boolean(true)] { ... } | test.rs:188:13:188:13 | 1 | true |
 | test.rs:196:13:198:14 | ExprStmt | test.rs:196:13:198:13 | if ... {...} | false |
 | test.rs:196:13:198:14 | ExprStmt | test.rs:197:17:197:29 | ExprStmt | true |
+| test.rs:197:17:197:28 | [boolean(false)] break ... | test.rs:203:13:203:13 | 0 | false |
+| test.rs:197:17:197:28 | [boolean(true)] break ... | test.rs:201:13:201:13 | 1 | true |
 | test.rs:197:17:197:29 | ExprStmt | test.rs:197:17:197:28 | [boolean(false)] break ... | false |
 | test.rs:197:17:197:29 | ExprStmt | test.rs:197:17:197:28 | [boolean(true)] break ... | true |
 | test.rs:209:13:211:14 | ExprStmt | test.rs:209:13:211:13 | if ... {...} | false |
 | test.rs:209:13:211:14 | ExprStmt | test.rs:210:17:210:36 | ExprStmt | true |
+| test.rs:210:17:210:35 | [boolean(false)] break ''label ... | test.rs:216:13:216:13 | 0 | false |
+| test.rs:210:17:210:35 | [boolean(true)] break ''label ... | test.rs:214:13:214:13 | 1 | true |
 | test.rs:210:17:210:36 | ExprStmt | test.rs:210:17:210:35 | [boolean(false)] break ''label ... | false |
 | test.rs:210:17:210:36 | ExprStmt | test.rs:210:17:210:35 | [boolean(true)] break ''label ... | true |
 | test.rs:220:5:228:5 | enter fn test_labelled_block | test.rs:222:13:222:30 | [boolean(false)] break ''block ... | false |
 | test.rs:220:5:228:5 | enter fn test_labelled_block | test.rs:222:13:222:30 | [boolean(true)] break ''block ... | true |
+| test.rs:222:13:222:30 | [boolean(false)] break ''block ... | test.rs:226:13:226:13 | 0 | false |
+| test.rs:222:13:222:30 | [boolean(true)] break ''block ... | test.rs:224:13:224:13 | 1 | true |
 | test.rs:233:5:236:5 | enter fn test_and_operator | test.rs:234:17:234:22 | [boolean(false)] ... && ... | false |
 | test.rs:233:5:236:5 | enter fn test_and_operator | test.rs:234:22:234:22 | b | true |
 | test.rs:234:17:234:22 | [boolean(false)] ... && ... | test.rs:234:17:234:27 | ... && ... | false |
+| test.rs:234:17:234:22 | [boolean(true)] ... && ... | test.rs:234:27:234:27 | c | true |
 | test.rs:234:22:234:22 | b | test.rs:234:17:234:22 | [boolean(false)] ... && ... | false |
 | test.rs:234:22:234:22 | b | test.rs:234:17:234:22 | [boolean(true)] ... && ... | true |
 | test.rs:238:5:241:5 | enter fn test_or_operator | test.rs:239:17:239:22 | [boolean(true)] ... \|\| ... | true |
 | test.rs:238:5:241:5 | enter fn test_or_operator | test.rs:239:22:239:22 | b | false |
+| test.rs:239:17:239:22 | [boolean(false)] ... \|\| ... | test.rs:239:27:239:27 | c | false |
 | test.rs:239:17:239:22 | [boolean(true)] ... \|\| ... | test.rs:239:17:239:27 | ... \|\| ... | true |
 | test.rs:239:22:239:22 | b | test.rs:239:17:239:22 | [boolean(false)] ... \|\| ... | false |
 | test.rs:239:22:239:22 | b | test.rs:239:17:239:22 | [boolean(true)] ... \|\| ... | true |
 | test.rs:243:5:246:5 | enter fn test_or_operator_2 | test.rs:244:17:244:30 | [boolean(true)] ... \|\| ... | true |
 | test.rs:243:5:246:5 | enter fn test_or_operator_2 | test.rs:244:23:244:23 | b | false |
+| test.rs:244:17:244:30 | [boolean(false)] ... \|\| ... | test.rs:244:35:244:35 | c | false |
 | test.rs:244:17:244:30 | [boolean(true)] ... \|\| ... | test.rs:244:17:244:35 | ... \|\| ... | true |
 | test.rs:244:23:244:23 | b | test.rs:244:17:244:30 | [boolean(false)] ... \|\| ... | false |
 | test.rs:244:23:244:23 | b | test.rs:244:17:244:30 | [boolean(true)] ... \|\| ... | true |
 | test.rs:253:5:259:5 | enter fn test_if_and_operator | test.rs:254:12:254:17 | [boolean(false)] ... && ... | false |
 | test.rs:253:5:259:5 | enter fn test_if_and_operator | test.rs:254:17:254:17 | b | true |
 | test.rs:254:12:254:17 | [boolean(false)] ... && ... | test.rs:254:12:254:22 | [boolean(false)] ... && ... | false |
-| test.rs:254:12:254:17 | [boolean(true)] ... && ... | test.rs:254:12:254:22 | [boolean(false)] ... && ... | false |
-| test.rs:254:12:254:17 | [boolean(true)] ... && ... | test.rs:254:12:254:22 | [boolean(true)] ... && ... | true |
+| test.rs:254:12:254:17 | [boolean(true)] ... && ... | test.rs:254:22:254:22 | c | true |
+| test.rs:254:12:254:22 | [boolean(false)] ... && ... | test.rs:257:13:257:17 | false | false |
+| test.rs:254:12:254:22 | [boolean(true)] ... && ... | test.rs:255:13:255:16 | true | true |
 | test.rs:254:17:254:17 | b | test.rs:254:12:254:17 | [boolean(false)] ... && ... | false |
 | test.rs:254:17:254:17 | b | test.rs:254:12:254:17 | [boolean(true)] ... && ... | true |
+| test.rs:254:22:254:22 | c | test.rs:254:12:254:22 | [boolean(false)] ... && ... | false |
+| test.rs:254:22:254:22 | c | test.rs:254:12:254:22 | [boolean(true)] ... && ... | true |
 | test.rs:261:5:267:5 | enter fn test_if_or_operator | test.rs:262:12:262:17 | [boolean(true)] ... \|\| ... | true |
 | test.rs:261:5:267:5 | enter fn test_if_or_operator | test.rs:262:17:262:17 | b | false |
-| test.rs:262:12:262:17 | [boolean(false)] ... \|\| ... | test.rs:262:12:262:22 | [boolean(false)] ... \|\| ... | false |
-| test.rs:262:12:262:17 | [boolean(false)] ... \|\| ... | test.rs:262:12:262:22 | [boolean(true)] ... \|\| ... | true |
+| test.rs:262:12:262:17 | [boolean(false)] ... \|\| ... | test.rs:262:22:262:22 | c | false |
 | test.rs:262:12:262:17 | [boolean(true)] ... \|\| ... | test.rs:262:12:262:22 | [boolean(true)] ... \|\| ... | true |
+| test.rs:262:12:262:22 | [boolean(false)] ... \|\| ... | test.rs:265:13:265:17 | false | false |
+| test.rs:262:12:262:22 | [boolean(true)] ... \|\| ... | test.rs:263:13:263:16 | true | true |
 | test.rs:262:17:262:17 | b | test.rs:262:12:262:17 | [boolean(false)] ... \|\| ... | false |
 | test.rs:262:17:262:17 | b | test.rs:262:12:262:17 | [boolean(true)] ... \|\| ... | true |
+| test.rs:262:22:262:22 | c | test.rs:262:12:262:22 | [boolean(false)] ... \|\| ... | false |
+| test.rs:262:22:262:22 | c | test.rs:262:12:262:22 | [boolean(true)] ... \|\| ... | true |
 | test.rs:269:5:275:5 | enter fn test_if_not_operator | test.rs:270:12:270:13 | [boolean(false)] ! ... | true |
 | test.rs:269:5:275:5 | enter fn test_if_not_operator | test.rs:270:12:270:13 | [boolean(true)] ! ... | false |
+| test.rs:270:12:270:13 | [boolean(false)] ! ... | test.rs:273:13:273:17 | false | false |
+| test.rs:270:12:270:13 | [boolean(true)] ! ... | test.rs:271:13:271:16 | true | true |
 | test.rs:277:5:279:5 | enter fn test_and_return | test.rs:278:9:278:19 | ... && ... | false |
 | test.rs:277:5:279:5 | enter fn test_and_return | test.rs:278:14:278:19 | return | true |
 | test.rs:281:5:286:5 | enter fn test_and_true | test.rs:282:13:282:21 | [boolean(false)] ... && ... | false |
 | test.rs:281:5:286:5 | enter fn test_and_true | test.rs:282:18:282:21 | true | true |
+| test.rs:282:13:282:21 | [boolean(false)] ... && ... | test.rs:282:9:284:9 | if ... {...} | false |
+| test.rs:282:13:282:21 | [boolean(true)] ... && ... | test.rs:283:13:283:21 | ExprStmt | true |
+| test.rs:282:18:282:21 | true | test.rs:282:13:282:21 | [boolean(true)] ... && ... | true |
 | test.rs:309:26:309:26 | x | test.rs:309:42:309:42 | x | true |
 | test.rs:309:26:309:26 | x | test.rs:310:13:310:27 | ...::Some(...) | false |
 | test.rs:315:5:324:5 | enter fn test_match_with_return_in_scrutinee | test.rs:317:13:317:21 | ExprStmt | true |
 | test.rs:315:5:324:5 | enter fn test_match_with_return_in_scrutinee | test.rs:319:13:319:23 | maybe_digit | false |
 | test.rs:327:10:330:9 | [boolean(false)] match r { ... } | test.rs:327:9:330:18 | ... && ... | false |
+| test.rs:327:10:330:9 | [boolean(true)] match r { ... } | test.rs:330:15:330:18 | cond | true |
 | test.rs:328:18:328:18 | a | test.rs:327:10:330:9 | [boolean(false)] match r { ... } | false |
 | test.rs:328:18:328:18 | a | test.rs:327:10:330:9 | [boolean(true)] match r { ... } | true |
 | test.rs:329:13:329:13 | _ | test.rs:327:10:330:9 | [boolean(false)] match r { ... } | false |
@@ -1378,6 +1755,9 @@ successor
 | test.rs:427:5:435:5 | enter fn const_block_assert | test.rs:431:21:431:48 | [boolean(false)] ! ... | true |
 | test.rs:427:5:435:5 | enter fn const_block_assert | test.rs:431:21:431:48 | [boolean(true)] ! ... | false |
 | test.rs:431:21:431:48 | [boolean(false)] ! ... | test.rs:431:21:431:48 | if ... {...} | false |
+| test.rs:431:21:431:48 | [boolean(true)] ! ... | test.rs:431:13:431:49 | ExprStmt | true |
+| test.rs:437:5:446:5 | enter fn const_block_panic | test.rs:439:9:444:9 | if false {...} | false |
+| test.rs:449:1:454:1 | enter fn dead_code | test.rs:451:9:451:17 | ExprStmt | true |
 | test.rs:466:1:480:1 | enter fn labelled_block1 | test.rs:469:9:471:9 | if ... {...} | false |
 | test.rs:466:1:480:1 | enter fn labelled_block1 | test.rs:470:13:470:27 | ExprStmt | true |
 | test.rs:469:9:471:9 | if ... {...} | test.rs:473:9:475:9 | if ... {...} | false |
@@ -1421,58 +1801,58 @@ joinBlockPredecessor
 | test.rs:138:9:142:9 | if ... {...} else {...} | test.rs:141:13:141:13 | 0 | 1 |
 | test.rs:145:5:150:5 | exit fn test_if_let (normal) | test.rs:146:9:148:9 | if ... {...} | 1 |
 | test.rs:145:5:150:5 | exit fn test_if_let (normal) | test.rs:146:21:146:21 | n | 0 |
-| test.rs:153:9:157:9 | if ... {...} else {...} | test.rs:153:13:153:48 | [boolean(false)] if ... {...} else {...} | 0 |
-| test.rs:153:9:157:9 | if ... {...} else {...} | test.rs:153:13:153:48 | [boolean(true)] if ... {...} else {...} | 1 |
+| test.rs:153:9:157:9 | if ... {...} else {...} | test.rs:154:13:154:13 | 1 | 1 |
+| test.rs:153:9:157:9 | if ... {...} else {...} | test.rs:156:13:156:13 | 0 | 0 |
 | test.rs:153:13:153:48 | [boolean(false)] if ... {...} else {...} | test.rs:153:22:153:32 | [boolean(false)] { ... } | 1 |
 | test.rs:153:13:153:48 | [boolean(false)] if ... {...} else {...} | test.rs:153:39:153:48 | [boolean(false)] { ... } | 0 |
 | test.rs:153:13:153:48 | [boolean(true)] if ... {...} else {...} | test.rs:153:22:153:32 | [boolean(true)] { ... } | 1 |
 | test.rs:153:13:153:48 | [boolean(true)] if ... {...} else {...} | test.rs:153:39:153:48 | [boolean(true)] { ... } | 0 |
-| test.rs:161:9:168:9 | if ... {...} else {...} | test.rs:162:18:162:21 | true | 0 |
-| test.rs:161:9:168:9 | if ... {...} else {...} | test.rs:163:13:163:13 | _ | 1 |
-| test.rs:172:9:179:9 | if ... {...} else {...} | test.rs:172:12:175:9 | [boolean(false)] { ... } | 0 |
-| test.rs:172:9:179:9 | if ... {...} else {...} | test.rs:172:12:175:9 | [boolean(true)] { ... } | 1 |
-| test.rs:184:9:191:9 | if ... {...} else {...} | test.rs:184:12:187:9 | [boolean(false)] { ... } | 0 |
-| test.rs:184:9:191:9 | if ... {...} else {...} | test.rs:184:12:187:9 | [boolean(true)] { ... } | 1 |
-| test.rs:195:9:204:9 | if ... {...} else {...} | test.rs:197:17:197:28 | [boolean(false)] break ... | 0 |
-| test.rs:195:9:204:9 | if ... {...} else {...} | test.rs:197:17:197:28 | [boolean(true)] break ... | 1 |
+| test.rs:161:9:168:9 | if ... {...} else {...} | test.rs:165:13:165:13 | 1 | 1 |
+| test.rs:161:9:168:9 | if ... {...} else {...} | test.rs:167:13:167:13 | 0 | 0 |
+| test.rs:172:9:179:9 | if ... {...} else {...} | test.rs:176:13:176:13 | 1 | 1 |
+| test.rs:172:9:179:9 | if ... {...} else {...} | test.rs:178:13:178:13 | 0 | 0 |
+| test.rs:184:9:191:9 | if ... {...} else {...} | test.rs:188:13:188:13 | 1 | 1 |
+| test.rs:184:9:191:9 | if ... {...} else {...} | test.rs:190:13:190:13 | 0 | 0 |
+| test.rs:195:9:204:9 | if ... {...} else {...} | test.rs:201:13:201:13 | 1 | 1 |
+| test.rs:195:9:204:9 | if ... {...} else {...} | test.rs:203:13:203:13 | 0 | 0 |
 | test.rs:196:13:198:14 | ExprStmt | test.rs:194:5:205:5 | enter fn test_if_loop1 | 1 |
 | test.rs:196:13:198:14 | ExprStmt | test.rs:196:13:198:13 | if ... {...} | 0 |
-| test.rs:208:9:217:9 | if ... {...} else {...} | test.rs:210:17:210:35 | [boolean(false)] break ''label ... | 0 |
-| test.rs:208:9:217:9 | if ... {...} else {...} | test.rs:210:17:210:35 | [boolean(true)] break ''label ... | 1 |
+| test.rs:208:9:217:9 | if ... {...} else {...} | test.rs:214:13:214:13 | 1 | 1 |
+| test.rs:208:9:217:9 | if ... {...} else {...} | test.rs:216:13:216:13 | 0 | 0 |
 | test.rs:209:13:211:14 | ExprStmt | test.rs:207:5:218:5 | enter fn test_if_loop2 | 1 |
 | test.rs:209:13:211:14 | ExprStmt | test.rs:209:13:211:13 | if ... {...} | 0 |
-| test.rs:221:9:227:9 | if ... {...} else {...} | test.rs:222:13:222:30 | [boolean(false)] break ''block ... | 0 |
-| test.rs:221:9:227:9 | if ... {...} else {...} | test.rs:222:13:222:30 | [boolean(true)] break ''block ... | 1 |
+| test.rs:221:9:227:9 | if ... {...} else {...} | test.rs:224:13:224:13 | 1 | 1 |
+| test.rs:221:9:227:9 | if ... {...} else {...} | test.rs:226:13:226:13 | 0 | 0 |
 | test.rs:234:17:234:22 | [boolean(false)] ... && ... | test.rs:233:5:236:5 | enter fn test_and_operator | 1 |
 | test.rs:234:17:234:22 | [boolean(false)] ... && ... | test.rs:234:22:234:22 | b | 0 |
 | test.rs:234:17:234:27 | ... && ... | test.rs:234:17:234:22 | [boolean(false)] ... && ... | 0 |
-| test.rs:234:17:234:27 | ... && ... | test.rs:234:17:234:22 | [boolean(true)] ... && ... | 1 |
+| test.rs:234:17:234:27 | ... && ... | test.rs:234:27:234:27 | c | 1 |
 | test.rs:239:17:239:22 | [boolean(true)] ... \|\| ... | test.rs:238:5:241:5 | enter fn test_or_operator | 1 |
 | test.rs:239:17:239:22 | [boolean(true)] ... \|\| ... | test.rs:239:22:239:22 | b | 0 |
-| test.rs:239:17:239:27 | ... \|\| ... | test.rs:239:17:239:22 | [boolean(false)] ... \|\| ... | 0 |
-| test.rs:239:17:239:27 | ... \|\| ... | test.rs:239:17:239:22 | [boolean(true)] ... \|\| ... | 1 |
+| test.rs:239:17:239:27 | ... \|\| ... | test.rs:239:17:239:22 | [boolean(true)] ... \|\| ... | 0 |
+| test.rs:239:17:239:27 | ... \|\| ... | test.rs:239:27:239:27 | c | 1 |
 | test.rs:244:17:244:30 | [boolean(true)] ... \|\| ... | test.rs:243:5:246:5 | enter fn test_or_operator_2 | 1 |
 | test.rs:244:17:244:30 | [boolean(true)] ... \|\| ... | test.rs:244:23:244:23 | b | 0 |
-| test.rs:244:17:244:35 | ... \|\| ... | test.rs:244:17:244:30 | [boolean(false)] ... \|\| ... | 0 |
-| test.rs:244:17:244:35 | ... \|\| ... | test.rs:244:17:244:30 | [boolean(true)] ... \|\| ... | 1 |
-| test.rs:254:9:258:9 | if ... {...} else {...} | test.rs:254:12:254:22 | [boolean(false)] ... && ... | 0 |
-| test.rs:254:9:258:9 | if ... {...} else {...} | test.rs:254:12:254:22 | [boolean(true)] ... && ... | 1 |
+| test.rs:244:17:244:35 | ... \|\| ... | test.rs:244:17:244:30 | [boolean(true)] ... \|\| ... | 0 |
+| test.rs:244:17:244:35 | ... \|\| ... | test.rs:244:35:244:35 | c | 1 |
+| test.rs:254:9:258:9 | if ... {...} else {...} | test.rs:255:13:255:16 | true | 1 |
+| test.rs:254:9:258:9 | if ... {...} else {...} | test.rs:257:13:257:17 | false | 0 |
 | test.rs:254:12:254:17 | [boolean(false)] ... && ... | test.rs:253:5:259:5 | enter fn test_if_and_operator | 1 |
 | test.rs:254:12:254:17 | [boolean(false)] ... && ... | test.rs:254:17:254:17 | b | 0 |
 | test.rs:254:12:254:22 | [boolean(false)] ... && ... | test.rs:254:12:254:17 | [boolean(false)] ... && ... | 0 |
-| test.rs:254:12:254:22 | [boolean(false)] ... && ... | test.rs:254:12:254:17 | [boolean(true)] ... && ... | 1 |
-| test.rs:262:9:266:9 | if ... {...} else {...} | test.rs:262:12:262:22 | [boolean(false)] ... \|\| ... | 0 |
-| test.rs:262:9:266:9 | if ... {...} else {...} | test.rs:262:12:262:22 | [boolean(true)] ... \|\| ... | 1 |
+| test.rs:254:12:254:22 | [boolean(false)] ... && ... | test.rs:254:22:254:22 | c | 1 |
+| test.rs:262:9:266:9 | if ... {...} else {...} | test.rs:263:13:263:16 | true | 1 |
+| test.rs:262:9:266:9 | if ... {...} else {...} | test.rs:265:13:265:17 | false | 0 |
 | test.rs:262:12:262:17 | [boolean(true)] ... \|\| ... | test.rs:261:5:267:5 | enter fn test_if_or_operator | 1 |
 | test.rs:262:12:262:17 | [boolean(true)] ... \|\| ... | test.rs:262:17:262:17 | b | 0 |
-| test.rs:262:12:262:22 | [boolean(true)] ... \|\| ... | test.rs:262:12:262:17 | [boolean(false)] ... \|\| ... | 0 |
-| test.rs:262:12:262:22 | [boolean(true)] ... \|\| ... | test.rs:262:12:262:17 | [boolean(true)] ... \|\| ... | 1 |
-| test.rs:270:9:274:9 | if ... {...} else {...} | test.rs:270:12:270:13 | [boolean(false)] ! ... | 0 |
-| test.rs:270:9:274:9 | if ... {...} else {...} | test.rs:270:12:270:13 | [boolean(true)] ! ... | 1 |
+| test.rs:262:12:262:22 | [boolean(true)] ... \|\| ... | test.rs:262:12:262:17 | [boolean(true)] ... \|\| ... | 0 |
+| test.rs:262:12:262:22 | [boolean(true)] ... \|\| ... | test.rs:262:22:262:22 | c | 1 |
+| test.rs:270:9:274:9 | if ... {...} else {...} | test.rs:271:13:271:16 | true | 1 |
+| test.rs:270:9:274:9 | if ... {...} else {...} | test.rs:273:13:273:17 | false | 0 |
 | test.rs:277:5:279:5 | exit fn test_and_return (normal) | test.rs:278:9:278:19 | ... && ... | 1 |
 | test.rs:277:5:279:5 | exit fn test_and_return (normal) | test.rs:278:14:278:19 | return | 0 |
-| test.rs:281:5:286:5 | exit fn test_and_true (normal) | test.rs:282:13:282:21 | [boolean(false)] ... && ... | 1 |
-| test.rs:281:5:286:5 | exit fn test_and_true (normal) | test.rs:282:18:282:21 | true | 0 |
+| test.rs:281:5:286:5 | exit fn test_and_true (normal) | test.rs:282:9:284:9 | if ... {...} | 1 |
+| test.rs:281:5:286:5 | exit fn test_and_true (normal) | test.rs:283:13:283:21 | ExprStmt | 0 |
 | test.rs:292:5:294:5 | exit fn test_question_mark_operator_1 (normal) | test.rs:292:5:294:5 | enter fn test_question_mark_operator_1 | 1 |
 | test.rs:292:5:294:5 | exit fn test_question_mark_operator_1 (normal) | test.rs:293:32:293:32 | 4 | 0 |
 | test.rs:296:5:301:5 | exit fn test_question_mark_operator_2 (normal) | test.rs:296:5:301:5 | enter fn test_question_mark_operator_2 | 1 |
@@ -1489,7 +1869,7 @@ joinBlockPredecessor
 | test.rs:316:9:323:9 | match ... { ... } | test.rs:321:26:321:26 | x | 0 |
 | test.rs:316:9:323:9 | match ... { ... } | test.rs:322:13:322:24 | ...::None | 1 |
 | test.rs:327:9:330:18 | ... && ... | test.rs:327:10:330:9 | [boolean(false)] match r { ... } | 0 |
-| test.rs:327:9:330:18 | ... && ... | test.rs:327:10:330:9 | [boolean(true)] match r { ... } | 1 |
+| test.rs:327:9:330:18 | ... && ... | test.rs:330:15:330:18 | cond | 1 |
 | test.rs:327:10:330:9 | [boolean(false)] match r { ... } | test.rs:328:18:328:18 | a | 0 |
 | test.rs:327:10:330:9 | [boolean(false)] match r { ... } | test.rs:329:13:329:13 | _ | 1 |
 | test.rs:334:9:337:9 | match r { ... } | test.rs:335:16:335:20 | value | 0 |
@@ -1511,8 +1891,8 @@ joinBlockPredecessor
 | test.rs:385:13:385:14 | TupleExpr | test.rs:385:13:385:14 | TupleExpr | 0 |
 | test.rs:409:28:414:9 | exit { ... } (normal) | test.rs:410:13:412:13 | if b {...} | 1 |
 | test.rs:409:28:414:9 | exit { ... } (normal) | test.rs:411:17:411:41 | ExprStmt | 0 |
+| test.rs:431:21:431:48 | if ... {...} | test.rs:431:13:431:49 | ExprStmt | 1 |
 | test.rs:431:21:431:48 | if ... {...} | test.rs:431:21:431:48 | [boolean(false)] ! ... | 0 |
-| test.rs:431:21:431:48 | if ... {...} | test.rs:431:21:431:48 | [boolean(true)] ! ... | 1 |
 | test.rs:467:18:478:5 | 'block: { ... } | test.rs:470:13:470:27 | ExprStmt | 0 |
 | test.rs:467:18:478:5 | 'block: { ... } | test.rs:473:9:475:9 | if ... {...} | 2 |
 | test.rs:467:18:478:5 | 'block: { ... } | test.rs:474:13:474:27 | ExprStmt | 1 |
diff --git a/rust/ql/test/library-tests/controlflow/BasicBlocks.ql b/rust/ql/test/library-tests/controlflow/BasicBlocks.ql
index 07045268d834..28083ef14785 100644
--- a/rust/ql/test/library-tests/controlflow/BasicBlocks.ql
+++ b/rust/ql/test/library-tests/controlflow/BasicBlocks.ql
@@ -10,14 +10,14 @@ query predicate immediateDominator(BasicBlock bb1, BasicBlock bb2) {
   bb1.getImmediateDominator() = bb2
 }
 
-query predicate controls(ConditionBlock bb1, BasicBlock bb2, SuccessorType t) {
+query predicate controls(ConditionBasicBlock bb1, BasicBlock bb2, SuccessorType t) {
   bb1.controls(bb2, t)
 }
 
-query predicate successor(ConditionBlock bb1, BasicBlock bb2, SuccessorType t) {
+query predicate successor(ConditionBasicBlock bb1, BasicBlock bb2, SuccessorType t) {
   bb1.getASuccessor(t) = bb2
 }
 
-query predicate joinBlockPredecessor(JoinBlock bb1, BasicBlock bb2, int i) {
+query predicate joinBlockPredecessor(JoinBasicBlock bb1, BasicBlock bb2, int i) {
   bb1.getJoinBlockPredecessor(i) = bb2
 }
diff --git a/shared/controlflow/codeql/controlflow/BasicBlock.qll b/shared/controlflow/codeql/controlflow/BasicBlock.qll
new file mode 100644
index 000000000000..2cd075bac576
--- /dev/null
+++ b/shared/controlflow/codeql/controlflow/BasicBlock.qll
@@ -0,0 +1,242 @@
+/**
+ * This modules provides an implementation of a basic block class based based
+ * on a control flow graph implementation.
+ *
+ * INTERNAL use only. This is an experimental API subject to change without
+ * notice.
+ */
+
+/** Provides the language-specific input specification. */
+signature module InputSig {
+  class SuccessorType;
+
+  /** Hold if `t` represents a conditional successor type. */
+  predicate successorTypeIsCondition(SuccessorType t);
+
+  /** The class of control flow nodes. */
+  class Node {
+    string toString();
+  }
+
+  Node nodeGetASuccessor(Node node, SuccessorType t);
+
+  /** Holds if `node` is the beginning of an entry basic block. */
+  predicate nodeIsEntry(Node node);
+
+  /** Holds if `node` is the beginning of an entry basic block. */
+  predicate nodeIsExit(Node node);
+}
+
+/**
+ * Provides a basic block construction on top of a control flow graph.
+ */
+module Make<InputSig Input> {
+  private import Input
+
+  final class BasicBlock = BasicBlockImpl;
+
+  private Node nodeGetAPredecessor(Node node, SuccessorType s) {
+    nodeGetASuccessor(result, s) = node
+  }
+
+  /** Holds if this node has more than one predecessor. */
+  private predicate nodeIsJoin(Node node) { strictcount(nodeGetAPredecessor(node, _)) > 1 }
+
+  private predicate nodeIsBranch(Node node) { strictcount(nodeGetASuccessor(node, _)) > 1 }
+
+  /**
+   * A basic block, that is, a maximal straight-line sequence of control flow nodes
+   * without branches or joins.
+   */
+  private class BasicBlockImpl extends TBasicBlockStart {
+    /** Gets an immediate successor of this basic block, if any. */
+    BasicBlock getASuccessor() { result = this.getASuccessor(_) }
+
+    /** Gets an immediate successor of this basic block of a given type, if any. */
+    BasicBlock getASuccessor(SuccessorType t) {
+      result.getFirstNode() = nodeGetASuccessor(this.getLastNode(), t)
+    }
+
+    /** Gets an immediate predecessor of this basic block, if any. */
+    BasicBlock getAPredecessor() { result.getASuccessor(_) = this }
+
+    /** Gets an immediate predecessor of this basic block of a given type, if any. */
+    BasicBlock getAPredecessor(SuccessorType t) { result.getASuccessor(t) = this }
+
+    /** Gets the control flow node at a specific (zero-indexed) position in this basic block. */
+    Node getNode(int pos) { bbIndex(this.getFirstNode(), result, pos) }
+
+    /** Gets a control flow node in this basic block. */
+    Node getANode() { result = this.getNode(_) }
+
+    /** Gets the first control flow node in this basic block. */
+    Node getFirstNode() { this = TBasicBlockStart(result) }
+
+    /** Gets the last control flow node in this basic block. */
+    Node getLastNode() { result = this.getNode(this.length() - 1) }
+
+    /** Gets the length of this basic block. */
+    int length() { result = strictcount(this.getANode()) }
+
+    /**
+     * Holds if this basic block immediately dominates basic block `bb`.
+     *
+     * That is, `bb` is an immediate successor of this basic block and all
+     * paths reaching basic block `bb` from some entry point basic block must
+     * go through this basic block.
+     */
+    predicate immediatelyDominates(BasicBlock bb) { bbIDominates(this, bb) }
+
+    /**
+     * Holds if this basic block strictly dominates basic block `bb`.
+     *
+     * That is, all paths reaching `bb` from some entry point basic block must
+     * go through this basic block and this basic block is different from `bb`.
+     */
+    predicate strictlyDominates(BasicBlock bb) { bbIDominates+(this, bb) }
+
+    /**
+     * Holds if this basic block dominates basic block `bb`.
+     *
+     * That is, all paths reaching `bb` from some entry point basic block must
+     * go through this basic block.
+     */
+    predicate dominates(BasicBlock bb) {
+      bb = this or
+      this.strictlyDominates(bb)
+    }
+
+    /**
+     * Holds if `df` is in the dominance frontier of this basic block. That is,
+     * this basic block dominates a predecessor of `df`, but does not dominate
+     * `df` itself.
+     */
+    predicate inDominanceFrontier(BasicBlock df) {
+      this.dominatesPredecessor(df) and
+      not this.strictlyDominates(df)
+    }
+
+    /**
+     * Holds if this basic block dominates a predecessor of `df`.
+     */
+    private predicate dominatesPredecessor(BasicBlock df) { this.dominates(df.getAPredecessor()) }
+
+    /**
+     * Gets the basic block that immediately dominates this basic block, if any.
+     *
+     * That is, all paths reaching this basic block from some entry point
+     * basic block must go through the result, which is an immediate basic block
+     * predecessor of this basic block.
+     */
+    BasicBlock getImmediateDominator() { bbIDominates(result, this) }
+
+    /**
+     * Holds if this basic block strictly post-dominates basic block `bb`.
+     *
+     * That is, all paths reaching a normal exit point basic block from basic
+     * block `bb` must go through this basic block and this basic block is
+     * different from `bb`.
+     */
+    predicate strictlyPostDominates(BasicBlock bb) { bbIPostDominates+(this, bb) }
+
+    /**
+     * Holds if this basic block post-dominates basic block `bb`.
+     *
+     * That is, all paths reaching a normal exit point basic block from basic
+     * block `bb` must go through this basic block.
+     */
+    predicate postDominates(BasicBlock bb) {
+      this.strictlyPostDominates(bb) or
+      this = bb
+    }
+
+    /** Holds if this basic block is in a loop in the control flow graph. */
+    predicate inLoop() { this.getASuccessor+() = this }
+
+    /** Gets a textual representation of this basic block. */
+    string toString() { result = this.getFirstNode().toString() }
+  }
+
+  cached
+  private module Cached {
+    /**
+     * Internal representation of basic blocks. A basic block is represented
+     * by its first CFG node.
+     */
+    cached
+    newtype TBasicBlock = TBasicBlockStart(Node cfn) { startsBB(cfn) }
+
+    /** Holds if `cfn` starts a new basic block. */
+    private predicate startsBB(Node cfn) {
+      not exists(nodeGetAPredecessor(cfn, _)) and exists(nodeGetASuccessor(cfn, _))
+      or
+      nodeIsJoin(cfn)
+      or
+      nodeIsBranch(nodeGetAPredecessor(cfn, _))
+      or
+      // In cases such as
+      //
+      // ```rb
+      // if x or y
+      //     foo
+      // else
+      //     bar
+      // ```
+      //
+      // we have a CFG that looks like
+      //
+      // x --false--> [false] x or y --false--> bar
+      // \                    |
+      //  --true--> y --false--
+      //            \
+      //             --true--> [true] x or y --true--> foo
+      //
+      // and we want to ensure that both `foo` and `bar` start a new basic block.
+      exists(nodeGetAPredecessor(cfn, any(SuccessorType s | successorTypeIsCondition(s))))
+    }
+
+    /**
+     * Holds if `succ` is a control flow successor of `pred` within
+     * the same basic block.
+     */
+    private predicate intraBBSucc(Node pred, Node succ) {
+      succ = nodeGetASuccessor(pred, _) and
+      not startsBB(succ)
+    }
+
+    /**
+     * Holds if `bbStart` is the first node in a basic block and `cfn` is the
+     * `i`th node in the same basic block.
+     */
+    cached
+    predicate bbIndex(Node bbStart, Node cfn, int i) =
+      shortestDistances(startsBB/1, intraBBSucc/2)(bbStart, cfn, i)
+
+    /**
+     * Holds if the first node of basic block `succ` is a control flow
+     * successor of the last node of basic block `pred`.
+     */
+    private predicate succBB(BasicBlock pred, BasicBlock succ) { pred.getASuccessor(_) = succ }
+
+    /** Holds if `dom` is an immediate dominator of `bb`. */
+    cached
+    predicate bbIDominates(BasicBlock dom, BasicBlock bb) =
+      idominance(entryBB/1, succBB/2)(_, dom, bb)
+
+    /** Holds if `pred` is a basic block predecessor of `succ`. */
+    private predicate predBB(BasicBlock succ, BasicBlock pred) { succBB(pred, succ) }
+
+    /** Holds if `bb` is an exit basic block that represents normal exit. */
+    private predicate exitBB(BasicBlock bb) { nodeIsExit(bb.getANode()) }
+
+    /** Holds if `dom` is an immediate post-dominator of `bb`. */
+    cached
+    predicate bbIPostDominates(BasicBlock dom, BasicBlock bb) =
+      idominance(exitBB/1, predBB/2)(_, dom, bb)
+  }
+
+  private import Cached
+
+  /** Holds if `bb` is an entry basic block. */
+  private predicate entryBB(BasicBlock bb) { nodeIsEntry(bb.getFirstNode()) }
+}
diff --git a/shared/controlflow/codeql/controlflow/Cfg.qll b/shared/controlflow/codeql/controlflow/Cfg.qll
index 4130920daf67..5a1353ee5987 100644
--- a/shared/controlflow/codeql/controlflow/Cfg.qll
+++ b/shared/controlflow/codeql/controlflow/Cfg.qll
@@ -48,7 +48,7 @@ signature module InputSig<LocationSig Location> {
     Location getLocation();
   }
 
-  /** Gets the CFG scope of AST node `n`. */
+  /** Gets the CFG scope of the AST node `n`. */
   CfgScope getCfgScope(AstNode n);
 
   /** Holds if `first` is executed first when entering `scope`. */
@@ -77,6 +77,20 @@ signature module InputSig<LocationSig Location> {
 
   /** Holds if `t` is an abnormal exit type out of a CFG scope. */
   predicate isAbnormalExitType(SuccessorType t);
+
+  /**
+   * Gets an `id` of `node`. This is used to order the predecessors of a join
+   * basic block.
+   */
+  bindingset[node]
+  default predicate idOfAstNode(AstNode node, int id) { none() }
+
+  /**
+   * Gets an `id` of `scope`. This is used to order the predecessors of a join
+   * basic block.
+   */
+  bindingset[scope]
+  default predicate idOfCfgScope(CfgScope scope, int id) { none() }
 }
 
 /** Provides input needed for CFG splitting. */
@@ -1514,6 +1528,261 @@ module MakeWithSplitting<
     /** Holds if CFG scope `scope` lacks an initial AST node. */
     query predicate scopeNoFirst(CfgScope scope) { not scopeFirst(scope, _) }
   }
+
+  /**
+   * Provides a basic block construction on top of the control flow graph.
+   */
+  module BasicBlocks {
+    private import codeql.controlflow.BasicBlock as BB
+
+    private class NodeAlias = Node;
+
+    private module BasicBlockInputSig implements BB::InputSig {
+      class SuccessorType = Input::SuccessorType;
+
+      predicate successorTypeIsCondition = Input::successorTypeIsCondition/1;
+
+      class Node = NodeAlias;
+
+      Node nodeGetASuccessor(Node node, SuccessorType t) { result = node.getASuccessor(t) }
+
+      predicate nodeIsEntry(Node node) { node instanceof EntryNode }
+
+      predicate nodeIsExit(Node node) { node.(AnnotatedExitNode).isNormal() }
+    }
+
+    private module BasicBlockImpl = BB::Make<BasicBlockInputSig>;
+
+    /**
+     * A basic block, that is, a maximal straight-line sequence of control flow nodes
+     * without branches or joins.
+     */
+    final class BasicBlock extends BasicBlockImpl::BasicBlock {
+      // We extend `BasicBlockImpl::BasicBlock` to add the `getScope` and
+      // `getLocation`.
+      /** Gets the scope of this basic block. */
+      CfgScope getScope() {
+        if this instanceof EntryBasicBlock
+        then result = this.getFirstNode().getScope()
+        else result = this.getAPredecessor().getScope()
+      }
+
+      /** Gets the location of this basic block. */
+      Location getLocation() { result = this.getFirstNode().getLocation() }
+
+      /** Gets an immediate successor of this basic block, if any. */
+      BasicBlock getASuccessor() { result = super.getASuccessor() }
+
+      /** Gets an immediate successor of this basic block of a given type, if any. */
+      BasicBlock getASuccessor(SuccessorType t) {
+        result.getFirstNode() = this.getLastNode().getASuccessor(t)
+      }
+
+      /** Gets an immediate predecessor of this basic block, if any. */
+      BasicBlock getAPredecessor() { result.getASuccessor() = this }
+
+      /** Gets an immediate predecessor of this basic block of a given type, if any. */
+      BasicBlock getAPredecessor(SuccessorType t) { result.getASuccessor(t) = this }
+
+      /**
+       * Holds if this basic block immediately dominates basic block `bb`.
+       *
+       * That is, `bb` is an immediate successor of this basic block and all
+       * paths reaching basic block `bb` from some entry point basic block must
+       * go through this basic block.
+       */
+      predicate immediatelyDominates(BasicBlock bb) { super.immediatelyDominates(bb) }
+
+      /**
+       * Holds if this basic block strictly dominates basic block `bb`.
+       *
+       * That is, all paths reaching `bb` from some entry point basic block must
+       * go through this basic block and this basic block is different from `bb`.
+       */
+      predicate strictlyDominates(BasicBlock bb) { super.strictlyDominates(bb) }
+
+      /**
+       * Holds if this basic block dominates basic block `bb`.
+       *
+       * That is, all paths reaching `bb` from some entry point basic block must
+       * go through this basic block.
+       */
+      predicate dominates(BasicBlock bb) { super.dominates(bb) }
+
+      /**
+       * Holds if `df` is in the dominance frontier of this basic block. That is,
+       * this basic block dominates a predecessor of `df`, but does not dominate
+       * `df` itself.
+       */
+      predicate inDominanceFrontier(BasicBlock df) { super.inDominanceFrontier(df) }
+
+      /**
+       * Gets the basic block that immediately dominates this basic block, if any.
+       *
+       * That is, all paths reaching this basic block from some entry point
+       * basic block must go through the result, which is an immediate basic block
+       * predecessor of this basic block.
+       */
+      BasicBlock getImmediateDominator() { result = super.getImmediateDominator() }
+
+      /**
+       * Holds if this basic block strictly post-dominates basic block `bb`.
+       *
+       * That is, all paths reaching a normal exit point basic block from basic
+       * block `bb` must go through this basic block and this basic block is
+       * different from `bb`.
+       */
+      predicate strictlyPostDominates(BasicBlock bb) { super.strictlyPostDominates(bb) }
+
+      /**
+       * Holds if this basic block post-dominates basic block `bb`.
+       *
+       * That is, all paths reaching a normal exit point basic block from basic
+       * block `bb` must go through this basic block.
+       */
+      predicate postDominates(BasicBlock bb) { super.postDominates(bb) }
+    }
+
+    /**
+     * An entry basic block, that is, a basic block whose first node is
+     * an entry node.
+     */
+    final class EntryBasicBlock extends BasicBlock {
+      EntryBasicBlock() { this.getFirstNode() instanceof EntryNode }
+    }
+
+    /**
+     * An annotated exit basic block, that is, a basic block that contains an
+     * annotated exit node.
+     */
+    final class AnnotatedExitBasicBlock extends BasicBlock {
+      private boolean normal;
+
+      AnnotatedExitBasicBlock() {
+        exists(AnnotatedExitNode n |
+          n = this.getANode() and
+          if n.isNormal() then normal = true else normal = false
+        )
+      }
+
+      /** Holds if this block represent a normal exit. */
+      final predicate isNormal() { normal = true }
+    }
+
+    /**
+     * An exit basic block, that is, a basic block whose last node is
+     * an exit node.
+     */
+    final class ExitBasicBlock extends BasicBlock {
+      ExitBasicBlock() { this.getLastNode() instanceof ExitNode }
+    }
+
+    private module JoinBlockPredecessors {
+      int getId(JoinPredecessorBasicBlock jbp) {
+        idOfAstNode(jbp.getFirstNode().(AstCfgNode).getAstNode(), result)
+        or
+        idOfCfgScope(jbp.(EntryBasicBlock).getScope(), result)
+      }
+
+      string getSplitString(JoinPredecessorBasicBlock jbp) {
+        result = jbp.getFirstNode().(AstCfgNode).getSplitsString()
+        or
+        not exists(jbp.getFirstNode().(AstCfgNode).getSplitsString()) and
+        result = ""
+      }
+    }
+
+    /**
+     * Gets the `i`th predecessor of join block `jb`, with respect to some
+     * arbitrary order.
+     */
+    cached
+    JoinPredecessorBasicBlock getJoinBlockPredecessor(JoinBasicBlock jb, int i) {
+      result =
+        rank[i + 1](JoinPredecessorBasicBlock jbp |
+          jbp = jb.getAPredecessor()
+        |
+          jbp order by JoinBlockPredecessors::getId(jbp), JoinBlockPredecessors::getSplitString(jbp)
+        )
+    }
+
+    /** A basic block with more than one predecessor. */
+    final class JoinBasicBlock extends BasicBlock {
+      JoinBasicBlock() { this.getFirstNode().isJoin() }
+
+      /**
+       * Gets the `i`th predecessor of this join block, with respect to some
+       * arbitrary order.
+       */
+      JoinPredecessorBasicBlock getJoinBlockPredecessor(int i) {
+        result = getJoinBlockPredecessor(this, i)
+      }
+    }
+
+    /** A basic block that is an immediate predecessor of a join block. */
+    final class JoinPredecessorBasicBlock extends BasicBlock {
+      JoinPredecessorBasicBlock() { this.getASuccessor() instanceof JoinBasicBlock }
+    }
+
+    /** A basic block that terminates in a condition, splitting the subsequent control flow. */
+    final class ConditionBasicBlock extends BasicBlock {
+      ConditionBasicBlock() { this.getLastNode().isCondition() }
+
+      /**
+       * Holds if basic block `succ` is immediately controlled by this basic
+       * block with conditional value `s`. That is, `succ` is an immediate
+       * successor of this block, and `succ` can only be reached from
+       * the callable entry point by going via the `s` edge out of this basic block.
+       */
+      pragma[nomagic]
+      predicate immediatelyControls(BasicBlock succ, SuccessorType s) {
+        succ = this.getASuccessor(s) and
+        forall(BasicBlock pred | pred = succ.getAPredecessor() and pred != this |
+          succ.dominates(pred)
+        )
+      }
+
+      /**
+       * Holds if basic block `controlled` is controlled by this basic block with
+       * conditional value `s`. That is, `controlled` can only be reached from
+       * the callable entry point by going via the `s` edge out of this basic block.
+       */
+      predicate controls(BasicBlock controlled, SuccessorType s) {
+        // For this block to control the block `controlled` with `testIsTrue` the following must be true:
+        // 1/ Execution must have passed through the test i.e. `this` must strictly dominate `controlled`.
+        // 2/ Execution must have passed through the `testIsTrue` edge leaving `this`.
+        //
+        // Although "passed through the true edge" implies that `this.getATrueSuccessor()` dominates `controlled`,
+        // the reverse is not true, as flow may have passed through another edge to get to `this.getATrueSuccessor()`
+        // so we need to assert that `this.getATrueSuccessor()` dominates `controlled` *and* that
+        // all predecessors of `this.getATrueSuccessor()` are either `this` or dominated by `this.getATrueSuccessor()`.
+        //
+        // For example, in the following C# snippet:
+        // ```csharp
+        // if (x)
+        //   controlled;
+        // false_successor;
+        // uncontrolled;
+        // ```
+        // `false_successor` dominates `uncontrolled`, but not all of its predecessors are `this` (`if (x)`)
+        //  or dominated by itself. Whereas in the following code:
+        // ```csharp
+        // if (x)
+        //   while (controlled)
+        //     also_controlled;
+        // false_successor;
+        // uncontrolled;
+        // ```
+        // the block `while controlled` is controlled because all of its predecessors are `this` (`if (x)`)
+        // or (in the case of `also_controlled`) dominated by itself.
+        //
+        // The additional constraint on the predecessors of the test successor implies
+        // that `this` strictly dominates `controlled` so that isn't necessary to check
+        // directly.
+        exists(BasicBlock succ | this.immediatelyControls(succ, s) | succ.dominates(controlled))
+      }
+    }
+  }
 }
 
 /** Provides a disabled `SplittingInputSig` implementation. */
diff --git a/swift/ql/lib/codeql/swift/controlflow/BasicBlocks.qll b/swift/ql/lib/codeql/swift/controlflow/BasicBlocks.qll
index dfe18e4ceded..b0094045113c 100644
--- a/swift/ql/lib/codeql/swift/controlflow/BasicBlocks.qll
+++ b/swift/ql/lib/codeql/swift/controlflow/BasicBlocks.qll
@@ -1,271 +1,96 @@
 /** Provides classes representing basic blocks. */
 
-private import swift
 private import ControlFlowGraph
-private import internal.ControlFlowGraphImpl as Impl
-private import internal.ControlFlowElements
-private import CfgNodes
+private import internal.ControlFlowGraphImpl as CfgImpl
 private import SuccessorTypes
-private import codeql.swift.generated.Raw
-private import codeql.swift.generated.Synth
+private import CfgImpl::BasicBlocks as BasicBlocksImpl
 
 /**
  * A basic block, that is, a maximal straight-line sequence of control flow nodes
  * without branches or joins.
  */
-class BasicBlock extends TBasicBlockStart {
-  /** Gets the scope of this basic block. */
-  CfgScope getScope() { result = this.getAPredecessor().getScope() }
-
+final class BasicBlock extends BasicBlocksImpl::BasicBlock {
   /** Gets an immediate successor of this basic block, if any. */
-  BasicBlock getASuccessor() { result = this.getASuccessor(_) }
+  BasicBlock getASuccessor() { result = super.getASuccessor() }
 
   /** Gets an immediate successor of this basic block of a given type, if any. */
-  BasicBlock getASuccessor(SuccessorType t) {
-    result.getFirstNode() = this.getLastNode().getASuccessor(t)
-  }
+  BasicBlock getASuccessor(SuccessorType t) { result = super.getASuccessor(t) }
 
   /** Gets an immediate predecessor of this basic block, if any. */
-  BasicBlock getAPredecessor() { result.getASuccessor() = this }
+  BasicBlock getAPredecessor() { result = super.getAPredecessor() }
 
   /** Gets an immediate predecessor of this basic block of a given type, if any. */
-  BasicBlock getAPredecessor(SuccessorType t) { result.getASuccessor(t) = this }
+  BasicBlock getAPredecessor(SuccessorType t) { result = super.getAPredecessor(t) }
 
   /** Gets the control flow node at a specific (zero-indexed) position in this basic block. */
-  ControlFlowNode getNode(int pos) { bbIndex(this.getFirstNode(), result, pos) }
+  ControlFlowNode getNode(int pos) { result = super.getNode(pos) }
 
   /** Gets a control flow node in this basic block. */
-  ControlFlowNode getANode() { result = this.getNode(_) }
+  ControlFlowNode getANode() { result = super.getANode() }
 
   /** Gets the first control flow node in this basic block. */
-  ControlFlowNode getFirstNode() { this = TBasicBlockStart(result) }
+  ControlFlowNode getFirstNode() { result = super.getFirstNode() }
 
   /** Gets the last control flow node in this basic block. */
-  ControlFlowNode getLastNode() { result = this.getNode(this.length() - 1) }
-
-  /** Gets the length of this basic block. */
-  int length() { result = strictcount(this.getANode()) }
-
-  predicate immediatelyDominates(BasicBlock bb) { bbIDominates(this, bb) }
+  ControlFlowNode getLastNode() { result = super.getLastNode() }
 
-  predicate strictlyDominates(BasicBlock bb) { bbIDominates+(this, bb) }
-
-  predicate dominates(BasicBlock bb) {
-    bb = this or
-    this.strictlyDominates(bb)
-  }
-
-  predicate inDominanceFrontier(BasicBlock df) {
-    this.dominatesPredecessor(df) and
-    not this.strictlyDominates(df)
-  }
-
-  /**
-   * Holds if this basic block dominates a predecessor of `df`.
-   */
-  private predicate dominatesPredecessor(BasicBlock df) { this.dominates(df.getAPredecessor()) }
-
-  BasicBlock getImmediateDominator() { bbIDominates(result, this) }
-
-  predicate strictlyPostDominates(BasicBlock bb) { bbIPostDominates+(this, bb) }
-
-  predicate postDominates(BasicBlock bb) {
-    this.strictlyPostDominates(bb) or
-    this = bb
-  }
-
-  /** Holds if this basic block is in a loop in the control flow graph. */
-  predicate inLoop() { this.getASuccessor+() = this }
-
-  /** Gets a textual representation of this basic block. */
-  string toString() { result = this.getFirstNode().toString() }
-
-  /** Gets the location of this basic block. */
-  Location getLocation() { result = this.getFirstNode().getLocation() }
-}
-
-cached
-private module Cached {
-  /** Internal representation of basic blocks. */
-  cached
-  newtype TBasicBlock = TBasicBlockStart(ControlFlowNode cfn) { startsBB(cfn) }
-
-  /** Holds if `cfn` starts a new basic block. */
-  private predicate startsBB(ControlFlowNode cfn) {
-    not exists(cfn.getAPredecessor()) and exists(cfn.getASuccessor())
-    or
-    cfn.isJoin()
-    or
-    cfn.getAPredecessor().isBranch()
-  }
-
-  /**
-   * Holds if `succ` is a control flow successor of `pred` within
-   * the same basic block.
-   */
-  private predicate intraBBSucc(ControlFlowNode pred, ControlFlowNode succ) {
-    succ = pred.getASuccessor() and
-    not startsBB(succ)
-  }
-
-  /**
-   * Holds if `cfn` is the `i`th node in basic block `bb`.
-   *
-   * In other words, `i` is the shortest distance from a node `bb`
-   * that starts a basic block to `cfn` along the `intraBBSucc` relation.
-   */
-  cached
-  predicate bbIndex(ControlFlowNode bbStart, ControlFlowNode cfn, int i) =
-    shortestDistances(startsBB/1, intraBBSucc/2)(bbStart, cfn, i)
+  predicate immediatelyDominates(BasicBlock bb) { super.immediatelyDominates(bb) }
 
-  /**
-   * Holds if the first node of basic block `succ` is a control flow
-   * successor of the last node of basic block `pred`.
-   */
-  private predicate succBB(BasicBlock pred, BasicBlock succ) { succ = pred.getASuccessor() }
+  predicate strictlyDominates(BasicBlock bb) { super.strictlyDominates(bb) }
 
-  /** Holds if `dom` is an immediate dominator of `bb`. */
-  cached
-  predicate bbIDominates(BasicBlock dom, BasicBlock bb) =
-    idominance(entryBB/1, succBB/2)(_, dom, bb)
+  predicate dominates(BasicBlock bb) { super.dominates(bb) }
 
-  /** Holds if `pred` is a basic block predecessor of `succ`. */
-  private predicate predBB(BasicBlock succ, BasicBlock pred) { succBB(pred, succ) }
+  predicate inDominanceFrontier(BasicBlock df) { super.inDominanceFrontier(df) }
 
-  /** Holds if `bb` is an exit basic block that represents normal exit. */
-  private predicate normalExitBB(BasicBlock bb) {
-    bb.getANode().(Impl::AnnotatedExitNode).isNormal()
-  }
+  BasicBlock getImmediateDominator() { result = super.getImmediateDominator() }
 
-  /** Holds if `dom` is an immediate post-dominator of `bb`. */
-  cached
-  predicate bbIPostDominates(BasicBlock dom, BasicBlock bb) =
-    idominance(normalExitBB/1, predBB/2)(_, dom, bb)
+  predicate strictlyPostDominates(BasicBlock bb) { super.strictlyPostDominates(bb) }
 
-  /**
-   * Gets the `i`th predecessor of join block `jb`, with respect to some
-   * arbitrary order.
-   */
-  cached
-  JoinBlockPredecessor getJoinBlockPredecessor(JoinBlock jb, int i) {
-    result =
-      rank[i + 1](JoinBlockPredecessor jbp |
-        jbp = jb.getAPredecessor()
-      |
-        jbp order by JoinBlockPredecessors::getId(jbp), JoinBlockPredecessors::getSplitString(jbp)
-      )
-  }
+  predicate postDominates(BasicBlock bb) { super.postDominates(bb) }
 }
 
-private import Cached
-
-/** Holds if `bb` is an entry basic block. */
-private predicate entryBB(BasicBlock bb) { bb.getFirstNode() instanceof EntryNode }
-
 /**
  * An entry basic block, that is, a basic block whose first node is
  * an entry node.
  */
-class EntryBasicBlock extends BasicBlock {
-  EntryBasicBlock() { entryBB(this) }
-
-  override CfgScope getScope() {
-    this.getFirstNode() = any(EntryNode node | node.getScope() = result)
-  }
-}
+final class EntryBasicBlock extends BasicBlock, BasicBlocksImpl::EntryBasicBlock { }
 
 /**
- * An annotated exit basic block, that is, a basic block whose last node is
- * an annotated exit node.
+ * An annotated exit basic block, that is, a basic block that contains an
+ * annotated exit node.
  */
-class AnnotatedExitBasicBlock extends BasicBlock {
-  private boolean normal;
-
-  AnnotatedExitBasicBlock() {
-    exists(Impl::AnnotatedExitNode n |
-      n = this.getANode() and
-      if n.isNormal() then normal = true else normal = false
-    )
-  }
-
-  /** Holds if this block represent a normal exit. */
-  final predicate isNormal() { normal = true }
-}
+final class AnnotatedExitBasicBlock extends BasicBlock, BasicBlocksImpl::AnnotatedExitBasicBlock { }
 
 /**
  * An exit basic block, that is, a basic block whose last node is
  * an exit node.
  */
-class ExitBasicBlock extends BasicBlock {
-  ExitBasicBlock() { this.getLastNode() instanceof ExitNode }
-}
-
-private module JoinBlockPredecessors {
-  private predicate id(Raw::AstNode x, Raw::AstNode y) { x = y }
-
-  private predicate idOfDbAstNode(Raw::AstNode x, int y) = equivalenceRelation(id/2)(x, y)
-
-  // TODO does not work if fresh ipa entities (`ipa: on:`) turn out to be first of the block
-  private predicate idOf(AstNode x, int y) { idOfDbAstNode(Synth::convertAstNodeToRaw(x), y) }
-
-  private AstNode projectToAst(ControlFlowElement n) {
-    result = n.asAstNode()
-    or
-    isPropertyGetterElement(n, _, result)
-    or
-    isPropertySetterElement(n, _, result)
-    or
-    isPropertyObserverElement(n, _, result)
-    or
-    result = n.(KeyPathElement).getAst()
-    or
-    result = n.(FuncDeclElement).getAst()
-  }
-
-  int getId(JoinBlockPredecessor jbp) {
-    idOf(projectToAst(jbp.getFirstNode().(CfgNode).getNode()), result)
-    or
-    idOf(jbp.(EntryBasicBlock).getScope(), result)
-  }
-
-  string getSplitString(JoinBlockPredecessor jbp) {
-    result = jbp.getFirstNode().(CfgNode).getSplitsString()
-    or
-    not exists(jbp.getFirstNode().(CfgNode).getSplitsString()) and
-    result = ""
-  }
-}
+final class ExitBasicBlock extends BasicBlock, BasicBlocksImpl::ExitBasicBlock { }
 
 /** A basic block with more than one predecessor. */
-class JoinBlock extends BasicBlock {
+final class JoinBlock extends BasicBlock, BasicBlocksImpl::JoinBasicBlock {
   JoinBlock() { this.getFirstNode().isJoin() }
 
   /**
    * Gets the `i`th predecessor of this join block, with respect to some
    * arbitrary order.
    */
-  JoinBlockPredecessor getJoinBlockPredecessor(int i) { result = getJoinBlockPredecessor(this, i) }
+  JoinBlockPredecessor getJoinBlockPredecessor(int i) { result = super.getJoinBlockPredecessor(i) }
 }
 
 /** A basic block that is an immediate predecessor of a join block. */
-class JoinBlockPredecessor extends BasicBlock {
-  JoinBlockPredecessor() { this.getASuccessor() instanceof JoinBlock }
-}
+class JoinBlockPredecessor extends BasicBlock, BasicBlocksImpl::JoinPredecessorBasicBlock { }
 
 /** A basic block that terminates in a condition, splitting the subsequent control flow. */
-class ConditionBlock extends BasicBlock {
-  ConditionBlock() { this.getLastNode().isCondition() }
-
+final class ConditionBlock extends BasicBlock, BasicBlocksImpl::ConditionBasicBlock {
   /**
    * Holds if basic block `succ` is immediately controlled by this basic
    * block with conditional value `s`. That is, `succ` is an immediate
    * successor of this block, and `succ` can only be reached from
    * the callable entry point by going via the `s` edge out of this basic block.
    */
-  pragma[nomagic]
-  predicate immediatelyControls(BasicBlock succ, SuccessorType s) {
-    succ = this.getASuccessor(s) and
-    forall(BasicBlock pred | pred = succ.getAPredecessor() and pred != this | succ.dominates(pred))
+  predicate immediatelyControls(BasicBlock succ, ConditionalSuccessor s) {
+    super.immediatelyControls(succ, s)
   }
 
   /**
@@ -273,7 +98,7 @@ class ConditionBlock extends BasicBlock {
    * conditional value `s`. That is, `controlled` can only be reached from
    * the callable entry point by going via the `s` edge out of this basic block.
    */
-  predicate controls(BasicBlock controlled, BooleanSuccessor s) {
-    exists(BasicBlock succ | this.immediatelyControls(succ, s) | succ.dominates(controlled))
+  predicate controls(BasicBlock controlled, ConditionalSuccessor s) {
+    super.controls(controlled, s)
   }
 }
diff --git a/swift/ql/lib/codeql/swift/controlflow/ControlFlowGraph.qll b/swift/ql/lib/codeql/swift/controlflow/ControlFlowGraph.qll
index 96a005c22b63..4d1be28b0012 100644
--- a/swift/ql/lib/codeql/swift/controlflow/ControlFlowGraph.qll
+++ b/swift/ql/lib/codeql/swift/controlflow/ControlFlowGraph.qll
@@ -3,18 +3,18 @@
 private import swift
 private import BasicBlocks
 private import SuccessorTypes
-private import internal.ControlFlowGraphImpl
+private import internal.ControlFlowGraphImpl as CfgImpl
 private import internal.Completion
 private import internal.Scope
 private import internal.ControlFlowElements
 
 /** An AST node with an associated control-flow graph. */
-class CfgScope extends Scope instanceof CfgScope::Range_ {
+class CfgScope extends Scope instanceof CfgImpl::CfgScope::Range_ {
   /** Gets the CFG scope that this scope is nested under, if any. */
   final CfgScope getOuterCfgScope() {
     exists(ControlFlowElement parent |
       parent.asAstNode() = getParentOfAst(this) and
-      result = getCfgScope(parent)
+      result = CfgImpl::getCfgScope(parent)
     )
   }
 }
@@ -27,7 +27,7 @@ class CfgScope extends Scope instanceof CfgScope::Range_ {
  *
  * Only nodes that can be reached from an entry point are included in the CFG.
  */
-class ControlFlowNode extends Node {
+class ControlFlowNode extends CfgImpl::Node {
   /** Gets the AST node that this node corresponds to, if any. */
   ControlFlowElement getNode() { none() }
 
@@ -63,7 +63,7 @@ class ControlFlowNode extends Node {
 }
 
 /** The type of a control flow successor. */
-class SuccessorType extends TSuccessorType {
+class SuccessorType extends CfgImpl::TSuccessorType {
   /** Gets a textual representation of successor type. */
   string toString() { none() }
 }
@@ -71,7 +71,7 @@ class SuccessorType extends TSuccessorType {
 /** Provides different types of control flow successor types. */
 module SuccessorTypes {
   /** A normal control flow successor. */
-  class NormalSuccessor extends SuccessorType, TSuccessorSuccessor {
+  class NormalSuccessor extends SuccessorType, CfgImpl::TSuccessorSuccessor {
     final override string toString() { result = "successor" }
   }
 
@@ -89,24 +89,24 @@ module SuccessorTypes {
   }
 
   /** A Boolean control flow successor. */
-  class BooleanSuccessor extends ConditionalSuccessor, TBooleanSuccessor {
-    BooleanSuccessor() { this = TBooleanSuccessor(value) }
+  class BooleanSuccessor extends ConditionalSuccessor, CfgImpl::TBooleanSuccessor {
+    BooleanSuccessor() { this = CfgImpl::TBooleanSuccessor(value) }
   }
 
-  class BreakSuccessor extends SuccessorType, TBreakSuccessor {
+  class BreakSuccessor extends SuccessorType, CfgImpl::TBreakSuccessor {
     final override string toString() { result = "break" }
   }
 
-  class ContinueSuccessor extends SuccessorType, TContinueSuccessor {
+  class ContinueSuccessor extends SuccessorType, CfgImpl::TContinueSuccessor {
     final override string toString() { result = "continue" }
   }
 
-  class ReturnSuccessor extends SuccessorType, TReturnSuccessor {
+  class ReturnSuccessor extends SuccessorType, CfgImpl::TReturnSuccessor {
     final override string toString() { result = "return" }
   }
 
-  class MatchingSuccessor extends ConditionalSuccessor, TMatchingSuccessor {
-    MatchingSuccessor() { this = TMatchingSuccessor(value) }
+  class MatchingSuccessor extends ConditionalSuccessor, CfgImpl::TMatchingSuccessor {
+    MatchingSuccessor() { this = CfgImpl::TMatchingSuccessor(value) }
 
     /** Holds if this is a match successor. */
     predicate isMatch() { value = true }
@@ -114,19 +114,19 @@ module SuccessorTypes {
     override string toString() { if this.isMatch() then result = "match" else result = "no-match" }
   }
 
-  class FallthroughSuccessor extends SuccessorType, TFallthroughSuccessor {
+  class FallthroughSuccessor extends SuccessorType, CfgImpl::TFallthroughSuccessor {
     final override string toString() { result = "fallthrough" }
   }
 
-  class EmptinessSuccessor extends ConditionalSuccessor, TEmptinessSuccessor {
-    EmptinessSuccessor() { this = TEmptinessSuccessor(value) }
+  class EmptinessSuccessor extends ConditionalSuccessor, CfgImpl::TEmptinessSuccessor {
+    EmptinessSuccessor() { this = CfgImpl::TEmptinessSuccessor(value) }
 
     predicate isEmpty() { value = true }
 
     override string toString() { if this.isEmpty() then result = "empty" else result = "non-empty" }
   }
 
-  class ExceptionSuccessor extends SuccessorType, TExceptionSuccessor {
+  class ExceptionSuccessor extends SuccessorType, CfgImpl::TExceptionSuccessor {
     override string toString() { result = "exception" }
   }
 }
diff --git a/swift/ql/lib/codeql/swift/controlflow/internal/ControlFlowGraphImplSpecific.qll b/swift/ql/lib/codeql/swift/controlflow/internal/ControlFlowGraphImplSpecific.qll
index 362537068a63..b74ca9d07990 100644
--- a/swift/ql/lib/codeql/swift/controlflow/internal/ControlFlowGraphImplSpecific.qll
+++ b/swift/ql/lib/codeql/swift/controlflow/internal/ControlFlowGraphImplSpecific.qll
@@ -15,6 +15,8 @@ import Completion
 private import codeql.swift.controlflow.ControlFlowGraph as Cfg
 private import Splitting as Splitting
 private import Scope
+private import codeql.swift.generated.Raw
+private import codeql.swift.generated.Synth
 import ControlFlowElements
 import AstControlFlowTrees
 
@@ -82,6 +84,31 @@ module CfgInput implements InputSig<Location> {
   predicate scopeLast(CfgScope scope, AstNode last, Completion c) {
     scope.(Impl::CfgScope::Range_).exit(last, c)
   }
+
+  private predicate id(Raw::AstNode x, Raw::AstNode y) { x = y }
+
+  private predicate idOfDbAstNode(Raw::AstNode x, int y) = equivalenceRelation(id/2)(x, y)
+
+  // TODO: does not work if fresh ipa entities (`ipa: on:`) turn out to be first of the block
+  private predicate idOf(S::AstNode x, int y) { idOfDbAstNode(Synth::convertAstNodeToRaw(x), y) }
+
+  private S::AstNode projectToAst(ControlFlowElement n) {
+    result = n.asAstNode()
+    or
+    isPropertyGetterElement(n, _, result)
+    or
+    isPropertySetterElement(n, _, result)
+    or
+    isPropertyObserverElement(n, _, result)
+    or
+    result = n.(KeyPathElement).getAst()
+    or
+    result = n.(FuncDeclElement).getAst()
+  }
+
+  predicate idOfAstNode(AstNode node, int id) { idOf(projectToAst(node), id) }
+
+  predicate idOfCfgScope(CfgScope node, int id) { idOf(node, id) }
 }
 
 private module CfgSplittingInput implements SplittingInputSig<Location, CfgInput> {
diff --git a/swift/ql/lib/codeql/swift/dataflow/Ssa.qll b/swift/ql/lib/codeql/swift/dataflow/Ssa.qll
index 971cc8cc705c..e8ad8cbdcebf 100644
--- a/swift/ql/lib/codeql/swift/dataflow/Ssa.qll
+++ b/swift/ql/lib/codeql/swift/dataflow/Ssa.qll
@@ -21,7 +21,7 @@ module Ssa {
 
     BasicBlock getABasicBlockSuccessor(BasicBlock bb) { result = bb.getASuccessor() }
 
-    class ExitBasicBlock extends BasicBlock, BasicBlocks::ExitBasicBlock { }
+    class ExitBasicBlock = BasicBlocks::ExitBasicBlock;
 
     private newtype TSourceVariable =
       TNormalSourceVariable(VarDecl v) or

From 8b20b0d334fc8acdc04b9f57d78271dee1e4c876 Mon Sep 17 00:00:00 2001
From: Simon Friis Vindum <simonfv@gmail.com>
Date: Thu, 16 Jan 2025 16:35:08 +0100
Subject: [PATCH 03/12] Shared: Add change note for basic block addition

---
 shared/controlflow/change-notes/2025-01-16-basic-block.md | 7 +++++++
 1 file changed, 7 insertions(+)
 create mode 100644 shared/controlflow/change-notes/2025-01-16-basic-block.md

diff --git a/shared/controlflow/change-notes/2025-01-16-basic-block.md b/shared/controlflow/change-notes/2025-01-16-basic-block.md
new file mode 100644
index 000000000000..2fd543dc551b
--- /dev/null
+++ b/shared/controlflow/change-notes/2025-01-16-basic-block.md
@@ -0,0 +1,7 @@
+---
+category: breaking
+---
+* Added a basic block construction as part of the library. This is currently
+  considered an internal unstable API. The input signature to the control flow
+  graph now requires two additional predicates: `idOfAstNode` and
+  `idOfCfgScope`.

From 4d05b6a0a5eae23b47ac1d433148e4da6627226c Mon Sep 17 00:00:00 2001
From: Simon Friis Vindum <simonfv@gmail.com>
Date: Fri, 17 Jan 2025 13:11:49 +0100
Subject: [PATCH 04/12] Shared: Address review comments for shared basic block
 library

---
 .../internal/ControlFlowGraphImpl.qll         |   4 +-
 .../codeql/ruby/controlflow/BasicBlocks.qll   |   2 -
 .../internal/ControlFlowGraphImpl.qll         |   4 +-
 .../internal/ControlFlowGraphImpl.qll         |   6 +-
 .../codeql/controlflow/BasicBlock.qll         | 128 ++++++++++--------
 shared/controlflow/codeql/controlflow/Cfg.qll |  33 +++--
 .../internal/ControlFlowGraphImplSpecific.qll |   4 +-
 7 files changed, 96 insertions(+), 85 deletions(-)

diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/internal/ControlFlowGraphImpl.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/internal/ControlFlowGraphImpl.qll
index fcbdaeb8b4c1..e4f1891012f2 100644
--- a/csharp/ql/lib/semmle/code/csharp/controlflow/internal/ControlFlowGraphImpl.qll
+++ b/csharp/ql/lib/semmle/code/csharp/controlflow/internal/ControlFlowGraphImpl.qll
@@ -96,9 +96,9 @@ private module CfgInput implements CfgShared::InputSig<Location> {
     t instanceof ST::SuccessorTypes::ExitSuccessor
   }
 
-  predicate idOfAstNode(AstNode node, int id) { node.getId() = id }
+  int idOfAstNode(AstNode node) { result = node.getId() }
 
-  predicate idOfCfgScope(CfgScope node, int id) { idOfAstNode(node, id) }
+  int idOfCfgScope(CfgScope node) { result = idOfAstNode(node) }
 }
 
 private module CfgSplittingInput implements CfgShared::SplittingInputSig<Location, CfgInput> {
diff --git a/ruby/ql/lib/codeql/ruby/controlflow/BasicBlocks.qll b/ruby/ql/lib/codeql/ruby/controlflow/BasicBlocks.qll
index 892cf032be24..1c4fbc5dcb37 100644
--- a/ruby/ql/lib/codeql/ruby/controlflow/BasicBlocks.qll
+++ b/ruby/ql/lib/codeql/ruby/controlflow/BasicBlocks.qll
@@ -4,11 +4,9 @@ private import codeql.ruby.AST
 private import codeql.ruby.ast.internal.AST
 private import codeql.ruby.ast.internal.TreeSitter
 private import codeql.ruby.controlflow.ControlFlowGraph
-private import codeql.ruby.controlflow.ControlFlowGraph as Cfg
 private import internal.ControlFlowGraphImpl as CfgImpl
 private import CfgNodes
 private import SuccessorTypes
-private import codeql.controlflow.BasicBlock as BB
 private import CfgImpl::BasicBlocks as BasicBlocksImpl
 
 /**
diff --git a/ruby/ql/lib/codeql/ruby/controlflow/internal/ControlFlowGraphImpl.qll b/ruby/ql/lib/codeql/ruby/controlflow/internal/ControlFlowGraphImpl.qll
index 3046994d3d54..584e5d1c1acc 100644
--- a/ruby/ql/lib/codeql/ruby/controlflow/internal/ControlFlowGraphImpl.qll
+++ b/ruby/ql/lib/codeql/ruby/controlflow/internal/ControlFlowGraphImpl.qll
@@ -65,9 +65,9 @@ private module CfgInput implements CfgShared::InputSig<Location> {
 
   private predicate idOf(Ruby::AstNode node, int id) = equivalenceRelation(id/2)(node, id)
 
-  predicate idOfAstNode(AstNode node, int id) { idOf(AstInternal::toGeneratedInclSynth(node), id) }
+  int idOfAstNode(AstNode node) { idOf(AstInternal::toGeneratedInclSynth(node), result) }
 
-  predicate idOfCfgScope(CfgScope node, int id) { idOfAstNode(node, id) }
+  int idOfCfgScope(CfgScope node) { result = idOfAstNode(node) }
 }
 
 private module CfgSplittingInput implements CfgShared::SplittingInputSig<Location, CfgInput> {
diff --git a/rust/ql/lib/codeql/rust/controlflow/internal/ControlFlowGraphImpl.qll b/rust/ql/lib/codeql/rust/controlflow/internal/ControlFlowGraphImpl.qll
index 2039ec755464..516efe1ea024 100644
--- a/rust/ql/lib/codeql/rust/controlflow/internal/ControlFlowGraphImpl.qll
+++ b/rust/ql/lib/codeql/rust/controlflow/internal/ControlFlowGraphImpl.qll
@@ -56,11 +56,9 @@ private module CfgInput implements InputSig<Location> {
   private predicate idOfDbAstNode(Raw::AstNode x, int y) = equivalenceRelation(id/2)(x, y)
 
   // TODO: does not work if fresh ipa entities (`ipa: on:`) turn out to be first of the block
-  predicate idOfAstNode(AstNode node, int id) {
-    idOfDbAstNode(Synth::convertAstNodeToRaw(node), id)
-  }
+  int idOfAstNode(AstNode node) { idOfDbAstNode(Synth::convertAstNodeToRaw(node), result) }
 
-  predicate idOfCfgScope(CfgScope node, int id) { idOfAstNode(node, id) }
+  int idOfCfgScope(CfgScope node) { result = idOfAstNode(node) }
 }
 
 private module CfgSplittingInput implements SplittingInputSig<Location, CfgInput> {
diff --git a/shared/controlflow/codeql/controlflow/BasicBlock.qll b/shared/controlflow/codeql/controlflow/BasicBlock.qll
index 2cd075bac576..df8348f6fbd6 100644
--- a/shared/controlflow/codeql/controlflow/BasicBlock.qll
+++ b/shared/controlflow/codeql/controlflow/BasicBlock.qll
@@ -1,13 +1,15 @@
 /**
- * This modules provides an implementation of a basic block class based based
- * on a control flow graph implementation.
+ * This modules provides an implementation of a basic block class based on a
+ * control flow graph implementation.
  *
  * INTERNAL use only. This is an experimental API subject to change without
  * notice.
  */
 
+private import codeql.util.Location
+
 /** Provides the language-specific input specification. */
-signature module InputSig {
+signature module InputSig<LocationSig Location> {
   class SuccessorType;
 
   /** Hold if `t` represents a conditional successor type. */
@@ -16,21 +18,31 @@ signature module InputSig {
   /** The class of control flow nodes. */
   class Node {
     string toString();
+
+    /** Gets the location of this control flow node. */
+    Location getLocation();
   }
 
+  /** Gets an immediate successor of this node. */
   Node nodeGetASuccessor(Node node, SuccessorType t);
 
-  /** Holds if `node` is the beginning of an entry basic block. */
-  predicate nodeIsEntry(Node node);
+  /**
+   * Holds if `node` represents an entry node to be used when calculating
+   * dominance.
+   */
+  predicate nodeIsDominanceEntry(Node node);
 
-  /** Holds if `node` is the beginning of an entry basic block. */
-  predicate nodeIsExit(Node node);
+  /**
+   * Holds if `node` represents an exit node to be used when calculating
+   * post dominance.
+   */
+  predicate nodeIsPostDominanceExit(Node node);
 }
 
 /**
  * Provides a basic block construction on top of a control flow graph.
  */
-module Make<InputSig Input> {
+module Make<LocationSig Location, InputSig<Location> Input> {
   private import Input
 
   final class BasicBlock = BasicBlockImpl;
@@ -42,6 +54,7 @@ module Make<InputSig Input> {
   /** Holds if this node has more than one predecessor. */
   private predicate nodeIsJoin(Node node) { strictcount(nodeGetAPredecessor(node, _)) > 1 }
 
+  /** Holds if this node has more than one successor. */
   private predicate nodeIsBranch(Node node) { strictcount(nodeGetASuccessor(node, _)) > 1 }
 
   /**
@@ -49,6 +62,9 @@ module Make<InputSig Input> {
    * without branches or joins.
    */
   private class BasicBlockImpl extends TBasicBlockStart {
+    /** Gets the location of this basic block. */
+    Location getLocation() { result = this.getFirstNode().getLocation() }
+
     /** Gets an immediate successor of this basic block, if any. */
     BasicBlock getASuccessor() { result = this.getASuccessor(_) }
 
@@ -64,6 +80,7 @@ module Make<InputSig Input> {
     BasicBlock getAPredecessor(SuccessorType t) { result.getASuccessor(t) = this }
 
     /** Gets the control flow node at a specific (zero-indexed) position in this basic block. */
+    cached
     Node getNode(int pos) { bbIndex(this.getFirstNode(), result, pos) }
 
     /** Gets a control flow node in this basic block. */
@@ -166,52 +183,6 @@ module Make<InputSig Input> {
     cached
     newtype TBasicBlock = TBasicBlockStart(Node cfn) { startsBB(cfn) }
 
-    /** Holds if `cfn` starts a new basic block. */
-    private predicate startsBB(Node cfn) {
-      not exists(nodeGetAPredecessor(cfn, _)) and exists(nodeGetASuccessor(cfn, _))
-      or
-      nodeIsJoin(cfn)
-      or
-      nodeIsBranch(nodeGetAPredecessor(cfn, _))
-      or
-      // In cases such as
-      //
-      // ```rb
-      // if x or y
-      //     foo
-      // else
-      //     bar
-      // ```
-      //
-      // we have a CFG that looks like
-      //
-      // x --false--> [false] x or y --false--> bar
-      // \                    |
-      //  --true--> y --false--
-      //            \
-      //             --true--> [true] x or y --true--> foo
-      //
-      // and we want to ensure that both `foo` and `bar` start a new basic block.
-      exists(nodeGetAPredecessor(cfn, any(SuccessorType s | successorTypeIsCondition(s))))
-    }
-
-    /**
-     * Holds if `succ` is a control flow successor of `pred` within
-     * the same basic block.
-     */
-    private predicate intraBBSucc(Node pred, Node succ) {
-      succ = nodeGetASuccessor(pred, _) and
-      not startsBB(succ)
-    }
-
-    /**
-     * Holds if `bbStart` is the first node in a basic block and `cfn` is the
-     * `i`th node in the same basic block.
-     */
-    cached
-    predicate bbIndex(Node bbStart, Node cfn, int i) =
-      shortestDistances(startsBB/1, intraBBSucc/2)(bbStart, cfn, i)
-
     /**
      * Holds if the first node of basic block `succ` is a control flow
      * successor of the last node of basic block `pred`.
@@ -227,7 +198,7 @@ module Make<InputSig Input> {
     private predicate predBB(BasicBlock succ, BasicBlock pred) { succBB(pred, succ) }
 
     /** Holds if `bb` is an exit basic block that represents normal exit. */
-    private predicate exitBB(BasicBlock bb) { nodeIsExit(bb.getANode()) }
+    private predicate exitBB(BasicBlock bb) { nodeIsPostDominanceExit(bb.getANode()) }
 
     /** Holds if `dom` is an immediate post-dominator of `bb`. */
     cached
@@ -237,6 +208,51 @@ module Make<InputSig Input> {
 
   private import Cached
 
+  /** Holds if `cfn` starts a new basic block. */
+  private predicate startsBB(Node cfn) {
+    not exists(nodeGetAPredecessor(cfn, _)) and exists(nodeGetASuccessor(cfn, _))
+    or
+    nodeIsJoin(cfn)
+    or
+    nodeIsBranch(nodeGetAPredecessor(cfn, _))
+    or
+    // In cases such as
+    //
+    // ```rb
+    // if x or y
+    //     foo
+    // else
+    //     bar
+    // ```
+    //
+    // we have a CFG that looks like
+    //
+    // x --false--> [false] x or y --false--> bar
+    // \                    |
+    //  --true--> y --false--
+    //            \
+    //             --true--> [true] x or y --true--> foo
+    //
+    // and we want to ensure that both `foo` and `bar` start a new basic block.
+    exists(nodeGetAPredecessor(cfn, any(SuccessorType s | successorTypeIsCondition(s))))
+  }
+
+  /**
+   * Holds if `succ` is a control flow successor of `pred` within
+   * the same basic block.
+   */
+  predicate intraBBSucc(Node pred, Node succ) {
+    succ = nodeGetASuccessor(pred, _) and
+    not startsBB(succ)
+  }
+
+  /**
+   * Holds if `bbStart` is the first node in a basic block and `cfn` is the
+   * `i`th node in the same basic block.
+   */
+  private predicate bbIndex(Node bbStart, Node cfn, int i) =
+    shortestDistances(startsBB/1, intraBBSucc/2)(bbStart, cfn, i)
+
   /** Holds if `bb` is an entry basic block. */
-  private predicate entryBB(BasicBlock bb) { nodeIsEntry(bb.getFirstNode()) }
+  private predicate entryBB(BasicBlock bb) { nodeIsDominanceEntry(bb.getFirstNode()) }
 }
diff --git a/shared/controlflow/codeql/controlflow/Cfg.qll b/shared/controlflow/codeql/controlflow/Cfg.qll
index 5a1353ee5987..82e7fdd469e2 100644
--- a/shared/controlflow/codeql/controlflow/Cfg.qll
+++ b/shared/controlflow/codeql/controlflow/Cfg.qll
@@ -83,14 +83,14 @@ signature module InputSig<LocationSig Location> {
    * basic block.
    */
   bindingset[node]
-  default predicate idOfAstNode(AstNode node, int id) { none() }
+  int idOfAstNode(AstNode node);
 
   /**
    * Gets an `id` of `scope`. This is used to order the predecessors of a join
    * basic block.
    */
   bindingset[scope]
-  default predicate idOfCfgScope(CfgScope scope, int id) { none() }
+  int idOfCfgScope(CfgScope scope);
 }
 
 /** Provides input needed for CFG splitting. */
@@ -1537,7 +1537,7 @@ module MakeWithSplitting<
 
     private class NodeAlias = Node;
 
-    private module BasicBlockInputSig implements BB::InputSig {
+    private module BasicBlockInputSig implements BB::InputSig<Location> {
       class SuccessorType = Input::SuccessorType;
 
       predicate successorTypeIsCondition = Input::successorTypeIsCondition/1;
@@ -1546,20 +1546,19 @@ module MakeWithSplitting<
 
       Node nodeGetASuccessor(Node node, SuccessorType t) { result = node.getASuccessor(t) }
 
-      predicate nodeIsEntry(Node node) { node instanceof EntryNode }
+      predicate nodeIsDominanceEntry(Node node) { node instanceof EntryNode }
 
-      predicate nodeIsExit(Node node) { node.(AnnotatedExitNode).isNormal() }
+      predicate nodeIsPostDominanceExit(Node node) { node.(AnnotatedExitNode).isNormal() }
     }
 
-    private module BasicBlockImpl = BB::Make<BasicBlockInputSig>;
+    private module BasicBlockImpl = BB::Make<Location, BasicBlockInputSig>;
 
     /**
      * A basic block, that is, a maximal straight-line sequence of control flow nodes
      * without branches or joins.
      */
     final class BasicBlock extends BasicBlockImpl::BasicBlock {
-      // We extend `BasicBlockImpl::BasicBlock` to add the `getScope` and
-      // `getLocation`.
+      // We extend `BasicBlockImpl::BasicBlock` to add the `getScope`.
       /** Gets the scope of this basic block. */
       CfgScope getScope() {
         if this instanceof EntryBasicBlock
@@ -1567,9 +1566,6 @@ module MakeWithSplitting<
         else result = this.getAPredecessor().getScope()
       }
 
-      /** Gets the location of this basic block. */
-      Location getLocation() { result = this.getFirstNode().getLocation() }
-
       /** Gets an immediate successor of this basic block, if any. */
       BasicBlock getASuccessor() { result = super.getASuccessor() }
 
@@ -1678,10 +1674,13 @@ module MakeWithSplitting<
     }
 
     private module JoinBlockPredecessors {
-      int getId(JoinPredecessorBasicBlock jbp) {
-        idOfAstNode(jbp.getFirstNode().(AstCfgNode).getAstNode(), result)
+      predicate hasIdAndKind(JoinPredecessorBasicBlock jbp, int id, int kind) {
+        id = idOfCfgScope(jbp.(EntryBasicBlock).getScope()) and
+        kind = 0
         or
-        idOfCfgScope(jbp.(EntryBasicBlock).getScope(), result)
+        not jbp instanceof EntryBasicBlock and
+        id = idOfAstNode(jbp.getFirstNode().(AstCfgNode).getAstNode()) and
+        kind = 1
       }
 
       string getSplitString(JoinPredecessorBasicBlock jbp) {
@@ -1699,10 +1698,10 @@ module MakeWithSplitting<
     cached
     JoinPredecessorBasicBlock getJoinBlockPredecessor(JoinBasicBlock jb, int i) {
       result =
-        rank[i + 1](JoinPredecessorBasicBlock jbp |
-          jbp = jb.getAPredecessor()
+        rank[i + 1](JoinPredecessorBasicBlock jbp, int id, int kind |
+          jbp = jb.getAPredecessor() and JoinBlockPredecessors::hasIdAndKind(jbp, id, kind)
         |
-          jbp order by JoinBlockPredecessors::getId(jbp), JoinBlockPredecessors::getSplitString(jbp)
+          jbp order by id, kind, JoinBlockPredecessors::getSplitString(jbp)
         )
     }
 
diff --git a/swift/ql/lib/codeql/swift/controlflow/internal/ControlFlowGraphImplSpecific.qll b/swift/ql/lib/codeql/swift/controlflow/internal/ControlFlowGraphImplSpecific.qll
index b74ca9d07990..24548290ea07 100644
--- a/swift/ql/lib/codeql/swift/controlflow/internal/ControlFlowGraphImplSpecific.qll
+++ b/swift/ql/lib/codeql/swift/controlflow/internal/ControlFlowGraphImplSpecific.qll
@@ -106,9 +106,9 @@ module CfgInput implements InputSig<Location> {
     result = n.(FuncDeclElement).getAst()
   }
 
-  predicate idOfAstNode(AstNode node, int id) { idOf(projectToAst(node), id) }
+  int idOfAstNode(AstNode node) { idOf(projectToAst(node), result) }
 
-  predicate idOfCfgScope(CfgScope node, int id) { idOf(node, id) }
+  int idOfCfgScope(CfgScope node) { idOf(node, result) }
 }
 
 private module CfgSplittingInput implements SplittingInputSig<Location, CfgInput> {

From 53b63bed00a877a6fd9feb2876efd31f99e3d4d7 Mon Sep 17 00:00:00 2001
From: Simon Friis Vindum <simonfv@gmail.com>
Date: Fri, 17 Jan 2025 13:31:00 +0100
Subject: [PATCH 05/12] Actions: Implement added predicates in CFG
 instantiation

---
 actions/ql/lib/codeql/actions/controlflow/internal/Cfg.qll | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/actions/ql/lib/codeql/actions/controlflow/internal/Cfg.qll b/actions/ql/lib/codeql/actions/controlflow/internal/Cfg.qll
index 318cd2820a35..06295e3d88d4 100644
--- a/actions/ql/lib/codeql/actions/controlflow/internal/Cfg.qll
+++ b/actions/ql/lib/codeql/actions/controlflow/internal/Cfg.qll
@@ -134,6 +134,10 @@ private module Implementation implements CfgShared::InputSig<Location> {
   SuccessorType getAMatchingSuccessorType(Completion c) { result = c.getAMatchingSuccessorType() }
 
   predicate isAbnormalExitType(SuccessorType t) { none() }
+
+  int idOfAstNode(AstNode node) { none() }
+
+  int idOfCfgScope(CfgScope scope) { none() }
 }
 
 module CfgImpl = CfgShared::Make<Location, Implementation>;

From e382ffc5d23e90d98448f0bd6bb4edbefdbeb015 Mon Sep 17 00:00:00 2001
From: Simon Friis Vindum <simonfv@gmail.com>
Date: Fri, 17 Jan 2025 15:12:11 +0100
Subject: [PATCH 06/12] Shared: Address review comments for basic block library

---
 .../codeql/controlflow/BasicBlock.qll         | 23 +++---
 shared/controlflow/codeql/controlflow/Cfg.qll | 77 +++++++++----------
 2 files changed, 52 insertions(+), 48 deletions(-)

diff --git a/shared/controlflow/codeql/controlflow/BasicBlock.qll b/shared/controlflow/codeql/controlflow/BasicBlock.qll
index df8348f6fbd6..f0f3ec428c54 100644
--- a/shared/controlflow/codeql/controlflow/BasicBlock.qll
+++ b/shared/controlflow/codeql/controlflow/BasicBlock.qll
@@ -126,18 +126,23 @@ module Make<LocationSig Location, InputSig<Location> Input> {
     /**
      * Holds if `df` is in the dominance frontier of this basic block. That is,
      * this basic block dominates a predecessor of `df`, but does not dominate
-     * `df` itself.
+     * `df` itself. I.e., it is equivaluent to:
+     * ```
+     * this.dominates(df.getAPredecessor()) and not this.strictlyDominates(df)
+     * ```
      */
     predicate inDominanceFrontier(BasicBlock df) {
-      this.dominatesPredecessor(df) and
-      not this.strictlyDominates(df)
+      // Algorithm from Cooper et al., "A Simple, Fast Dominance Algorithm" (Figure 5),
+      // who in turn attribute it to Ferrante et al., "The program dependence graph and
+      // its use in optimization".
+      this = df.getAPredecessor() and not bbIDominates(this, df)
+      or
+      exists(BasicBlock prev | prev.inDominanceFrontier(df) |
+        bbIDominates(this, prev) and
+        not bbIDominates(this, df)
+      )
     }
 
-    /**
-     * Holds if this basic block dominates a predecessor of `df`.
-     */
-    private predicate dominatesPredecessor(BasicBlock df) { this.dominates(df.getAPredecessor()) }
-
     /**
      * Gets the basic block that immediately dominates this basic block, if any.
      *
@@ -219,7 +224,7 @@ module Make<LocationSig Location, InputSig<Location> Input> {
     // In cases such as
     //
     // ```rb
-    // if x or y
+    // if x and y
     //     foo
     // else
     //     bar
diff --git a/shared/controlflow/codeql/controlflow/Cfg.qll b/shared/controlflow/codeql/controlflow/Cfg.qll
index 82e7fdd469e2..65fe28d49ef7 100644
--- a/shared/controlflow/codeql/controlflow/Cfg.qll
+++ b/shared/controlflow/codeql/controlflow/Cfg.qll
@@ -82,14 +82,12 @@ signature module InputSig<LocationSig Location> {
    * Gets an `id` of `node`. This is used to order the predecessors of a join
    * basic block.
    */
-  bindingset[node]
   int idOfAstNode(AstNode node);
 
   /**
    * Gets an `id` of `scope`. This is used to order the predecessors of a join
    * basic block.
    */
-  bindingset[scope]
   int idOfCfgScope(CfgScope scope);
 }
 
@@ -1008,6 +1006,41 @@ module MakeWithSplitting<
       )
     }
 
+    private module JoinBlockPredecessors {
+      predicate hasIdAndKind(BasicBlocks::JoinPredecessorBasicBlock jbp, int id, int kind) {
+        id = idOfCfgScope(jbp.(BasicBlocks::EntryBasicBlock).getScope()) and
+        kind = 0
+        or
+        not jbp instanceof BasicBlocks::EntryBasicBlock and
+        id = idOfAstNode(jbp.getFirstNode().(AstCfgNode).getAstNode()) and
+        kind = 1
+      }
+
+      string getSplitString(BasicBlocks::JoinPredecessorBasicBlock jbp) {
+        result = jbp.getFirstNode().(AstCfgNode).getSplitsString()
+        or
+        not exists(jbp.getFirstNode().(AstCfgNode).getSplitsString()) and
+        result = ""
+      }
+    }
+
+    /**
+     * Gets the `i`th predecessor of join block `jb`, with respect to some
+     * arbitrary order.
+     */
+    cached
+    BasicBlocks::JoinPredecessorBasicBlock getJoinBlockPredecessor(
+      BasicBlocks::JoinBasicBlock jb, int i
+    ) {
+      result =
+        rank[i + 1](BasicBlocks::JoinPredecessorBasicBlock jbp, int id, int kind |
+          jbp = jb.getAPredecessor() and
+          JoinBlockPredecessors::hasIdAndKind(jbp, id, kind)
+        |
+          jbp order by id, kind, JoinBlockPredecessors::getSplitString(jbp)
+        )
+    }
+
     cached
     module Public {
       /**
@@ -1570,15 +1603,13 @@ module MakeWithSplitting<
       BasicBlock getASuccessor() { result = super.getASuccessor() }
 
       /** Gets an immediate successor of this basic block of a given type, if any. */
-      BasicBlock getASuccessor(SuccessorType t) {
-        result.getFirstNode() = this.getLastNode().getASuccessor(t)
-      }
+      BasicBlock getASuccessor(SuccessorType t) { result = super.getASuccessor(t) }
 
       /** Gets an immediate predecessor of this basic block, if any. */
-      BasicBlock getAPredecessor() { result.getASuccessor() = this }
+      BasicBlock getAPredecessor() { result = super.getAPredecessor() }
 
       /** Gets an immediate predecessor of this basic block of a given type, if any. */
-      BasicBlock getAPredecessor(SuccessorType t) { result.getASuccessor(t) = this }
+      BasicBlock getAPredecessor(SuccessorType t) { result = super.getAPredecessor(t) }
 
       /**
        * Holds if this basic block immediately dominates basic block `bb`.
@@ -1673,38 +1704,6 @@ module MakeWithSplitting<
       ExitBasicBlock() { this.getLastNode() instanceof ExitNode }
     }
 
-    private module JoinBlockPredecessors {
-      predicate hasIdAndKind(JoinPredecessorBasicBlock jbp, int id, int kind) {
-        id = idOfCfgScope(jbp.(EntryBasicBlock).getScope()) and
-        kind = 0
-        or
-        not jbp instanceof EntryBasicBlock and
-        id = idOfAstNode(jbp.getFirstNode().(AstCfgNode).getAstNode()) and
-        kind = 1
-      }
-
-      string getSplitString(JoinPredecessorBasicBlock jbp) {
-        result = jbp.getFirstNode().(AstCfgNode).getSplitsString()
-        or
-        not exists(jbp.getFirstNode().(AstCfgNode).getSplitsString()) and
-        result = ""
-      }
-    }
-
-    /**
-     * Gets the `i`th predecessor of join block `jb`, with respect to some
-     * arbitrary order.
-     */
-    cached
-    JoinPredecessorBasicBlock getJoinBlockPredecessor(JoinBasicBlock jb, int i) {
-      result =
-        rank[i + 1](JoinPredecessorBasicBlock jbp, int id, int kind |
-          jbp = jb.getAPredecessor() and JoinBlockPredecessors::hasIdAndKind(jbp, id, kind)
-        |
-          jbp order by id, kind, JoinBlockPredecessors::getSplitString(jbp)
-        )
-    }
-
     /** A basic block with more than one predecessor. */
     final class JoinBasicBlock extends BasicBlock {
       JoinBasicBlock() { this.getFirstNode().isJoin() }

From 62a459d3d7be8706272a080322ef9d0c6e9ae836 Mon Sep 17 00:00:00 2001
From: Simon Friis Vindum <simonfv@gmail.com>
Date: Mon, 20 Jan 2025 13:27:02 +0100
Subject: [PATCH 07/12] Shared: Address basic block review comments

---
 .../codeql/controlflow/BasicBlock.qll         | 146 ++++++++++++------
 shared/controlflow/codeql/controlflow/Cfg.qll |  61 +-------
 2 files changed, 101 insertions(+), 106 deletions(-)

diff --git a/shared/controlflow/codeql/controlflow/BasicBlock.qll b/shared/controlflow/codeql/controlflow/BasicBlock.qll
index f0f3ec428c54..bfb2657eeb99 100644
--- a/shared/controlflow/codeql/controlflow/BasicBlock.qll
+++ b/shared/controlflow/codeql/controlflow/BasicBlock.qll
@@ -80,7 +80,6 @@ module Make<LocationSig Location, InputSig<Location> Input> {
     BasicBlock getAPredecessor(SuccessorType t) { result.getASuccessor(t) = this }
 
     /** Gets the control flow node at a specific (zero-indexed) position in this basic block. */
-    cached
     Node getNode(int pos) { bbIndex(this.getFirstNode(), result, pos) }
 
     /** Gets a control flow node in this basic block. */
@@ -152,6 +151,60 @@ module Make<LocationSig Location, InputSig<Location> Input> {
      */
     BasicBlock getImmediateDominator() { bbIDominates(result, this) }
 
+    /**
+     * Holds if basic block `succ` is immediately controlled by this basic
+     * block with conditional value `s`. That is, `succ` is an immediate
+     * successor of this block, and `succ` can only be reached from
+     * the callable entry point by going via the `s` edge out of this basic block.
+     */
+    pragma[nomagic]
+    predicate immediatelyControls(BasicBlock succ, SuccessorType s) {
+      succ = this.getASuccessor(s) and
+      forall(BasicBlock pred | pred = succ.getAPredecessor() and pred != this |
+        succ.dominates(pred)
+      )
+    }
+
+    /**
+     * Holds if basic block `controlled` is controlled by this basic block with
+     * conditional value `s`. That is, `controlled` can only be reached from
+     * the callable entry point by going via the `s` edge out of this basic block.
+     */
+    predicate controls(BasicBlock controlled, SuccessorType s) {
+      // For this block to control the block `controlled` with `s` the following must be true:
+      // 1/ Execution must have passed through the test i.e. `this` must strictly dominate `controlled`.
+      // 2/ Execution must have passed through the `s` edge leaving `this`.
+      //
+      // Although "passed through the `s` edge" implies that `this.getASuccessor(s)` dominates `controlled`,
+      // the reverse is not true, as flow may have passed through another edge to get to `this.getASuccessor(s)`
+      // so we need to assert that `this.getASuccessor(s)` dominates `controlled` *and* that
+      // all predecessors of `this.getASuccessor(s)` are either `this` or dominated by `this.getASuccessor(s)`.
+      //
+      // For example, in the following C# snippet:
+      // ```csharp
+      // if (x)
+      //   controlled;
+      // false_successor;
+      // uncontrolled;
+      // ```
+      // `false_successor` dominates `uncontrolled`, but not all of its predecessors are `this` (`if (x)`)
+      //  or dominated by itself. Whereas in the following code:
+      // ```csharp
+      // if (x)
+      //   while (controlled)
+      //     also_controlled;
+      // false_successor;
+      // uncontrolled;
+      // ```
+      // the block `while controlled` is controlled because all of its predecessors are `this` (`if (x)`)
+      // or (in the case of `also_controlled`) dominated by itself.
+      //
+      // The additional constraint on the predecessors of the test successor implies
+      // that `this` strictly dominates `controlled` so that isn't necessary to check
+      // directly.
+      exists(BasicBlock succ | this.immediatelyControls(succ, s) | succ.dominates(controlled))
+    }
+
     /**
      * Holds if this basic block strictly post-dominates basic block `bb`.
      *
@@ -188,6 +241,52 @@ module Make<LocationSig Location, InputSig<Location> Input> {
     cached
     newtype TBasicBlock = TBasicBlockStart(Node cfn) { startsBB(cfn) }
 
+    /** Holds if `cfn` starts a new basic block. */
+    private predicate startsBB(Node cfn) {
+      not exists(nodeGetAPredecessor(cfn, _)) and exists(nodeGetASuccessor(cfn, _))
+      or
+      nodeIsJoin(cfn)
+      or
+      nodeIsBranch(nodeGetAPredecessor(cfn, _))
+      or
+      // In cases such as
+      //
+      // ```rb
+      // if x and y
+      //     foo
+      // else
+      //     bar
+      // ```
+      //
+      // we have a CFG that looks like
+      //
+      // x --false--> [false] x and y --false--> bar
+      //  \                    |
+      //   --true--> y --false--
+      //            \
+      //             --true--> [true] x and y --true--> foo
+      //
+      // and we want to ensure that both `foo` and `bar` start a new basic block.
+      exists(nodeGetAPredecessor(cfn, any(SuccessorType s | successorTypeIsCondition(s))))
+    }
+
+    /**
+     * Holds if `succ` is a control flow successor of `pred` within
+     * the same basic block.
+     */
+    private predicate intraBBSucc(Node pred, Node succ) {
+      succ = nodeGetASuccessor(pred, _) and
+      not startsBB(succ)
+    }
+
+    /**
+     * Holds if `bbStart` is the first node in a basic block and `cfn` is the
+     * `i`th node in the same basic block.
+     */
+    cached
+    predicate bbIndex(Node bbStart, Node cfn, int i) =
+      shortestDistances(startsBB/1, intraBBSucc/2)(bbStart, cfn, i)
+
     /**
      * Holds if the first node of basic block `succ` is a control flow
      * successor of the last node of basic block `pred`.
@@ -213,51 +312,6 @@ module Make<LocationSig Location, InputSig<Location> Input> {
 
   private import Cached
 
-  /** Holds if `cfn` starts a new basic block. */
-  private predicate startsBB(Node cfn) {
-    not exists(nodeGetAPredecessor(cfn, _)) and exists(nodeGetASuccessor(cfn, _))
-    or
-    nodeIsJoin(cfn)
-    or
-    nodeIsBranch(nodeGetAPredecessor(cfn, _))
-    or
-    // In cases such as
-    //
-    // ```rb
-    // if x and y
-    //     foo
-    // else
-    //     bar
-    // ```
-    //
-    // we have a CFG that looks like
-    //
-    // x --false--> [false] x or y --false--> bar
-    // \                    |
-    //  --true--> y --false--
-    //            \
-    //             --true--> [true] x or y --true--> foo
-    //
-    // and we want to ensure that both `foo` and `bar` start a new basic block.
-    exists(nodeGetAPredecessor(cfn, any(SuccessorType s | successorTypeIsCondition(s))))
-  }
-
-  /**
-   * Holds if `succ` is a control flow successor of `pred` within
-   * the same basic block.
-   */
-  predicate intraBBSucc(Node pred, Node succ) {
-    succ = nodeGetASuccessor(pred, _) and
-    not startsBB(succ)
-  }
-
-  /**
-   * Holds if `bbStart` is the first node in a basic block and `cfn` is the
-   * `i`th node in the same basic block.
-   */
-  private predicate bbIndex(Node bbStart, Node cfn, int i) =
-    shortestDistances(startsBB/1, intraBBSucc/2)(bbStart, cfn, i)
-
   /** Holds if `bb` is an entry basic block. */
   private predicate entryBB(BasicBlock bb) { nodeIsDominanceEntry(bb.getFirstNode()) }
 }
diff --git a/shared/controlflow/codeql/controlflow/Cfg.qll b/shared/controlflow/codeql/controlflow/Cfg.qll
index 65fe28d49ef7..0b15b1a096da 100644
--- a/shared/controlflow/codeql/controlflow/Cfg.qll
+++ b/shared/controlflow/codeql/controlflow/Cfg.qll
@@ -1591,13 +1591,8 @@ module MakeWithSplitting<
      * without branches or joins.
      */
     final class BasicBlock extends BasicBlockImpl::BasicBlock {
-      // We extend `BasicBlockImpl::BasicBlock` to add the `getScope`.
       /** Gets the scope of this basic block. */
-      CfgScope getScope() {
-        if this instanceof EntryBasicBlock
-        then result = this.getFirstNode().getScope()
-        else result = this.getAPredecessor().getScope()
-      }
+      CfgScope getScope() { result = this.getFirstNode().getScope() }
 
       /** Gets an immediate successor of this basic block, if any. */
       BasicBlock getASuccessor() { result = super.getASuccessor() }
@@ -1725,60 +1720,6 @@ module MakeWithSplitting<
     /** A basic block that terminates in a condition, splitting the subsequent control flow. */
     final class ConditionBasicBlock extends BasicBlock {
       ConditionBasicBlock() { this.getLastNode().isCondition() }
-
-      /**
-       * Holds if basic block `succ` is immediately controlled by this basic
-       * block with conditional value `s`. That is, `succ` is an immediate
-       * successor of this block, and `succ` can only be reached from
-       * the callable entry point by going via the `s` edge out of this basic block.
-       */
-      pragma[nomagic]
-      predicate immediatelyControls(BasicBlock succ, SuccessorType s) {
-        succ = this.getASuccessor(s) and
-        forall(BasicBlock pred | pred = succ.getAPredecessor() and pred != this |
-          succ.dominates(pred)
-        )
-      }
-
-      /**
-       * Holds if basic block `controlled` is controlled by this basic block with
-       * conditional value `s`. That is, `controlled` can only be reached from
-       * the callable entry point by going via the `s` edge out of this basic block.
-       */
-      predicate controls(BasicBlock controlled, SuccessorType s) {
-        // For this block to control the block `controlled` with `testIsTrue` the following must be true:
-        // 1/ Execution must have passed through the test i.e. `this` must strictly dominate `controlled`.
-        // 2/ Execution must have passed through the `testIsTrue` edge leaving `this`.
-        //
-        // Although "passed through the true edge" implies that `this.getATrueSuccessor()` dominates `controlled`,
-        // the reverse is not true, as flow may have passed through another edge to get to `this.getATrueSuccessor()`
-        // so we need to assert that `this.getATrueSuccessor()` dominates `controlled` *and* that
-        // all predecessors of `this.getATrueSuccessor()` are either `this` or dominated by `this.getATrueSuccessor()`.
-        //
-        // For example, in the following C# snippet:
-        // ```csharp
-        // if (x)
-        //   controlled;
-        // false_successor;
-        // uncontrolled;
-        // ```
-        // `false_successor` dominates `uncontrolled`, but not all of its predecessors are `this` (`if (x)`)
-        //  or dominated by itself. Whereas in the following code:
-        // ```csharp
-        // if (x)
-        //   while (controlled)
-        //     also_controlled;
-        // false_successor;
-        // uncontrolled;
-        // ```
-        // the block `while controlled` is controlled because all of its predecessors are `this` (`if (x)`)
-        // or (in the case of `also_controlled`) dominated by itself.
-        //
-        // The additional constraint on the predecessors of the test successor implies
-        // that `this` strictly dominates `controlled` so that isn't necessary to check
-        // directly.
-        exists(BasicBlock succ | this.immediatelyControls(succ, s) | succ.dominates(controlled))
-      }
     }
   }
 }

From f7e90497bc1e9d32ab9ba77fcb65332fc0223635 Mon Sep 17 00:00:00 2001
From: Simon Friis Vindum <simonfv@gmail.com>
Date: Mon, 20 Jan 2025 13:44:51 +0100
Subject: [PATCH 08/12] Shared: Implement `getScope` in BB module instead of
 CFG module

---
 .../codeql/controlflow/BasicBlock.qll         |  9 ++
 shared/controlflow/codeql/controlflow/Cfg.qll | 85 ++-----------------
 2 files changed, 16 insertions(+), 78 deletions(-)

diff --git a/shared/controlflow/codeql/controlflow/BasicBlock.qll b/shared/controlflow/codeql/controlflow/BasicBlock.qll
index bfb2657eeb99..1d0b4406bbbc 100644
--- a/shared/controlflow/codeql/controlflow/BasicBlock.qll
+++ b/shared/controlflow/codeql/controlflow/BasicBlock.qll
@@ -15,6 +15,9 @@ signature module InputSig<LocationSig Location> {
   /** Hold if `t` represents a conditional successor type. */
   predicate successorTypeIsCondition(SuccessorType t);
 
+  /** Represents a delineated part of the AST with its own CFG. */
+  class CfgScope;
+
   /** The class of control flow nodes. */
   class Node {
     string toString();
@@ -23,6 +26,9 @@ signature module InputSig<LocationSig Location> {
     Location getLocation();
   }
 
+  /** Gets the CFG scope in which this node occurs. */
+  CfgScope nodeGetCfgScope(Node node);
+
   /** Gets an immediate successor of this node. */
   Node nodeGetASuccessor(Node node, SuccessorType t);
 
@@ -62,6 +68,9 @@ module Make<LocationSig Location, InputSig<Location> Input> {
    * without branches or joins.
    */
   private class BasicBlockImpl extends TBasicBlockStart {
+    /** Gets the CFG scope of this basic block. */
+    CfgScope getScope() { result = nodeGetCfgScope(this.getFirstNode()) }
+
     /** Gets the location of this basic block. */
     Location getLocation() { result = this.getFirstNode().getLocation() }
 
diff --git a/shared/controlflow/codeql/controlflow/Cfg.qll b/shared/controlflow/codeql/controlflow/Cfg.qll
index 0b15b1a096da..3b9f00c669a1 100644
--- a/shared/controlflow/codeql/controlflow/Cfg.qll
+++ b/shared/controlflow/codeql/controlflow/Cfg.qll
@@ -1568,6 +1568,8 @@ module MakeWithSplitting<
   module BasicBlocks {
     private import codeql.controlflow.BasicBlock as BB
 
+    private class CfgScopeAlias = CfgScope;
+
     private class NodeAlias = Node;
 
     private module BasicBlockInputSig implements BB::InputSig<Location> {
@@ -1575,8 +1577,12 @@ module MakeWithSplitting<
 
       predicate successorTypeIsCondition = Input::successorTypeIsCondition/1;
 
+      class CfgScope = CfgScopeAlias;
+
       class Node = NodeAlias;
 
+      CfgScope nodeGetCfgScope(Node node) { result = node.getScope() }
+
       Node nodeGetASuccessor(Node node, SuccessorType t) { result = node.getASuccessor(t) }
 
       predicate nodeIsDominanceEntry(Node node) { node instanceof EntryNode }
@@ -1586,84 +1592,7 @@ module MakeWithSplitting<
 
     private module BasicBlockImpl = BB::Make<Location, BasicBlockInputSig>;
 
-    /**
-     * A basic block, that is, a maximal straight-line sequence of control flow nodes
-     * without branches or joins.
-     */
-    final class BasicBlock extends BasicBlockImpl::BasicBlock {
-      /** Gets the scope of this basic block. */
-      CfgScope getScope() { result = this.getFirstNode().getScope() }
-
-      /** Gets an immediate successor of this basic block, if any. */
-      BasicBlock getASuccessor() { result = super.getASuccessor() }
-
-      /** Gets an immediate successor of this basic block of a given type, if any. */
-      BasicBlock getASuccessor(SuccessorType t) { result = super.getASuccessor(t) }
-
-      /** Gets an immediate predecessor of this basic block, if any. */
-      BasicBlock getAPredecessor() { result = super.getAPredecessor() }
-
-      /** Gets an immediate predecessor of this basic block of a given type, if any. */
-      BasicBlock getAPredecessor(SuccessorType t) { result = super.getAPredecessor(t) }
-
-      /**
-       * Holds if this basic block immediately dominates basic block `bb`.
-       *
-       * That is, `bb` is an immediate successor of this basic block and all
-       * paths reaching basic block `bb` from some entry point basic block must
-       * go through this basic block.
-       */
-      predicate immediatelyDominates(BasicBlock bb) { super.immediatelyDominates(bb) }
-
-      /**
-       * Holds if this basic block strictly dominates basic block `bb`.
-       *
-       * That is, all paths reaching `bb` from some entry point basic block must
-       * go through this basic block and this basic block is different from `bb`.
-       */
-      predicate strictlyDominates(BasicBlock bb) { super.strictlyDominates(bb) }
-
-      /**
-       * Holds if this basic block dominates basic block `bb`.
-       *
-       * That is, all paths reaching `bb` from some entry point basic block must
-       * go through this basic block.
-       */
-      predicate dominates(BasicBlock bb) { super.dominates(bb) }
-
-      /**
-       * Holds if `df` is in the dominance frontier of this basic block. That is,
-       * this basic block dominates a predecessor of `df`, but does not dominate
-       * `df` itself.
-       */
-      predicate inDominanceFrontier(BasicBlock df) { super.inDominanceFrontier(df) }
-
-      /**
-       * Gets the basic block that immediately dominates this basic block, if any.
-       *
-       * That is, all paths reaching this basic block from some entry point
-       * basic block must go through the result, which is an immediate basic block
-       * predecessor of this basic block.
-       */
-      BasicBlock getImmediateDominator() { result = super.getImmediateDominator() }
-
-      /**
-       * Holds if this basic block strictly post-dominates basic block `bb`.
-       *
-       * That is, all paths reaching a normal exit point basic block from basic
-       * block `bb` must go through this basic block and this basic block is
-       * different from `bb`.
-       */
-      predicate strictlyPostDominates(BasicBlock bb) { super.strictlyPostDominates(bb) }
-
-      /**
-       * Holds if this basic block post-dominates basic block `bb`.
-       *
-       * That is, all paths reaching a normal exit point basic block from basic
-       * block `bb` must go through this basic block.
-       */
-      predicate postDominates(BasicBlock bb) { super.postDominates(bb) }
-    }
+    final class BasicBlock = BasicBlockImpl::BasicBlock;
 
     /**
      * An entry basic block, that is, a basic block whose first node is

From 9a4bf7513dbee1b4d33c6f2b8a33f07dd2908fed Mon Sep 17 00:00:00 2001
From: Simon Friis Vindum <simonfv@gmail.com>
Date: Mon, 20 Jan 2025 14:20:48 +0100
Subject: [PATCH 09/12] Shared: Add more detailed documentation for
 `immediatelyControls`

---
 .../codeql/controlflow/BasicBlock.qll         | 26 +++++++++++++++----
 1 file changed, 21 insertions(+), 5 deletions(-)

diff --git a/shared/controlflow/codeql/controlflow/BasicBlock.qll b/shared/controlflow/codeql/controlflow/BasicBlock.qll
index 1d0b4406bbbc..9342a4ff4ede 100644
--- a/shared/controlflow/codeql/controlflow/BasicBlock.qll
+++ b/shared/controlflow/codeql/controlflow/BasicBlock.qll
@@ -162,9 +162,25 @@ module Make<LocationSig Location, InputSig<Location> Input> {
 
     /**
      * Holds if basic block `succ` is immediately controlled by this basic
-     * block with conditional value `s`. That is, `succ` is an immediate
-     * successor of this block, and `succ` can only be reached from
-     * the callable entry point by going via the `s` edge out of this basic block.
+     * block with successor type `s`. That is, `succ` is an immediate successor
+     * of this block, and `succ` can only be reached from the entry block by
+     * going via the `s` edge out of this basic block.
+     *
+     * The above implies that this block immediately dominates `succ`. But
+     * "controls" is a stronger notion than "dominates". It is not the case
+     * that any immediate successor that is immediately dominated by this block
+     * is also immediately controlled by this block. To see why, consider this
+     * example corresponding to an `if`-statement without an `else` block:
+     * ```
+     * ... --> cond --[true]--> ... --> if stmt
+     *           \                      /
+     *            ----[false]-----------
+     * ```
+     * The basic block for `cond` immediately dominates the immediately
+     * succeeding basic block for the `if` statement. But the `if` statement
+     * is not immediately controlled by the `cond` basic block and the `false`
+     * edge since it is also possible to reach the `if` statement via a path
+     * through the `true` edge.
      */
     pragma[nomagic]
     predicate immediatelyControls(BasicBlock succ, SuccessorType s) {
@@ -176,8 +192,8 @@ module Make<LocationSig Location, InputSig<Location> Input> {
 
     /**
      * Holds if basic block `controlled` is controlled by this basic block with
-     * conditional value `s`. That is, `controlled` can only be reached from
-     * the callable entry point by going via the `s` edge out of this basic block.
+     * successor type `s`. That is, `controlled` can only be reached from the
+     * entry point by going via the `s` edge out of this basic block.
      */
     predicate controls(BasicBlock controlled, SuccessorType s) {
       // For this block to control the block `controlled` with `s` the following must be true:

From e5f419ce75e5841603f7b108f1a626437ba04f2c Mon Sep 17 00:00:00 2001
From: Simon Friis Vindum <simonfv@gmail.com>
Date: Wed, 22 Jan 2025 09:45:02 +0100
Subject: [PATCH 10/12] Shared: Define `getNode` inside cached module

---
 shared/controlflow/codeql/controlflow/BasicBlock.qll | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/shared/controlflow/codeql/controlflow/BasicBlock.qll b/shared/controlflow/codeql/controlflow/BasicBlock.qll
index 9342a4ff4ede..b9a954e9d9be 100644
--- a/shared/controlflow/codeql/controlflow/BasicBlock.qll
+++ b/shared/controlflow/codeql/controlflow/BasicBlock.qll
@@ -89,7 +89,7 @@ module Make<LocationSig Location, InputSig<Location> Input> {
     BasicBlock getAPredecessor(SuccessorType t) { result.getASuccessor(t) = this }
 
     /** Gets the control flow node at a specific (zero-indexed) position in this basic block. */
-    Node getNode(int pos) { bbIndex(this.getFirstNode(), result, pos) }
+    Node getNode(int pos) { result = getNode(this, pos) }
 
     /** Gets a control flow node in this basic block. */
     Node getANode() { result = this.getNode(_) }
@@ -308,10 +308,12 @@ module Make<LocationSig Location, InputSig<Location> Input> {
      * Holds if `bbStart` is the first node in a basic block and `cfn` is the
      * `i`th node in the same basic block.
      */
-    cached
-    predicate bbIndex(Node bbStart, Node cfn, int i) =
+    private predicate bbIndex(Node bbStart, Node cfn, int i) =
       shortestDistances(startsBB/1, intraBBSucc/2)(bbStart, cfn, i)
 
+    cached
+    Node getNode(BasicBlock bb, int pos) { bbIndex(bb.getFirstNode(), result, pos) }
+
     /**
      * Holds if the first node of basic block `succ` is a control flow
      * successor of the last node of basic block `pred`.

From 9547a5cd27971ee8c94fb96f7c712cb3a8f4483a Mon Sep 17 00:00:00 2001
From: Simon Friis Vindum <simonfv@gmail.com>
Date: Wed, 22 Jan 2025 16:07:30 +0100
Subject: [PATCH 11/12] Shared: Update basic block documentation and make minor
 tweaks

---
 .../code/csharp/controlflow/BasicBlocks.qll   | 19 +++--
 .../codeql/ruby/controlflow/BasicBlocks.qll   | 20 +++--
 .../codeql/controlflow/BasicBlock.qll         | 84 ++++++++++++-------
 3 files changed, 83 insertions(+), 40 deletions(-)

diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/BasicBlocks.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/BasicBlocks.qll
index c3581e8f0c86..eb375dc4450e 100644
--- a/csharp/ql/lib/semmle/code/csharp/controlflow/BasicBlocks.qll
+++ b/csharp/ql/lib/semmle/code/csharp/controlflow/BasicBlocks.qll
@@ -76,9 +76,13 @@ final class BasicBlock extends BasicBlocksImpl::BasicBlock {
   /**
    * Holds if this basic block immediately dominates basic block `bb`.
    *
-   * That is, all paths reaching basic block `bb` from some entry point
-   * basic block must go through this basic block (which is an immediate
-   * predecessor of `bb`).
+   * That is, this basic block is the unique basic block satisfying:
+   * 1. This basic block strictly dominates `bb`
+   * 2. There exists no other basic block that is strictly dominated by this
+   *    basic block and which strictly dominates `bb`.
+   *
+   * All basic blocks, except entry basic blocks, have a unique immediate
+   * dominator.
    *
    * Example:
    *
@@ -174,8 +178,13 @@ final class BasicBlock extends BasicBlocksImpl::BasicBlock {
   /**
    * Gets the basic block that immediately dominates this basic block, if any.
    *
-   * That is, all paths reaching this basic block from some entry point
-   * basic block must go through the result.
+   * That is, the result is the unique basic block satisfying:
+   * 1. The result strictly dominates this basic block.
+   * 2. There exists no other basic block that is strictly dominated by the
+   *    result and which strictly dominates this basic block.
+   *
+   * All basic blocks, except entry basic blocks, have a unique immediate
+   * dominator.
    *
    * Example:
    *
diff --git a/ruby/ql/lib/codeql/ruby/controlflow/BasicBlocks.qll b/ruby/ql/lib/codeql/ruby/controlflow/BasicBlocks.qll
index 1c4fbc5dcb37..6ca386ce0e63 100644
--- a/ruby/ql/lib/codeql/ruby/controlflow/BasicBlocks.qll
+++ b/ruby/ql/lib/codeql/ruby/controlflow/BasicBlocks.qll
@@ -40,9 +40,13 @@ final class BasicBlock extends BasicBlocksImpl::BasicBlock {
   /**
    * Holds if this basic block immediately dominates basic block `bb`.
    *
-   * That is, all paths reaching basic block `bb` from some entry point
-   * basic block must go through this basic block (which is an immediate
-   * predecessor of `bb`).
+   * That is, this basic block is the unique basic block satisfying:
+   * 1. This basic block strictly dominates `bb`
+   * 2. There exists no other basic block that is strictly dominated by this
+   *    basic block and which strictly dominates `bb`.
+   *
+   * All basic blocks, except entry basic blocks, have a unique immediate
+   * dominator.
    *
    * Example:
    *
@@ -138,9 +142,13 @@ final class BasicBlock extends BasicBlocksImpl::BasicBlock {
   /**
    * Gets the basic block that immediately dominates this basic block, if any.
    *
-   * That is, all paths reaching this basic block from some entry point
-   * basic block must go through the result, which is an immediate basic block
-   * predecessor of this basic block.
+   * That is, the result is the unique basic block satisfying:
+   * 1. The result strictly dominates this basic block.
+   * 2. There exists no other basic block that is strictly dominated by the
+   *    result and which strictly dominates this basic block.
+   *
+   * All basic blocks, except entry basic blocks, have a unique immediate
+   * dominator.
    *
    * Example:
    *
diff --git a/shared/controlflow/codeql/controlflow/BasicBlock.qll b/shared/controlflow/codeql/controlflow/BasicBlock.qll
index b9a954e9d9be..883e36b2ef16 100644
--- a/shared/controlflow/codeql/controlflow/BasicBlock.qll
+++ b/shared/controlflow/codeql/controlflow/BasicBlock.qll
@@ -15,7 +15,7 @@ signature module InputSig<LocationSig Location> {
   /** Hold if `t` represents a conditional successor type. */
   predicate successorTypeIsCondition(SuccessorType t);
 
-  /** Represents a delineated part of the AST with its own CFG. */
+  /** A delineated part of the AST with its own CFG. */
   class CfgScope;
 
   /** The class of control flow nodes. */
@@ -106,16 +106,20 @@ module Make<LocationSig Location, InputSig<Location> Input> {
     /**
      * Holds if this basic block immediately dominates basic block `bb`.
      *
-     * That is, `bb` is an immediate successor of this basic block and all
-     * paths reaching basic block `bb` from some entry point basic block must
-     * go through this basic block.
+     * That is, this basic block is the unique basic block satisfying:
+     * 1. This basic block strictly dominates `bb`
+     * 2. There exists no other basic block that is strictly dominated by this
+     *    basic block and which strictly dominates `bb`.
+     *
+     * All basic blocks, except entry basic blocks, have a unique immediate
+     * dominator.
      */
     predicate immediatelyDominates(BasicBlock bb) { bbIDominates(this, bb) }
 
     /**
      * Holds if this basic block strictly dominates basic block `bb`.
      *
-     * That is, all paths reaching `bb` from some entry point basic block must
+     * That is, all paths reaching `bb` from the entry point basic block must
      * go through this basic block and this basic block is different from `bb`.
      */
     predicate strictlyDominates(BasicBlock bb) { bbIDominates+(this, bb) }
@@ -123,7 +127,7 @@ module Make<LocationSig Location, InputSig<Location> Input> {
     /**
      * Holds if this basic block dominates basic block `bb`.
      *
-     * That is, all paths reaching `bb` from some entry point basic block must
+     * That is, all paths reaching `bb` from the entry point basic block must
      * go through this basic block.
      */
     predicate dominates(BasicBlock bb) {
@@ -154,37 +158,44 @@ module Make<LocationSig Location, InputSig<Location> Input> {
     /**
      * Gets the basic block that immediately dominates this basic block, if any.
      *
-     * That is, all paths reaching this basic block from some entry point
-     * basic block must go through the result, which is an immediate basic block
-     * predecessor of this basic block.
+     * That is, the result is the unique basic block satisfying:
+     * 1. The result strictly dominates this basic block.
+     * 2. There exists no other basic block that is strictly dominated by the
+     *    result and which strictly dominates this basic block.
+     *
+     * All basic blocks, except entry basic blocks, have a unique immediate
+     * dominator.
      */
     BasicBlock getImmediateDominator() { bbIDominates(result, this) }
 
     /**
      * Holds if basic block `succ` is immediately controlled by this basic
-     * block with successor type `s`. That is, `succ` is an immediate successor
-     * of this block, and `succ` can only be reached from the entry block by
-     * going via the `s` edge out of this basic block.
+     * block with successor type `s`.
      *
-     * The above implies that this block immediately dominates `succ`. But
-     * "controls" is a stronger notion than "dominates". It is not the case
-     * that any immediate successor that is immediately dominated by this block
-     * is also immediately controlled by this block. To see why, consider this
-     * example corresponding to an `if`-statement without an `else` block:
-     * ```
-     * ... --> cond --[true]--> ... --> if stmt
-     *           \                      /
-     *            ----[false]-----------
-     * ```
-     * The basic block for `cond` immediately dominates the immediately
-     * succeeding basic block for the `if` statement. But the `if` statement
-     * is not immediately controlled by the `cond` basic block and the `false`
-     * edge since it is also possible to reach the `if` statement via a path
-     * through the `true` edge.
+     * That is, `succ` is an immediate successor of this block, and `succ` can
+     * only be reached from the entry block by going via the `s` edge out of
+     * this basic block.
      */
     pragma[nomagic]
     predicate immediatelyControls(BasicBlock succ, SuccessorType s) {
       succ = this.getASuccessor(s) and
+      bbIDominates(this, succ) and
+      // The above is not sufficient to ensure that `succ` can only be reached
+      // through `s`. To see why, consider this example corresponding to an
+      // `if` expression without an `else` block:
+      // ```
+      // ... --> cond --[true]--> ... --> if expr
+      //           \                      /
+      //            ----[false]-----------
+      // ```
+      // The basic block for `cond` immediately dominates the directly
+      // succeeding basic block for the `if` expression. But the `if`
+      // expression is not immediately controlled by the `cond` basic block and
+      // the `false` edge since it is also possible to reach the `if`
+      // expression via the `true` edge.
+      //
+      // Note that the first and third conjunct implies the second. But
+      // explicitly including the second conjunct leads to a better join order.
       forall(BasicBlock pred | pred = succ.getAPredecessor() and pred != this |
         succ.dominates(pred)
       )
@@ -192,8 +203,22 @@ module Make<LocationSig Location, InputSig<Location> Input> {
 
     /**
      * Holds if basic block `controlled` is controlled by this basic block with
-     * successor type `s`. That is, `controlled` can only be reached from the
-     * entry point by going via the `s` edge out of this basic block.
+     * successor type `s`.
+     *
+     * That is, all paths reaching `controlled` from the entry point basic
+     * block must go through the `s` edge out of this basic block.
+     *
+     * Control is similar to dominance except it concerns edges instead of
+     * nodes: A basic block is _dominated_ by a _basic block_ `bb` if it can
+     * only be reached through `bb` and _controlled_ by an _edge_ `s` if it can
+     * only be reached through `s`.
+     *
+     * Note that where all basic blocks (except the entry basic block) are
+     * strictly dominated by at least one basic block, a basic block may not be
+     * controlled by any edge. If an edge controls a basic block `bb`, then
+     * both endpoints of the edge dominates `bb`. The converse is not the case,
+     * as there may be multiple paths between the endpoints with none of them
+     * dominating.
      */
     predicate controls(BasicBlock controlled, SuccessorType s) {
       // For this block to control the block `controlled` with `s` the following must be true:
@@ -308,6 +333,7 @@ module Make<LocationSig Location, InputSig<Location> Input> {
      * Holds if `bbStart` is the first node in a basic block and `cfn` is the
      * `i`th node in the same basic block.
      */
+    pragma[nomagic]
     private predicate bbIndex(Node bbStart, Node cfn, int i) =
       shortestDistances(startsBB/1, intraBBSucc/2)(bbStart, cfn, i)
 

From a537f347d3b0618f33e000558ca465b8c1fcfeb6 Mon Sep 17 00:00:00 2001
From: Simon Friis Vindum <simonfv@gmail.com>
Date: Thu, 23 Jan 2025 17:21:46 +0100
Subject: [PATCH 12/12] Shared: Tweak basic block documentation

---
 .../controlflow/codeql/controlflow/BasicBlock.qll  | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/shared/controlflow/codeql/controlflow/BasicBlock.qll b/shared/controlflow/codeql/controlflow/BasicBlock.qll
index 883e36b2ef16..57f6a310d182 100644
--- a/shared/controlflow/codeql/controlflow/BasicBlock.qll
+++ b/shared/controlflow/codeql/controlflow/BasicBlock.qll
@@ -182,17 +182,17 @@ module Make<LocationSig Location, InputSig<Location> Input> {
       bbIDominates(this, succ) and
       // The above is not sufficient to ensure that `succ` can only be reached
       // through `s`. To see why, consider this example corresponding to an
-      // `if` expression without an `else` block:
+      // `if` statement without an `else` block and whe `A` is the basic block
+      // following the `if` statement:
       // ```
-      // ... --> cond --[true]--> ... --> if expr
+      // ... --> cond --[true]--> ... --> A
       //           \                      /
       //            ----[false]-----------
       // ```
-      // The basic block for `cond` immediately dominates the directly
-      // succeeding basic block for the `if` expression. But the `if`
-      // expression is not immediately controlled by the `cond` basic block and
-      // the `false` edge since it is also possible to reach the `if`
-      // expression via the `true` edge.
+      // Here `A` is a direct successor of `cond` along the `false` edge and it
+      // is immediately dominated by `cond`, but `A` is not controlled by the
+      // `false` edge since it is also possible to reach `A` via the `true`
+      // edge.
       //
       // Note that the first and third conjunct implies the second. But
       // explicitly including the second conjunct leads to a better join order.