CodeQL library for Swift
codeql/swift-all 2.0.4-dev (changelog, source)
Search

Predicate NoConditionalCompletionSplittingInput::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.

Import path

import codeql.controlflow.Cfg
predicate condPropagateExpr(AstNode parent, ConditionalCompletion parentCompletion, AstNode child, ConditionalCompletion childCompletion)