CodeQL library for Ruby
codeql/ruby-all 3.0.1-dev (changelog, source)
Search

Predicate signature ConditionalCompletionSplittingInputSig::condPropagateExpr

Holds if child is a sub expression of parent, and whenever a last node of child (normally child itself) has parent as a successor with label childCompletion, then edges out of parent must have label parentCompletion.

For example, for an expression !x, when child = x has conditional completion c then parent = !x must have the dual completion of c.

Similarly, for an expression x && y, when child = {x, y} has conditional completion c, then parent = x && y must have the same completion of c.

signature predicate condPropagateExpr(AstNode parent, ConditionalCompletion parentCompletion, AstNode child, ConditionalCompletion childCompletion)