PHPCfg\Operand::addAssertion PHP Method

addAssertion() public method

public addAssertion ( Operand $op, Assertion $assert, $mode = Assertion::MODE_INTERSECTION )
$op Operand
$assert Assertion
    public function addAssertion(Operand $op, Assertion $assert, $mode = Assertion::MODE_INTERSECTION)
    {
        $isTemorary = $op instanceof Operand\Temporary;
        $isNamed = $isTemorary && $op->original instanceof Operand\Variable && $op->original->name instanceof Operand\Literal;
        foreach ($this->assertions as $key => $orig) {
            if ($orig['var'] === $op) {
                // Merge them
                $this->assertions[$key]['assertion'] = new Assertion([$orig['assertion'], $assert], $mode);
                return;
            }
            if (!$isNamed) {
                continue;
            }
            if (!$orig['var'] instanceof Operand\Temporary || !$orig['var']->original instanceof Operand\Variable || !$orig['var']->original->name instanceof Operand\Literal) {
                continue;
            }
            if ($orig['var']->original->name->value === $op->original->name->value) {
                // merge
                $this->assertions[$key]['assertion'] = new Assertion([$orig['assertion'], $assert], $mode);
                return;
            }
        }
        $this->assertions[] = ["var" => $op, "assertion" => $assert];
    }