Ruby: Use asCallable() to generate epsilon edges

This commit is contained in:
Asger F
2023-06-29 11:13:03 +02:00
parent 452fbe7e8f
commit 194fe85442
2 changed files with 6 additions and 2 deletions

View File

@@ -978,6 +978,12 @@ module API {
pred = Impl::MkModuleInstanceUp(mod) and
succ = getBackwardEndNode(mod.getOwnInstanceMethod("call"))
)
or
// Step through callable wrappers like `proc` and `lambda` calls.
exists(DataFlow::Node node |
pred = getBackwardEndNode(node) and
succ = getBackwardStartNode(node.asCallable())
)
}
pragma[nomagic]

View File

@@ -1,5 +1,3 @@
failures
testFailures
| explicit-proc.rb:2:7:2:78 | # $ reachableFromSource=Member[Foo].Method[bar].Argument[0].Parameter[0] | Missing result:reachableFromSource=Member[Foo].Method[bar].Argument[0].Parameter[0] |
| explicit-proc.rb:6:7:6:78 | # $ reachableFromSource=Member[Foo].Method[bar].Argument[0].Parameter[0] | Missing result:reachableFromSource=Member[Foo].Method[bar].Argument[0].Parameter[0] |
| explicit-proc.rb:10:7:10:78 | # $ reachableFromSource=Member[Foo].Method[bar].Argument[0].Parameter[0] | Missing result:reachableFromSource=Member[Foo].Method[bar].Argument[0].Parameter[0] |