--TEST--
Test semi-reserved words as class constants
--FILE--
<?php

class Obj
{
    const EMPTY = 'empty';
    const CALLABLE = 'callable';
    const TRAIT = 'trait';
    const EXTENDS = 'extends';
    const IMPLEMENTS = 'implements';
    const STATIC = 'static';
    const ABSTRACT = 'abstract';
    const FINAL = 'final';
    const PUBLIC = 'public';
    const PROTECTED = 'protected';
    const PRIVATE = 'private';
    const CONST = 'const';
    const ENDDECLARE = 'enddeclare';
    const ENDFOR = 'endfor';
    const ENDFOREACH = 'endforeach';
    const ENDIF = 'endif';
    const ENDWHILE = 'endwhile';
    const AND = 'and';
    const GLOBAL = 'global';
    const GOTO = 'goto';
    const INSTANCEOF = 'instanceof';
    const INSTEADOF = 'insteadof';
    const INTERFACE = 'interface';
    const NAMESPACE = 'namespace';
    const NEW = 'new';
    const OR = 'or';
    const XOR = 'xor';
    const TRY = 'try';
    const USE = 'use';
    const VAR = 'var';
    const EXIT = 'exit';
    const LIST = 'list';
    const CLONE = 'clone';
    const INCLUDE = 'include';
    const INCLUDE_ONCE = 'include_once';
    const THROW = 'throw';
    const ARRAY = 'array';
    const PRINT = 'print';
    const ECHO = 'echo';
    const REQUIRE = 'require';
    const REQUIRE_ONCE = 'require_once';
    const RETURN = 'return';
    const ELSE = 'else';
    const ELSEIF = 'elseif';
    const DEFAULT = 'default';
    const BREAK = 'break';
    const CONTINUE = 'continue';
    const SWITCH = 'switch';
    const YIELD = 'yield';
    const FUNCTION = 'function';
    const FN = 'fn';
    const IF = 'if';
    const ENDSWITCH = 'endswitch';
    const FINALLY = 'finally';
    const FOR = 'for';
    const FOREACH = 'foreach';
    const DECLARE = 'declare';
    const CASE = 'case';
    const DO = 'do';
    const WHILE = 'while';
    const AS = 'as';
    const CATCH = 'catch';
    const DIE = 'die';
    const SELF = 'self';
    const PARENT = 'parent';
    const ISSET = 'isset';
    const UNSET = 'unset';
    const __CLASS__ = '__CLASS__';
    const __TRAIT__ = '__TRAIT__';
    const __FUNCTION__ = '__FUNCTION__';
    const __METHOD__ = '__METHOD__';
    const __LINE__ = '__LINE__';
    const __FILE__ = '__FILE__';
    const __DIR__ = '__DIR__';
    const __NAMESPACE__ = '__NAMESPACE__';
}

echo Obj::EMPTY, PHP_EOL;
echo Obj::CALLABLE, PHP_EOL;
echo Obj::TRAIT, PHP_EOL;
echo Obj::EXTENDS, PHP_EOL;
echo Obj::IMPLEMENTS, PHP_EOL;
echo Obj::STATIC, PHP_EOL;
echo Obj::ABSTRACT, PHP_EOL;
echo Obj::FINAL, PHP_EOL;
echo Obj::PUBLIC, PHP_EOL;
echo Obj::PROTECTED, PHP_EOL;
echo Obj::PRIVATE, PHP_EOL;
echo Obj::CONST, PHP_EOL;
echo Obj::ENDDECLARE, PHP_EOL;
echo Obj::ENDFOR, PHP_EOL;
echo Obj::ENDFOREACH, PHP_EOL;
echo Obj::ENDIF, PHP_EOL;
echo Obj::ENDWHILE, PHP_EOL;
echo Obj::AND, PHP_EOL;
echo Obj::GLOBAL, PHP_EOL;
echo Obj::GOTO, PHP_EOL;
echo Obj::INSTANCEOF, PHP_EOL;
echo Obj::INSTEADOF, PHP_EOL;
echo Obj::INTERFACE, PHP_EOL;
echo Obj::NAMESPACE, PHP_EOL;
echo Obj::NEW, PHP_EOL;
echo Obj::OR, PHP_EOL;
echo Obj::XOR, PHP_EOL;
echo Obj::TRY, PHP_EOL;
echo Obj::USE, PHP_EOL;
echo Obj::VAR, PHP_EOL;
echo Obj::EXIT, PHP_EOL;
echo Obj::LIST, PHP_EOL;
echo Obj::CLONE, PHP_EOL;
echo Obj::INCLUDE, PHP_EOL;
echo Obj::INCLUDE_ONCE, PHP_EOL;
echo Obj::THROW, PHP_EOL;
echo Obj::ARRAY, PHP_EOL;
echo Obj::PRINT, PHP_EOL;
echo Obj::ECHO, PHP_EOL;
echo Obj::REQUIRE, PHP_EOL;
echo Obj::REQUIRE_ONCE, PHP_EOL;
echo Obj::RETURN, PHP_EOL;
echo Obj::ELSE, PHP_EOL;
echo Obj::ELSEIF, PHP_EOL;
echo Obj::DEFAULT, PHP_EOL;
echo Obj::BREAK, PHP_EOL;
echo Obj::CONTINUE, PHP_EOL;
echo Obj::SWITCH, PHP_EOL;
echo Obj::YIELD, PHP_EOL;
echo Obj::FUNCTION, PHP_EOL;
echo Obj::FN, PHP_EOL;
echo Obj::IF, PHP_EOL;
echo Obj::ENDSWITCH, PHP_EOL;
echo Obj::FINALLY, PHP_EOL;
echo Obj::FOR, PHP_EOL;
echo Obj::FOREACH, PHP_EOL;
echo Obj::DECLARE, PHP_EOL;
echo Obj::CASE, PHP_EOL;
echo Obj::DO, PHP_EOL;
echo Obj::WHILE, PHP_EOL;
echo Obj::AS, PHP_EOL;
echo Obj::CATCH, PHP_EOL;
echo Obj::DIE, PHP_EOL;
echo Obj::SELF, PHP_EOL;
echo Obj::PARENT, PHP_EOL;
echo Obj::ISSET, PHP_EOL;
echo Obj::UNSET, PHP_EOL;
echo Obj::__CLASS__, PHP_EOL;
echo Obj::__TRAIT__, PHP_EOL;
echo Obj::__FUNCTION__, PHP_EOL;
echo Obj::__METHOD__, PHP_EOL;
echo Obj::__LINE__, PHP_EOL;
echo Obj::__FILE__, PHP_EOL;
echo Obj::__DIR__, PHP_EOL;
echo Obj::__NAMESPACE__, PHP_EOL;

echo "\nDone\n";
?>
--EXPECT--
empty
callable
trait
extends
implements
static
abstract
final
public
protected
private
const
enddeclare
endfor
endforeach
endif
endwhile
and
global
goto
instanceof
insteadof
interface
namespace
new
or
xor
try
use
var
exit
list
clone
include
include_once
throw
array
print
echo
require
require_once
return
else
elseif
default
break
continue
switch
yield
function
fn
if
endswitch
finally
for
foreach
declare
case
do
while
as
catch
die
self
parent
isset
unset
__CLASS__
__TRAIT__
__FUNCTION__
__METHOD__
__LINE__
__FILE__
__DIR__
__NAMESPACE__

Done