protected final function visitOffsetUnset(O\Expression $expression)
{
$operationId = $this->getId('offset-unset');
$indexId = $this->getId('unset-index');
if ($expression instanceof O\MethodCallExpression) {
$this->interpretation->interpretOffsetUnset($operationId, $indexId, $this->getArgumentValueAt(0, $expression));
$this->interpretSourceAsScope($expression);
return;
} elseif ($expression instanceof O\UnsetExpression) {
$unsetArguments = $expression->getValues();
if (count($unsetArguments) === 1 && $unsetArguments[0] instanceof O\IndexExpression) {
$this->interpretation->interpretOffsetUnset($operationId, $indexId, $this->getValue($unsetArguments[0]->getIndex()));
$this->interpretSourceAsScope($unsetArguments[0]);
return;
}
}
throw new PinqException('Cannot interpret offset unset operation: invalid expression type, expecting %s, %s given', O\MethodCallExpression::getType() . ' or ' . O\IssetExpression::getType() . ' with a single parameter index', $expression->getType());
}