404

[ Avaa Bypassed ]




Upload:

Command:

elspacio@3.142.114.145: ~ $
<?php

/*
 * This file is part of Psy Shell.
 *
 * (c) 2012-2023 Justin Hileman
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Psy\CodeCleaner;

use PhpParser\Node;
use PhpParser\Node\Expr\Yield_;
use PhpParser\Node\FunctionLike;
use Psy\Exception\FatalErrorException;

class FunctionContextPass extends CodeCleanerPass
{
    /** @var int */
    private $functionDepth;

    /**
     * @param array $nodes
     *
     * @return Node[]|null Array of nodes
     */
    public function beforeTraverse(array $nodes)
    {
        $this->functionDepth = 0;
    }

    /**
     * @return int|Node|null Replacement node (or special return value)
     */
    public function enterNode(Node $node)
    {
        if ($node instanceof FunctionLike) {
            $this->functionDepth++;

            return;
        }

        // node is inside function context
        if ($this->functionDepth !== 0) {
            return;
        }

        // It causes fatal error.
        if ($node instanceof Yield_) {
            $msg = 'The "yield" expression can only be used inside a function';
            throw new FatalErrorException($msg, 0, \E_ERROR, null, $node->getLine());
        }
    }

    /**
     * @param \PhpParser\Node $node
     *
     * @return int|Node|Node[]|null Replacement node (or special return value)
     */
    public function leaveNode(Node $node)
    {
        if ($node instanceof FunctionLike) {
            $this->functionDepth--;
        }
    }
}

Filemanager

Name Type Size Permission Actions
AbstractClassPass.php File 2.31 KB 0644
AssignThisVariablePass.php File 1.09 KB 0644
CallTimePassByReferencePass.php File 1.57 KB 0644
CalledClassPass.php File 2.67 KB 0644
CodeCleanerPass.php File 415 B 0644
EmptyArrayDimFetchPass.php File 1.73 KB 0644
ExitPass.php File 859 B 0644
FinalClassPass.php File 1.74 KB 0644
FunctionContextPass.php File 1.53 KB 0644
FunctionReturnInWriteContextPass.php File 2.67 KB 0644
ImplicitReturnPass.php File 4.13 KB 0644
InstanceOfPass.php File 1.91 KB 0644
IssetPass.php File 1.37 KB 0644
LabelContextPass.php File 2.58 KB 0644
LeavePsyshAlonePass.php File 992 B 0644
ListPass.php File 3.26 KB 0644
LoopContextPass.php File 3.61 KB 0644
MagicConstantsPass.php File 1.04 KB 0644
NamespaceAwarePass.php File 1.91 KB 0644
NamespacePass.php File 2.43 KB 0644
NoReturnValue.php File 828 B 0644
PassableByReferencePass.php File 4.1 KB 0644
RequirePass.php File 4.56 KB 0644
ReturnTypePass.php File 3.72 KB 0644
StrictTypesPass.php File 2.48 KB 0644
UseStatementPass.php File 4.41 KB 0644
ValidClassNamePass.php File 9.85 KB 0644
ValidConstructorPass.php File 3.93 KB 0644
ValidFunctionNamePass.php File 2.36 KB 0644