<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
<?php

/* testExitAsConstant */
exit;

/* testDieAsConstant */
die;

/* testExitAsConstantMixedCase */
Exit;

/* testDieAsConstantUppercase */
DIE;

/* testExitAsFunctionCallNoParam */
exit();

/* testDieAsFunctionCallNoParam */
die();

/* testExitAsFunctionCallWithParam */
exit($exitcode);

/* testDieAsFunctionCallWithParam */
die($status);

/* testExitAsFunctionCallUppercase */
EXIT($exitcode);

/* testDieAsFunctionCallMixedCase */
dIE($status);

/* testExitAsFQFunctionCallWithParam */
\exit($exitcode);

/* testDieAsFQFunctionCallNoParam */
\die($status);


/* testNotExitOOConstantAccess */
$obj::exit;

/* testNotDieOOConstantAccess */
$obj::die;

/* testNotExitOOPropertyAccess */
$obj->exit;

/* testNotDieOOPropertyAccess */
$obj->DIE;

/* testNotExitOOMethodCall */
$obj->exit();

/* testNotDieOOMethodCall */
$obj->die();

class NotReserved {
    /* testNotExitOOConstDeclaration */
    const exit = 10;

    /* testNotDieOOConstDeclaration */
    const die = 'status';

    /* testNotExitOOMethodDeclaration */
    function Exit() {}

    /* testNotDieOOMethodDeclaration */
    function die() {}
}

/* testNotExitParamName */
callMe(exit: 10);

/* testNotDieParamName */
callMe(die: 'status');

/* testNotExitNamespacedName */
use My\exit\NameA;

/* testNotDieNamespacedName */
use My\die\NameB;

/* testExitAsFQConstant */
// Intentional parse error. This is not allowed in PHP, but that's not the concern of the tokenizer. Should still be handled correctly.
\exit;

/* testDieAsFQConstant */
// Intentional parse error. This is not allowed in PHP, but that's not the concern of the tokenizer. Should still be handled correctly.
\die;

/* testNotExitConstantDeclaration */
// Intentional parse error. This is not allowed in PHP, but that's not the concern of the tokenizer. Should still be handled correctly.
const exit = 10;

/* testNotDieConstantDeclaration */
// Intentional parse error. This is not allowed in PHP, but that's not the concern of the tokenizer. Should still be handled correctly.
const die = 'status';

/* testNotExitFunctionDeclaration */
// Intentional parse error. This is not allowed in PHP, but that's not the concern of the tokenizer. Should still be handled correctly.
function exit() {}

/* testNotDieFunctionDeclaration */
// Intentional parse error. This is not allowed in PHP, but that's not the concern of the tokenizer. Should still be handled correctly.
function die() {}
