Skip to content

Commit 122034f

Browse files
committed
Ruby: Switch test to use dedicated test module.
1 parent f0993fc commit 122034f

File tree

3 files changed

+24
-20
lines changed

3 files changed

+24
-20
lines changed

ruby/ql/lib/codeql/ruby/dataflow/internal/SsaImpl.qll

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -75,12 +75,6 @@ class PhiNode = Impl::PhiNode;
7575

7676
module Consistency = Impl::Consistency;
7777

78-
module ExposedForTestingOnly {
79-
predicate ssaDefReachesReadExt = Impl::ssaDefReachesReadExt/4;
80-
81-
predicate phiHasInputFromBlockExt = Impl::phiHasInputFromBlockExt/3;
82-
}
83-
8478
/** Holds if `v` is uninitialized at index `i` in entry block `bb`. */
8579
predicate uninitializedWrite(Cfg::EntryBasicBlock bb, int i, LocalVariable v) {
8680
v.getDeclaringScope() = bb.getScope() and
@@ -387,7 +381,9 @@ private module Cached {
387381
import DataFlowIntegrationImpl
388382

389383
cached
390-
predicate localFlowStep(SsaInput::SourceVariable v, Node nodeFrom, Node nodeTo, boolean isUseStep) {
384+
predicate localFlowStep(
385+
SsaInput::SourceVariable v, Node nodeFrom, Node nodeTo, boolean isUseStep
386+
) {
391387
DataFlowIntegrationImpl::localFlowStep(v, nodeFrom, nodeTo, isUseStep)
392388
}
393389

ruby/ql/test/library-tests/variables/ssa.expected

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -597,7 +597,7 @@ phiReadNode
597597
| ssa.rb:92:3:96:5 | SSA phi read(x) | ssa.rb:91:3:91:3 | x |
598598
| ssa.rb:94:3:95:10 | SSA phi read(self) | ssa.rb:90:1:103:3 | self |
599599
| ssa.rb:94:3:95:10 | SSA phi read(x) | ssa.rb:91:3:91:3 | x |
600-
phiReadNodeRead
600+
phiReadNodeFirstRead
601601
| parameters.rb:26:3:26:11 | SSA phi read(name) | parameters.rb:25:15:25:18 | name | parameters.rb:26:8:26:11 | name |
602602
| ssa.rb:5:3:13:5 | SSA phi read(self) | ssa.rb:1:1:16:3 | self | ssa.rb:15:3:15:8 | self |
603603
| ssa.rb:19:9:19:9 | SSA phi read(self) | ssa.rb:18:1:23:3 | self | ssa.rb:20:5:20:10 | self |
@@ -607,12 +607,16 @@ phiReadNodeRead
607607
| ssa.rb:92:3:96:5 | SSA phi read(x) | ssa.rb:91:3:91:3 | x | ssa.rb:101:10:101:10 | x |
608608
phiReadInput
609609
| parameters.rb:26:3:26:11 | SSA phi read(name) | parameters.rb:25:15:25:18 | name |
610-
| ssa.rb:5:3:13:5 | SSA phi read(self) | ssa.rb:1:1:16:3 | self (m) |
610+
| parameters.rb:26:3:26:11 | SSA phi read(name) | parameters.rb:25:40:25:43 | SSA read(name) |
611+
| ssa.rb:5:3:13:5 | SSA phi read(self) | ssa.rb:8:5:8:14 | SSA read(self) |
612+
| ssa.rb:5:3:13:5 | SSA phi read(self) | ssa.rb:12:5:12:14 | SSA read(self) |
611613
| ssa.rb:19:9:19:9 | SSA phi read(self) | ssa.rb:18:1:23:3 | self (m1) |
612-
| ssa.rb:19:9:19:9 | SSA phi read(self) | ssa.rb:19:9:19:9 | SSA phi read(self) |
613-
| ssa.rb:92:3:96:5 | SSA phi read(self) | ssa.rb:90:1:103:3 | self (m12) |
614+
| ssa.rb:19:9:19:9 | SSA phi read(self) | ssa.rb:20:5:20:10 | SSA read(self) |
615+
| ssa.rb:92:3:96:5 | SSA phi read(self) | ssa.rb:93:5:93:10 | SSA read(self) |
614616
| ssa.rb:92:3:96:5 | SSA phi read(self) | ssa.rb:94:3:95:10 | SSA phi read(self) |
615-
| ssa.rb:92:3:96:5 | SSA phi read(x) | ssa.rb:91:3:91:3 | x |
617+
| ssa.rb:92:3:96:5 | SSA phi read(x) | ssa.rb:93:10:93:10 | SSA read(x) |
616618
| ssa.rb:92:3:96:5 | SSA phi read(x) | ssa.rb:94:3:95:10 | SSA phi read(x) |
617619
| ssa.rb:94:3:95:10 | SSA phi read(self) | ssa.rb:90:1:103:3 | self (m12) |
620+
| ssa.rb:94:3:95:10 | SSA phi read(self) | ssa.rb:95:5:95:10 | SSA read(self) |
618621
| ssa.rb:94:3:95:10 | SSA phi read(x) | ssa.rb:91:3:91:3 | x |
622+
| ssa.rb:94:3:95:10 | SSA phi read(x) | ssa.rb:95:10:95:10 | SSA read(x) |

ruby/ql/test/library-tests/variables/ssa.ql

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import codeql.ruby.AST
22
import codeql.ruby.CFG
33
import codeql.ruby.dataflow.SSA
44
import codeql.ruby.dataflow.internal.SsaImpl
5-
import ExposedForTestingOnly
5+
import Impl::TestAdjacentRefs as RefTest
66

77
query predicate definition(Ssa::Definition def, Variable v) { def.getSourceVariable() = v }
88

@@ -23,16 +23,20 @@ query predicate phi(Ssa::PhiNode phi, Variable v, Ssa::Definition input) {
2323
phi.getSourceVariable() = v and input = phi.getAnInput()
2424
}
2525

26-
query predicate phiReadNode(PhiReadNode phi, Variable v) { phi.getSourceVariable() = v }
26+
query predicate phiReadNode(RefTest::Ref phi, Variable v) {
27+
phi.isPhiRead() and phi.getSourceVariable() = v
28+
}
2729

28-
query predicate phiReadNodeRead(PhiReadNode phi, Variable v, CfgNode read) {
29-
phi.getSourceVariable() = v and
30-
exists(BasicBlock bb, int i |
31-
ssaDefReachesReadExt(v, phi, bb, i) and
30+
query predicate phiReadNodeFirstRead(RefTest::Ref phi, Variable v, CfgNode read) {
31+
exists(RefTest::Ref r, BasicBlock bb, int i |
32+
phi.isPhiRead() and
33+
RefTest::adjacentRefRead(phi, r) and
34+
r.accessAt(bb, i, v) and
3235
read = bb.getNode(i)
3336
)
3437
}
3538

36-
query predicate phiReadInput(PhiReadNode phi, DefinitionExt inp) {
37-
phiHasInputFromBlockExt(phi, inp, _)
39+
query predicate phiReadInput(RefTest::Ref phi, RefTest::Ref inp) {
40+
phi.isPhiRead() and
41+
RefTest::adjacentRefPhi(inp, phi)
3842
}

0 commit comments

Comments
 (0)