Zephir\ClassMethod::hasChildReturnStatementType PHP Method

hasChildReturnStatementType() public method

Simple method to check if one of the paths are returning the right expected type
public hasChildReturnStatementType ( array $statement ) : boolean
$statement array
return boolean
    public function hasChildReturnStatementType($statement)
    {
        if (!isset($statement['statements']) || !is_array($statement['statements'])) {
            return false;
        }
        if ($statement['type'] == 'if') {
            $ret = false;
            $statements = $statement['statements'];
            foreach ($statements as $item) {
                $type = isset($item['type']) ? $item['type'] : null;
                if ($type == 'return' || $type == 'throw') {
                    $ret = true;
                } else {
                    $ret = $this->hasChildReturnStatementType($item);
                }
            }
            if (!$ret || !isset($statement['else_statements'])) {
                return false;
            }
            $statements = $statement['else_statements'];
            foreach ($statements as $item) {
                $type = isset($item['type']) ? $item['type'] : null;
                if ($type == 'return' || $type == 'throw') {
                    return true;
                } else {
                    return $this->hasChildReturnStatementType($item);
                }
            }
        } else {
            $statements = $statement['statements'];
            foreach ($statements as $item) {
                $type = isset($item['type']) ? $item['type'] : null;
                if ($type == 'return' || $type == 'throw') {
                    return true;
                } else {
                    return $this->hasChildReturnStatementType($item);
                }
            }
        }
        return false;
    }