From 4fa8a9fb1dc86cef327d39d2a4fd301532d999d1 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 24 Jun 2026 10:36:23 +0000 Subject: [PATCH 1/2] Synthesize true value for valueless Ruby CaseExpr --- .../lib/codeql/ruby/ast/internal/Control.qll | 6 +- .../codeql/ruby/ast/internal/Synthesis.qll | 19 ++ ruby/ql/test/library-tests/ast/Ast.expected | 1 + .../test/library-tests/ast/ValueText.expected | 2 + .../ast/control/CaseExpr.expected | 2 +- .../controlflow/graph/BasicBlocks.expected | 302 +++++++++--------- .../controlflow/graph/Cfg.expected | 23 +- .../barrier-guards/barrier-guards.expected | 80 ++--- 8 files changed, 231 insertions(+), 204 deletions(-) diff --git a/ruby/ql/lib/codeql/ruby/ast/internal/Control.qll b/ruby/ql/lib/codeql/ruby/ast/internal/Control.qll index 00076ba996a8..3c033fb200bb 100644 --- a/ruby/ql/lib/codeql/ruby/ast/internal/Control.qll +++ b/ruby/ql/lib/codeql/ruby/ast/internal/Control.qll @@ -16,7 +16,11 @@ class CaseWhenClause extends CaseExprImpl, TCaseExpr { CaseWhenClause() { this = TCaseExpr(g) } - final override Expr getValue() { toGenerated(result) = g.getValue() } + final override Expr getValue() { + toGenerated(result) = g.getValue() + or + not exists(g.getValue()) and synthChild(this, -2, result) + } final override AstNode getBranch(int n) { // When branches map directly to WhenClause nodes diff --git a/ruby/ql/lib/codeql/ruby/ast/internal/Synthesis.qll b/ruby/ql/lib/codeql/ruby/ast/internal/Synthesis.qll index 081cbd01a38f..f05deae59623 100644 --- a/ruby/ql/lib/codeql/ruby/ast/internal/Synthesis.qll +++ b/ruby/ql/lib/codeql/ruby/ast/internal/Synthesis.qll @@ -2002,6 +2002,25 @@ private module CallableBodySynthesis { } } +private module CaseNoValueSynthesis { + pragma[nomagic] + private predicate caseNoValueSynthesis(AstNode parent, int i, Child child) { + // Synthesize a `true` literal as the value of a `case`/`when` expression that has no value + exists(Ruby::Case g | + not exists(g.getValue()) and + parent = TCaseExpr(g) and + child = SynthChild(BooleanLiteralKind(true)) and + i = -2 + ) + } + + private class CaseNoValueSynthesisImpl extends Synthesis { + final override predicate child(AstNode parent, int i, Child child) { + caseNoValueSynthesis(parent, i, child) + } + } +} + private module CaseElseBranchSynthesis { pragma[nomagic] private predicate caseElseBranchSynthesis(AstNode parent, int i, Child child) { diff --git a/ruby/ql/test/library-tests/ast/Ast.expected b/ruby/ql/test/library-tests/ast/Ast.expected index 8743b87f612f..2d047b5a9f94 100644 --- a/ruby/ql/test/library-tests/ast/Ast.expected +++ b/ruby/ql/test/library-tests/ast/Ast.expected @@ -829,6 +829,7 @@ control/cases.rb: # 13| getBody: [StmtSequence] else ... # 14| getStmt: [IntegerLiteral] 300 # 18| getStmt: [CaseExpr] case ... +# 18| getValue: [BooleanLiteral] true # 19| getBranch: [WhenClause] when ... # 19| getPattern: [GTExpr] ... > ... # 19| getAnOperand/getGreaterOperand/getLeftOperand/getReceiver: [LocalVariableAccess] a diff --git a/ruby/ql/test/library-tests/ast/ValueText.expected b/ruby/ql/test/library-tests/ast/ValueText.expected index c3e991b96e72..42eab5f74d9e 100644 --- a/ruby/ql/test/library-tests/ast/ValueText.expected +++ b/ruby/ql/test/library-tests/ast/ValueText.expected @@ -131,6 +131,7 @@ exprValue | control/cases.rb:11:9:11:9 | d | 0 | int | | control/cases.rb:12:5:12:7 | 200 | 200 | int | | control/cases.rb:14:5:14:7 | 300 | 300 | int | +| control/cases.rb:18:1:22:3 | true | true | boolean | | control/cases.rb:19:6:19:6 | a | 0 | int | | control/cases.rb:19:10:19:10 | b | 0 | int | | control/cases.rb:19:18:19:19 | 10 | 10 | int | @@ -1094,6 +1095,7 @@ exprCfgNodeValue | control/cases.rb:11:9:11:9 | d | 0 | int | | control/cases.rb:12:5:12:7 | 200 | 200 | int | | control/cases.rb:14:5:14:7 | 300 | 300 | int | +| control/cases.rb:18:1:22:3 | true | true | boolean | | control/cases.rb:19:6:19:6 | a | 0 | int | | control/cases.rb:19:10:19:10 | b | 0 | int | | control/cases.rb:19:18:19:19 | 10 | 10 | int | diff --git a/ruby/ql/test/library-tests/ast/control/CaseExpr.expected b/ruby/ql/test/library-tests/ast/control/CaseExpr.expected index 0ce764bbb74d..eec96acd0b01 100644 --- a/ruby/ql/test/library-tests/ast/control/CaseExpr.expected +++ b/ruby/ql/test/library-tests/ast/control/CaseExpr.expected @@ -1,5 +1,6 @@ caseValues | cases.rb:8:1:15:3 | case ... | cases.rb:8:6:8:6 | a | +| cases.rb:18:1:22:3 | case ... | cases.rb:18:1:22:3 | true | | cases.rb:26:1:29:3 | case ... | cases.rb:26:6:26:9 | call to expr | | cases.rb:31:1:37:3 | case ... | cases.rb:31:6:31:9 | call to expr | | cases.rb:39:1:80:3 | case ... | cases.rb:39:6:39:9 | call to expr | @@ -15,7 +16,6 @@ caseValues | cases.rb:164:1:167:3 | case ... | cases.rb:165:3:165:5 | foo | | cases.rb:169:1:172:3 | case ... | cases.rb:170:3:170:5 | foo | caseNoValues -| cases.rb:18:1:22:3 | case ... | caseElseBranches | cases.rb:8:1:15:3 | case ... | cases.rb:13:1:14:7 | else ... | | cases.rb:26:1:29:3 | case ... | cases.rb:28:3:28:12 | else ... | diff --git a/ruby/ql/test/library-tests/controlflow/graph/BasicBlocks.expected b/ruby/ql/test/library-tests/controlflow/graph/BasicBlocks.expected index 720ee26e679e..dd9e84f487a7 100644 --- a/ruby/ql/test/library-tests/controlflow/graph/BasicBlocks.expected +++ b/ruby/ql/test/library-tests/controlflow/graph/BasicBlocks.expected @@ -1022,11 +1022,11 @@ dominates | 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:3:48:29 | [match] when ... | +| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:48:3:48:29 | [no-match] 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:3:49:37 | [match] when ... | +| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:49:3:49:37 | [no-match] 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 | @@ -1085,11 +1085,11 @@ dominates | 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:3:48:29 | [match] when ... | +| cfg.rb:32:9:32:9 | 1 | cfg.rb:48:3:48:29 | [no-match] 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:3:49:37 | [match] when ... | +| cfg.rb:32:9:32:9 | 1 | cfg.rb:49:3:49:37 | [no-match] 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 | @@ -1145,11 +1145,11 @@ dominates | 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:3:48:29 | [match] when ... | +| cfg.rb:35:1:37:3 | if ... | cfg.rb:48:3:48:29 | [no-match] 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:3:49:37 | [match] when ... | +| cfg.rb:35:1:37:3 | if ... | cfg.rb:49:3:49:37 | [no-match] 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 | @@ -1194,11 +1194,11 @@ dominates | 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:3:48:29 | [match] when ... | +| cfg.rb:41:1:45:3 | case ... | cfg.rb:48:3:48:29 | [no-match] 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:3:49:37 | [match] when ... | +| cfg.rb:41:1:45:3 | case ... | cfg.rb:49:3:49:37 | [no-match] 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 | @@ -1312,24 +1312,24 @@ dominates | 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:3:48:29 | [match] when ... | cfg.rb:48:3:48:29 | [match] when ... | +| cfg.rb:48:3:48:29 | [match] when ... | cfg.rb:48:20:48:29 | self | +| cfg.rb:48:3:48:29 | [no-match] when ... | cfg.rb:48:3:48:29 | [no-match] when ... | +| cfg.rb:48:3:48:29 | [no-match] when ... | cfg.rb:49:3:49:37 | [match] when ... | +| cfg.rb:48:3:48:29 | [no-match] when ... | cfg.rb:49:3:49:37 | [no-match] when ... | +| cfg.rb:48:3:48:29 | [no-match] when ... | cfg.rb:49:8:49:8 | b | +| cfg.rb:48:3:48:29 | [no-match] when ... | cfg.rb:49:16:49:16 | b | +| cfg.rb:48:3:48:29 | [no-match] when ... | cfg.rb:49:27:49:37 | 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:3:49:37 | [match] when ... | cfg.rb:49:3:49:37 | [match] when ... | +| cfg.rb:49:3:49:37 | [match] when ... | cfg.rb:49:27:49:37 | self | +| cfg.rb:49:3:49:37 | [no-match] when ... | cfg.rb:49:3:49:37 | [no-match] when ... | +| cfg.rb:49:8:49:8 | b | cfg.rb:49:3:49:37 | [match] when ... | +| cfg.rb:49:8:49:8 | b | cfg.rb:49:3:49:37 | [no-match] 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:3:49:37 | [no-match] 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 | ... ? ... : ... | @@ -2771,24 +2771,24 @@ postDominance | 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:3:48:29 | [match] when ... | +| cfg.rb:47:1:50:3 | case ... | cfg.rb:48:3:48:29 | [no-match] 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:3:49:37 | [match] when ... | +| cfg.rb:47:1:50:3 | case ... | cfg.rb:49:3:49:37 | [no-match] 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:3:48:29 | [match] when ... | cfg.rb:48:3:48:29 | [match] when ... | +| cfg.rb:48:3:48:29 | [no-match] when ... | cfg.rb:48:3:48:29 | [no-match] when ... | +| cfg.rb:48:20:48:29 | self | cfg.rb:48:3:48:29 | [match] 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:3:49:37 | [match] when ... | cfg.rb:49:3:49:37 | [match] when ... | +| cfg.rb:49:3:49:37 | [no-match] when ... | cfg.rb:49:3:49:37 | [no-match] when ... | +| cfg.rb:49:8:49:8 | b | cfg.rb:48:3:48:29 | [no-match] 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:3:49:37 | [match] 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 | @@ -2805,11 +2805,11 @@ postDominance | 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:3:48:29 | [match] when ... | +| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:48:3:48:29 | [no-match] 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:3:49:37 | [match] when ... | +| cfg.rb:60:17:60:40 | ... ? ... : ... | cfg.rb:49:3:49:37 | [no-match] 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 | @@ -2835,11 +2835,11 @@ postDominance | 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:3:48:29 | [match] when ... | +| cfg.rb:75:1:75:47 | if ... | cfg.rb:48:3:48:29 | [no-match] 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:3:49:37 | [match] when ... | +| cfg.rb:75:1:75:47 | if ... | cfg.rb:49:3:49:37 | [no-match] 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 | @@ -2882,11 +2882,11 @@ postDominance | 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:3:48:29 | [match] when ... | +| cfg.rb:90:5:90:5 | if ... | cfg.rb:48:3:48:29 | [no-match] 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:3:49:37 | [match] when ... | +| cfg.rb:90:5:90:5 | if ... | cfg.rb:49:3:49:37 | [no-match] 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 | @@ -2928,11 +2928,11 @@ postDominance | 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:3:48:29 | [match] when ... | +| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:48:3:48:29 | [no-match] 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:3:49:37 | [match] when ... | +| cfg.rb:113:1:113:19 | ... if ... | cfg.rb:49:3:49:37 | [no-match] 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 | @@ -2967,11 +2967,11 @@ postDominance | 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:3:48:29 | [match] when ... | +| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:48:3:48:29 | [no-match] 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:3:49:37 | [match] when ... | +| cfg.rb:136:1:136:29 | ... rescue ... | cfg.rb:49:3:49:37 | [no-match] 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 | @@ -3011,11 +3011,11 @@ postDominance | 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:3:48:29 | [match] when ... | +| cfg.rb:172:1:172:49 | unless ... | cfg.rb:48:3:48:29 | [no-match] 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:3:49:37 | [match] when ... | +| cfg.rb:172:1:172:49 | unless ... | cfg.rb:49:3:49:37 | [no-match] 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 | @@ -3057,11 +3057,11 @@ postDominance | 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:3:48:29 | [match] when ... | +| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:48:3:48:29 | [no-match] 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:3:49:37 | [match] when ... | +| cfg.rb:174:1:174:23 | ... unless ... | cfg.rb:49:3:49:37 | [no-match] 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 | @@ -3102,11 +3102,11 @@ postDominance | 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:3:48:29 | [match] when ... | +| cfg.rb:176:1:176:41 | until ... | cfg.rb:48:3:48:29 | [no-match] 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:3:49:37 | [match] when ... | +| cfg.rb:176:1:176:41 | until ... | cfg.rb:49:3:49:37 | [no-match] 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 | @@ -3150,11 +3150,11 @@ postDominance | 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:3:48:29 | [match] when ... | +| cfg.rb:176:7:176:7 | x | cfg.rb:48:3:48:29 | [no-match] 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:3:49:37 | [match] when ... | +| cfg.rb:176:7:176:7 | x | cfg.rb:49:3:49:37 | [no-match] 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 | @@ -3198,11 +3198,11 @@ postDominance | 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:3:48:29 | [match] when ... | +| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:48:3:48:29 | [no-match] 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:3:49:37 | [match] when ... | +| cfg.rb:179:1:179:36 | ... until ... | cfg.rb:49:3:49:37 | [no-match] 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 | @@ -3250,11 +3250,11 @@ postDominance | 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:3:48:29 | [match] when ... | +| cfg.rb:179:30:179:30 | i | cfg.rb:48:3:48:29 | [no-match] 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:3:49:37 | [match] when ... | +| cfg.rb:179:30:179:30 | i | cfg.rb:49:3:49:37 | [no-match] 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 | @@ -3300,11 +3300,11 @@ postDominance | 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:3:48:29 | [match] when ... | +| cfg.rb:182:1:186:3 | while ... | cfg.rb:48:3:48:29 | [no-match] 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:3:49:37 | [match] when ... | +| cfg.rb:182:1:186:3 | while ... | cfg.rb:49:3:49:37 | [no-match] 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 | @@ -3356,11 +3356,11 @@ postDominance | 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:3:48:29 | [match] when ... | +| cfg.rb:182:7:182:7 | x | cfg.rb:48:3:48:29 | [no-match] 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:3:49:37 | [match] when ... | +| cfg.rb:182:7:182:7 | x | cfg.rb:49:3:49:37 | [no-match] 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 | @@ -3417,11 +3417,11 @@ postDominance | 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:3:48:29 | [match] when ... | +| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:48:3:48:29 | [no-match] 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:3:49:37 | [match] when ... | +| cfg.rb:188:1:188:35 | ... while ... | cfg.rb:49:3:49:37 | [no-match] 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 | @@ -3477,11 +3477,11 @@ postDominance | 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:3:48:29 | [match] when ... | +| cfg.rb:188:30:188:30 | i | cfg.rb:48:3:48:29 | [no-match] 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:3:49:37 | [match] when ... | +| cfg.rb:188:30:188:30 | i | cfg.rb:49:3:49:37 | [no-match] 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 | @@ -3542,11 +3542,11 @@ postDominance | 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:3:48:29 | [match] when ... | +| cfg.rb:205:4:205:5 | if ... | cfg.rb:48:3:48:29 | [no-match] 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:3:49:37 | [match] when ... | +| cfg.rb:205:4:205:5 | if ... | cfg.rb:49:3:49:37 | [no-match] 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 | @@ -4295,14 +4295,14 @@ immediateDominator | 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:48:3:48:29 | [match] when ... | cfg.rb:41:1:45:3 | case ... | +| cfg.rb:48:3:48:29 | [no-match] when ... | cfg.rb:41:1:45:3 | case ... | +| cfg.rb:48:20:48:29 | self | cfg.rb:48:3:48:29 | [match] when ... | +| cfg.rb:49:3:49:37 | [match] when ... | cfg.rb:49:8:49:8 | b | +| cfg.rb:49:3:49:37 | [no-match] when ... | cfg.rb:49:16:49:16 | b | +| cfg.rb:49:8:49:8 | b | cfg.rb:48:3:48:29 | [no-match] 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:49:27:49:37 | self | cfg.rb:49:3:49:37 | [match] 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 ... | @@ -5310,11 +5310,11 @@ controls | 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:3:48:29 | [match] when ... | true | +| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:48:3:48:29 | [no-match] 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:3:49:37 | [match] when ... | true | +| cfg.rb:1:1:221:1 | enter cfg.rb | cfg.rb:49:3:49:37 | [no-match] 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 | @@ -5370,11 +5370,11 @@ controls | 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:3:48:29 | [match] when ... | false | +| cfg.rb:32:9:32:9 | 1 | cfg.rb:48:3:48:29 | [no-match] 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:3:49:37 | [match] when ... | false | +| cfg.rb:32:9:32:9 | 1 | cfg.rb:49:3:49:37 | [no-match] 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 | @@ -5427,14 +5427,14 @@ controls | 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:41:1:45:3 | case ... | cfg.rb:48:3:48:29 | [match] when ... | match | +| cfg.rb:41:1:45:3 | case ... | cfg.rb:48:3:48:29 | [no-match] when ... | no-match | +| cfg.rb:41:1:45:3 | case ... | cfg.rb:48:20:48:29 | self | match | +| cfg.rb:41:1:45:3 | case ... | cfg.rb:49:3:49:37 | [match] when ... | no-match | +| cfg.rb:41:1:45:3 | case ... | cfg.rb:49:3:49:37 | [no-match] when ... | no-match | +| cfg.rb:41:1:45:3 | case ... | cfg.rb:49:8:49:8 | b | no-match | +| cfg.rb:41:1:45:3 | case ... | cfg.rb:49:16:49:16 | b | no-match | +| cfg.rb:41:1:45:3 | case ... | cfg.rb:49:27:49:37 | self | no-match | | 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 | @@ -5456,16 +5456,16 @@ controls | 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:48:3:48:29 | [match] when ... | cfg.rb:48:20:48:29 | self | match | +| cfg.rb:48:3:48:29 | [no-match] when ... | cfg.rb:49:3:49:37 | [match] when ... | no-match | +| cfg.rb:48:3:48:29 | [no-match] when ... | cfg.rb:49:3:49:37 | [no-match] when ... | no-match | +| cfg.rb:48:3:48:29 | [no-match] when ... | cfg.rb:49:8:49:8 | b | no-match | +| cfg.rb:48:3:48:29 | [no-match] when ... | cfg.rb:49:16:49:16 | b | no-match | +| cfg.rb:48:3:48:29 | [no-match] when ... | cfg.rb:49:27:49:37 | self | no-match | +| cfg.rb:49:3:49:37 | [match] when ... | cfg.rb:49:27:49:37 | self | match | +| cfg.rb:49:8:49:8 | b | cfg.rb:49:3:49:37 | [no-match] when ... | no-match | +| cfg.rb:49:8:49:8 | b | cfg.rb:49:16:49:16 | b | no-match | +| cfg.rb:49:16:49:16 | b | cfg.rb:49:3:49:37 | [no-match] when ... | no-match | | 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 | @@ -6010,8 +6010,8 @@ successor | 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:41:1:45:3 | case ... | cfg.rb:48:3:48:29 | [match] when ... | match | +| cfg.rb:41:1:45:3 | case ... | cfg.rb:48:3:48:29 | [no-match] when ... | no-match | | 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 | @@ -6024,14 +6024,14 @@ successor | 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:48:3:48:29 | [match] when ... | cfg.rb:48:20:48:29 | self | match | +| cfg.rb:48:3:48:29 | [no-match] when ... | cfg.rb:49:8:49:8 | b | no-match | +| cfg.rb:49:3:49:37 | [match] when ... | cfg.rb:49:27:49:37 | self | match | +| cfg.rb:49:3:49:37 | [no-match] when ... | cfg.rb:47:1:50:3 | case ... | no-match | +| cfg.rb:49:8:49:8 | b | cfg.rb:49:3:49:37 | [match] when ... | match | +| cfg.rb:49:8:49:8 | b | cfg.rb:49:16:49:16 | b | no-match | +| cfg.rb:49:16:49:16 | b | cfg.rb:49:3:49:37 | [match] when ... | match | +| cfg.rb:49:16:49:16 | b | cfg.rb:49:3:49:37 | [no-match] when ... | no-match | | 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 | @@ -6365,10 +6365,10 @@ joinBlockPredecessor | 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:3:49:37 | [no-match] 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:49:3:49:37 | [match] when ... | cfg.rb:49:8:49:8 | b | 0 | +| cfg.rb:49:3:49:37 | [match] 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 | diff --git a/ruby/ql/test/library-tests/controlflow/graph/Cfg.expected b/ruby/ql/test/library-tests/controlflow/graph/Cfg.expected index 583ca5d46a80..e7ce708b63bf 100644 --- a/ruby/ql/test/library-tests/controlflow/graph/Cfg.expected +++ b/ruby/ql/test/library-tests/controlflow/graph/Cfg.expected @@ -649,7 +649,7 @@ | cfg.rb:39:1:39:4 | self | cfg.rb:39:11:39:12 | 42 | | | cfg.rb:39:1:39:12 | call to puts | cfg.rb:41:6:41:7 | 10 | | | cfg.rb:39:11:39:12 | 42 | cfg.rb:39:1:39:12 | call to puts | | -| cfg.rb:41:1:45:3 | case ... | cfg.rb:48:8:48:8 | b | | +| cfg.rb:41:1:45:3 | case ... | cfg.rb:47:1:50:3 | true | | | cfg.rb:41:6:41:7 | 10 | cfg.rb:42:8:42:8 | 1 | | | 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 | @@ -679,26 +679,27 @@ | cfg.rb:44:13:44:18 | "many" | cfg.rb:44:8:44:18 | call to puts | | | cfg.rb:44:14:44:17 | many | cfg.rb:44:13:44:18 | "many" | | | cfg.rb:47:1:50:3 | case ... | cfg.rb:52:1:52:7 | chained | | -| 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:47:1:50:3 | true | cfg.rb:48:8:48:8 | b | | +| cfg.rb:48:3:48:29 | [match] when ... | cfg.rb:48:20:48:29 | self | match | +| cfg.rb:48:3:48:29 | [no-match] when ... | cfg.rb:49:8:49:8 | b | no-match | | cfg.rb:48:8:48:8 | b | cfg.rb:48:13:48:13 | 1 | | -| cfg.rb:48:8:48:13 | ... == ... | cfg.rb:48:3:48:29 | [false] when ... | false | -| cfg.rb:48:8:48:13 | ... == ... | cfg.rb:48:3:48:29 | [true] when ... | true | +| cfg.rb:48:8:48:13 | ... == ... | cfg.rb:48:3:48:29 | [match] when ... | match | +| cfg.rb:48:8:48:13 | ... == ... | cfg.rb:48:3:48:29 | [no-match] when ... | no-match | | cfg.rb:48:13:48:13 | 1 | cfg.rb:48:8:48:13 | ... == ... | | | cfg.rb:48:15:48:29 | then ... | cfg.rb:47:1:50:3 | case ... | | | cfg.rb:48:20:48:29 | call to puts | cfg.rb:48:15:48:29 | then ... | | | cfg.rb:48:20:48:29 | self | cfg.rb:48:26:48:28 | one | | | cfg.rb:48:25:48:29 | "one" | cfg.rb:48:20:48:29 | call to puts | | | cfg.rb:48:26:48:28 | one | cfg.rb:48:25:48:29 | "one" | | -| 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:3:49:37 | [match] when ... | cfg.rb:49:27:49:37 | self | match | +| cfg.rb:49:3:49:37 | [no-match] when ... | cfg.rb:47:1:50:3 | case ... | no-match | | cfg.rb:49:8:49:8 | b | cfg.rb:49:13:49:13 | 0 | | -| cfg.rb:49:8:49:13 | ... == ... | cfg.rb:49:3:49:37 | [true] when ... | true | -| cfg.rb:49:8:49:13 | ... == ... | cfg.rb:49:16:49:16 | b | false | +| cfg.rb:49:8:49:13 | ... == ... | cfg.rb:49:3:49:37 | [match] when ... | match | +| cfg.rb:49:8:49:13 | ... == ... | cfg.rb:49:16:49:16 | b | no-match | | cfg.rb:49:13:49:13 | 0 | cfg.rb:49:8:49:13 | ... == ... | | | cfg.rb:49:16:49:16 | b | cfg.rb:49:20:49:20 | 1 | | -| cfg.rb:49:16:49:20 | ... > ... | cfg.rb:49:3:49:37 | [false] when ... | false | -| cfg.rb:49:16:49:20 | ... > ... | cfg.rb:49:3:49:37 | [true] when ... | true | +| cfg.rb:49:16:49:20 | ... > ... | cfg.rb:49:3:49:37 | [match] when ... | match | +| cfg.rb:49:16:49:20 | ... > ... | cfg.rb:49:3:49:37 | [no-match] when ... | no-match | | cfg.rb:49:20:49:20 | 1 | cfg.rb:49:16:49:20 | ... > ... | | | cfg.rb:49:22:49:37 | then ... | cfg.rb:47:1:50:3 | case ... | | | cfg.rb:49:27:49:37 | call to puts | cfg.rb:49:22:49:37 | then ... | | diff --git a/ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-guards.expected b/ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-guards.expected index 0da6e95f6edf..1a70b535dc81 100644 --- a/ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-guards.expected +++ b/ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-guards.expected @@ -266,46 +266,46 @@ controls | barrier-guards.rb:227:4:227:21 | [true] ... and ... | barrier-guards.rb:228:5:228:7 | self | true | | barrier-guards.rb:227:21:227:21 | call to y | barrier-guards.rb:227:4:227:21 | [true] ... and ... | true | | barrier-guards.rb:227:21:227:21 | call to y | barrier-guards.rb:228:5:228:7 | self | true | -| barrier-guards.rb:232:1:233:19 | [true] when ... | barrier-guards.rb:233:5:233:7 | foo | true | -| barrier-guards.rb:232:6:232:17 | ... == ... | barrier-guards.rb:232:1:233:19 | [false] when ... | false | -| barrier-guards.rb:232:6:232:17 | ... == ... | barrier-guards.rb:232:1:233:19 | [true] when ... | true | -| barrier-guards.rb:232:6:232:17 | ... == ... | barrier-guards.rb:233:5:233:7 | foo | true | -| barrier-guards.rb:237:1:237:38 | [false] when ... | barrier-guards.rb:238:1:238:26 | [false] when ... | false | -| barrier-guards.rb:237:1:237:38 | [false] when ... | barrier-guards.rb:238:1:238:26 | [true] when ... | false | -| barrier-guards.rb:237:1:237:38 | [false] when ... | barrier-guards.rb:238:6:238:8 | self | false | -| barrier-guards.rb:237:1:237:38 | [false] when ... | barrier-guards.rb:238:24:238:26 | foo | false | -| barrier-guards.rb:237:1:237:38 | [false] when ... | barrier-guards.rb:239:1:239:22 | [false] when ... | false | -| barrier-guards.rb:237:1:237:38 | [false] when ... | barrier-guards.rb:239:1:239:22 | [true] when ... | false | -| barrier-guards.rb:237:1:237:38 | [false] when ... | barrier-guards.rb:239:6:239:8 | foo | false | -| barrier-guards.rb:237:1:237:38 | [false] when ... | barrier-guards.rb:239:20:239:22 | foo | false | -| barrier-guards.rb:237:1:237:38 | [true] when ... | barrier-guards.rb:237:24:237:26 | foo | true | -| barrier-guards.rb:237:6:237:17 | ... == ... | barrier-guards.rb:237:1:237:38 | [false] when ... | false | -| barrier-guards.rb:237:6:237:17 | ... == ... | barrier-guards.rb:237:1:237:38 | [true] when ... | true | -| barrier-guards.rb:237:6:237:17 | ... == ... | barrier-guards.rb:237:24:237:26 | foo | true | -| barrier-guards.rb:237:6:237:17 | ... == ... | barrier-guards.rb:238:1:238:26 | [false] when ... | false | -| barrier-guards.rb:237:6:237:17 | ... == ... | barrier-guards.rb:238:1:238:26 | [true] when ... | false | -| barrier-guards.rb:237:6:237:17 | ... == ... | barrier-guards.rb:238:6:238:8 | self | false | -| barrier-guards.rb:237:6:237:17 | ... == ... | barrier-guards.rb:238:24:238:26 | foo | false | -| barrier-guards.rb:237:6:237:17 | ... == ... | barrier-guards.rb:239:1:239:22 | [false] when ... | false | -| barrier-guards.rb:237:6:237:17 | ... == ... | barrier-guards.rb:239:1:239:22 | [true] when ... | false | -| barrier-guards.rb:237:6:237:17 | ... == ... | barrier-guards.rb:239:6:239:8 | foo | false | -| barrier-guards.rb:237:6:237:17 | ... == ... | barrier-guards.rb:239:20:239:22 | foo | false | -| barrier-guards.rb:238:1:238:26 | [false] when ... | barrier-guards.rb:239:1:239:22 | [false] when ... | false | -| barrier-guards.rb:238:1:238:26 | [false] when ... | barrier-guards.rb:239:1:239:22 | [true] when ... | false | -| barrier-guards.rb:238:1:238:26 | [false] when ... | barrier-guards.rb:239:6:239:8 | foo | false | -| barrier-guards.rb:238:1:238:26 | [false] when ... | barrier-guards.rb:239:20:239:22 | foo | false | -| barrier-guards.rb:238:1:238:26 | [true] when ... | barrier-guards.rb:238:24:238:26 | foo | true | -| barrier-guards.rb:238:6:238:17 | ... == ... | barrier-guards.rb:238:1:238:26 | [false] when ... | false | -| barrier-guards.rb:238:6:238:17 | ... == ... | barrier-guards.rb:238:1:238:26 | [true] when ... | true | -| barrier-guards.rb:238:6:238:17 | ... == ... | barrier-guards.rb:238:24:238:26 | foo | true | -| barrier-guards.rb:238:6:238:17 | ... == ... | barrier-guards.rb:239:1:239:22 | [false] when ... | false | -| barrier-guards.rb:238:6:238:17 | ... == ... | barrier-guards.rb:239:1:239:22 | [true] when ... | false | -| barrier-guards.rb:238:6:238:17 | ... == ... | barrier-guards.rb:239:6:239:8 | foo | false | -| barrier-guards.rb:238:6:238:17 | ... == ... | barrier-guards.rb:239:20:239:22 | foo | false | -| barrier-guards.rb:239:1:239:22 | [true] when ... | barrier-guards.rb:239:20:239:22 | foo | true | -| barrier-guards.rb:239:6:239:13 | ... == ... | barrier-guards.rb:239:1:239:22 | [false] when ... | false | -| barrier-guards.rb:239:6:239:13 | ... == ... | barrier-guards.rb:239:1:239:22 | [true] when ... | true | -| barrier-guards.rb:239:6:239:13 | ... == ... | barrier-guards.rb:239:20:239:22 | foo | true | +| barrier-guards.rb:232:1:233:19 | [match] when ... | barrier-guards.rb:233:5:233:7 | foo | match | +| barrier-guards.rb:232:6:232:17 | ... == ... | barrier-guards.rb:232:1:233:19 | [match] when ... | match | +| barrier-guards.rb:232:6:232:17 | ... == ... | barrier-guards.rb:232:1:233:19 | [no-match] when ... | no-match | +| barrier-guards.rb:232:6:232:17 | ... == ... | barrier-guards.rb:233:5:233:7 | foo | match | +| barrier-guards.rb:237:1:237:38 | [match] when ... | barrier-guards.rb:237:24:237:26 | foo | match | +| barrier-guards.rb:237:1:237:38 | [no-match] when ... | barrier-guards.rb:238:1:238:26 | [match] when ... | no-match | +| barrier-guards.rb:237:1:237:38 | [no-match] when ... | barrier-guards.rb:238:1:238:26 | [no-match] when ... | no-match | +| barrier-guards.rb:237:1:237:38 | [no-match] when ... | barrier-guards.rb:238:6:238:8 | self | no-match | +| barrier-guards.rb:237:1:237:38 | [no-match] when ... | barrier-guards.rb:238:24:238:26 | foo | no-match | +| barrier-guards.rb:237:1:237:38 | [no-match] when ... | barrier-guards.rb:239:1:239:22 | [match] when ... | no-match | +| barrier-guards.rb:237:1:237:38 | [no-match] when ... | barrier-guards.rb:239:1:239:22 | [no-match] when ... | no-match | +| barrier-guards.rb:237:1:237:38 | [no-match] when ... | barrier-guards.rb:239:6:239:8 | foo | no-match | +| barrier-guards.rb:237:1:237:38 | [no-match] when ... | barrier-guards.rb:239:20:239:22 | foo | no-match | +| barrier-guards.rb:237:6:237:17 | ... == ... | barrier-guards.rb:237:1:237:38 | [match] when ... | match | +| barrier-guards.rb:237:6:237:17 | ... == ... | barrier-guards.rb:237:1:237:38 | [no-match] when ... | no-match | +| barrier-guards.rb:237:6:237:17 | ... == ... | barrier-guards.rb:237:24:237:26 | foo | match | +| barrier-guards.rb:237:6:237:17 | ... == ... | barrier-guards.rb:238:1:238:26 | [match] when ... | no-match | +| barrier-guards.rb:237:6:237:17 | ... == ... | barrier-guards.rb:238:1:238:26 | [no-match] when ... | no-match | +| barrier-guards.rb:237:6:237:17 | ... == ... | barrier-guards.rb:238:6:238:8 | self | no-match | +| barrier-guards.rb:237:6:237:17 | ... == ... | barrier-guards.rb:238:24:238:26 | foo | no-match | +| barrier-guards.rb:237:6:237:17 | ... == ... | barrier-guards.rb:239:1:239:22 | [match] when ... | no-match | +| barrier-guards.rb:237:6:237:17 | ... == ... | barrier-guards.rb:239:1:239:22 | [no-match] when ... | no-match | +| barrier-guards.rb:237:6:237:17 | ... == ... | barrier-guards.rb:239:6:239:8 | foo | no-match | +| barrier-guards.rb:237:6:237:17 | ... == ... | barrier-guards.rb:239:20:239:22 | foo | no-match | +| barrier-guards.rb:238:1:238:26 | [match] when ... | barrier-guards.rb:238:24:238:26 | foo | match | +| barrier-guards.rb:238:1:238:26 | [no-match] when ... | barrier-guards.rb:239:1:239:22 | [match] when ... | no-match | +| barrier-guards.rb:238:1:238:26 | [no-match] when ... | barrier-guards.rb:239:1:239:22 | [no-match] when ... | no-match | +| barrier-guards.rb:238:1:238:26 | [no-match] when ... | barrier-guards.rb:239:6:239:8 | foo | no-match | +| barrier-guards.rb:238:1:238:26 | [no-match] when ... | barrier-guards.rb:239:20:239:22 | foo | no-match | +| barrier-guards.rb:238:6:238:17 | ... == ... | barrier-guards.rb:238:1:238:26 | [match] when ... | match | +| barrier-guards.rb:238:6:238:17 | ... == ... | barrier-guards.rb:238:1:238:26 | [no-match] when ... | no-match | +| barrier-guards.rb:238:6:238:17 | ... == ... | barrier-guards.rb:238:24:238:26 | foo | match | +| barrier-guards.rb:238:6:238:17 | ... == ... | barrier-guards.rb:239:1:239:22 | [match] when ... | no-match | +| barrier-guards.rb:238:6:238:17 | ... == ... | barrier-guards.rb:239:1:239:22 | [no-match] when ... | no-match | +| barrier-guards.rb:238:6:238:17 | ... == ... | barrier-guards.rb:239:6:239:8 | foo | no-match | +| barrier-guards.rb:238:6:238:17 | ... == ... | barrier-guards.rb:239:20:239:22 | foo | no-match | +| barrier-guards.rb:239:1:239:22 | [match] when ... | barrier-guards.rb:239:20:239:22 | foo | match | +| barrier-guards.rb:239:6:239:13 | ... == ... | barrier-guards.rb:239:1:239:22 | [match] when ... | match | +| barrier-guards.rb:239:6:239:13 | ... == ... | barrier-guards.rb:239:1:239:22 | [no-match] when ... | no-match | +| barrier-guards.rb:239:6:239:13 | ... == ... | barrier-guards.rb:239:20:239:22 | foo | match | | barrier-guards.rb:243:4:243:8 | "foo" | barrier-guards.rb:244:5:244:7 | foo | match | | barrier-guards.rb:243:4:243:8 | "foo" | barrier-guards.rb:245:1:246:7 | in ... then ... | no-match | | barrier-guards.rb:243:4:243:8 | "foo" | barrier-guards.rb:246:5:246:7 | foo | no-match | From 5047bee43229c61cbcee4d39782ba80884991edd Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Wed, 24 Jun 2026 13:36:54 +0200 Subject: [PATCH 2/2] Ruby: Adjust qldoc. --- ruby/ql/lib/codeql/ruby/ast/Control.qll | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ruby/ql/lib/codeql/ruby/ast/Control.qll b/ruby/ql/lib/codeql/ruby/ast/Control.qll index ea54d3554691..d27e0aaf91d1 100644 --- a/ruby/ql/lib/codeql/ruby/ast/Control.qll +++ b/ruby/ql/lib/codeql/ruby/ast/Control.qll @@ -355,7 +355,7 @@ class TernaryIfExpr extends ConditionalExpr, TTernaryIfExpr { */ class CaseExpr extends ControlExpr instanceof CaseExprImpl { /** - * Gets the expression being compared, if any. For example, `foo` in the following example. + * Gets the expression being compared. For example, `foo` in the following example. * ```rb * case foo * when 0 @@ -364,7 +364,7 @@ class CaseExpr extends ControlExpr instanceof CaseExprImpl { * puts 'one' * end * ``` - * There is no result for the following example: + * In the following example, the result is an implicit synthesized `true` literal. * ```rb * case * when a then 0