public function enterNode(Node $node)
    {
        if (!$node instanceof Assign) {
            return;
        }

        if (!$node->var instanceof Array_ && !$node->var instanceof List_) {
            return;
        }

        if (!$this->atLeastPhp71 && $node->var instanceof Array_) {
            $msg = "syntax error, unexpected '='";
            throw new ParseErrorException($msg, $node->expr->getLine());
        }

        // Polyfill for PHP-Parser 2.x
        $items = isset($node->var->items) ? $node->var->items : $node->var->vars;

        if ($items === [] || $items === [null]) {
            throw new ParseErrorException('Cannot use empty list', $node->var->getLine());
        }

        $itemFound = false;
        foreach ($items as $item) {
            if ($item === null) {
                continue;
            }

            $itemFound = true;

            // List_->$vars in PHP-Parser 2.x is Variable instead of ArrayItem.
            if (!$this->atLeastPhp71 && $item instanceof ArrayItem && $item->key !== null) {
                $msg = 'Syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting \',\' or \')\'';
                throw new ParseErrorException($msg, $item->key->getLine());
            }

            if (!self::isValidArrayItem($item)) {
                $msg = 'Assignments can only happen to writable values';
                throw new ParseErrorException($msg, $item->getLine());
            }
        }

        if (!$itemFound) {
            throw new ParseErrorException('Cannot use empty list');
        }
    }
public function enterNode(Node $node)
    {
        if (!$node instanceof Assign) {
            return;
        }

        if (!$node->var instanceof Array_ && !$node->var instanceof List_) {
            return;
        }

        if (!$this->atLeastPhp71 && $node->var instanceof Array_) {
            $msg = "syntax error, unexpected '='";
            throw new ParseErrorException($msg, $node->expr->getLine());
        }

        // Polyfill for PHP-Parser 2.x
        $items = isset($node->var->items) ? $node->var->items : $node->var->vars;

        if ($items === [] || $items === [null]) {
            throw new ParseErrorException('Cannot use empty list', $node->var->getLine());
        }

        $itemFound = false;
        foreach ($items as $item) {
            if ($item === null) {
                continue;
            }

            $itemFound = true;

            // List_->$vars in PHP-Parser 2.x is Variable instead of ArrayItem.
            if (!$this->atLeastPhp71 && $item instanceof ArrayItem && $item->key !== null) {
                $msg = 'Syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting \',\' or \')\'';
                throw new ParseErrorException($msg, $item->key->getLine());
            }

            if (!self::isValidArrayItem($item)) {
                $msg = 'Assignments can only happen to writable values';
                throw new ParseErrorException($msg, $item->getLine());
            }
        }

        if (!$itemFound) {
            throw new ParseErrorException('Cannot use empty list');
        }
    }
public function enterNode ( Node $ node ) { if ( ! $ node instanceof Assign ) { return ; } if ( ! $ node -> var instanceof Array_ && ! $ node -> var instanceof List_ ) { return ; } if ( ! $ this -> atLeastPhp71 && $ node -> var instanceof Array_ ) { $ msg = "syntax error, unexpected '='" ; throw new ParseErrorException ( $ msg , $ node -> expr -> getLine ( ) ) ; } // Polyfill for PHP-Parser 2.x $ items = isset ( $ node -> var -> items ) ? $ node -> var -> items : $ node -> var -> vars ; if ( $ items === [ ] || $ items === [ null ] ) { throw new ParseErrorException ( 'Cannot use empty list' , $ node -> var -> getLine ( ) ) ; } $ itemFound = false ; foreach ( $ items as $ item ) { if ( $ item === null ) { continue ; } $ itemFound = true ; // List_->$vars in PHP-Parser 2.x is Variable instead of ArrayItem. if ( ! $ this -> atLeastPhp71 && $ item instanceof ArrayItem && $ item -> key !== null ) { $ msg = 'Syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting \',\' or \')\'' ; throw new ParseErrorException ( $ msg , $ item -> key -> getLine ( ) ) ; } if ( ! self :: isValidArrayItem ( $ item ) ) { $ msg = 'Assignments can only happen to writable values' ; throw new ParseErrorException ( $ msg , $ item -> getLine ( ) ) ; } } if ( ! $ itemFound ) { throw new ParseErrorException ( 'Cannot use empty list' ) ; } }
Validate use of list assignment.

@throws ParseErrorException if the user used empty with anything but a variable

@param Node $node
Validate use of list assignment .