Browse Source

add tests for semi reserved words and remove obsolete ones

pull/1221/head
Márcio Almada 11 years ago
parent
commit
a54e1237ec
  1. 33
      Zend/tests/grammar/regression_001.phpt
  2. 22
      Zend/tests/grammar/regression_002.phpt
  3. 12
      Zend/tests/grammar/regression_003.phpt
  4. 15
      Zend/tests/grammar/regression_004.phpt
  5. 14
      Zend/tests/grammar/regression_005.phpt
  6. 30
      Zend/tests/grammar/regression_006.phpt
  7. 44
      Zend/tests/grammar/regression_007.phpt
  8. 21
      Zend/tests/grammar/regression_008.phpt
  9. 18
      Zend/tests/grammar/regression_009.phpt
  10. 14
      Zend/tests/grammar/regression_010.phpt
  11. 18
      Zend/tests/grammar/regression_011.phpt
  12. 13
      Zend/tests/grammar/regression_012.phpt
  13. 13
      Zend/tests/grammar/regression_013.phpt
  14. 188
      Zend/tests/grammar/semi_reserved_001.phpt
  15. 186
      Zend/tests/grammar/semi_reserved_002.phpt
  16. 210
      Zend/tests/grammar/semi_reserved_003.phpt
  17. 210
      Zend/tests/grammar/semi_reserved_004.phpt
  18. 189
      Zend/tests/grammar/semi_reserved_005.phpt
  19. 80
      Zend/tests/grammar/semi_reserved_006.phpt
  20. 37
      Zend/tests/grammar/semi_reserved_007.phpt
  21. 68
      Zend/tests/grammar/semi_reserved_008.phpt
  22. 25
      Zend/tests/grammar/semi_reserved_009.phpt
  23. 31
      Zend/tests/grammar/semi_reserved_010.phpt
  24. 16
      tests/basic/bug51709_1.phpt
  25. 16
      tests/basic/bug51709_2.phpt

33
Zend/tests/grammar/regression_001.phpt

@ -0,0 +1,33 @@
--TEST--
Test to check static method calls syntax regression
--FILE--
<?php
class Foo {
public static function function(){ echo __METHOD__, PHP_EOL; }
}
Foo::function();
Foo::
function();
Foo::
function();
Foo::
function(
);
echo "\nDone\n";
--EXPECTF--
Foo::function
Foo::function
Foo::function
Foo::function
Done

22
Zend/tests/grammar/regression_002.phpt

@ -0,0 +1,22 @@
--TEST--
Test to ensure ::class still works
--FILE--
<?php
class Foo {}
var_dump(Foo::class);
var_dump(Foo:: class);
var_dump(Foo:: CLASS);
var_dump(Foo::
CLASS);
--EXPECTF--
string(3) "Foo"
string(3) "Foo"
string(3) "Foo"
string(3) "Foo"

12
Zend/tests/grammar/regression_003.phpt

@ -0,0 +1,12 @@
--TEST--
Test to ensure ::class is still reserved in obj scope
--FILE--
<?php
class Obj
{
const CLASS = 'class';
}
--EXPECTF--
Parse error: syntax error, unexpected 'CLASS' (T_CLASS) in %s on line 5

15
Zend/tests/grammar/regression_004.phpt

@ -0,0 +1,15 @@
--TEST--
Test possible function naming regression on procedural scope
--FILE--
<?php
class Obj
{
function echo(){} // valid
function return(){} // valid
}
function echo(){} // not valid
--EXPECTF--
Parse error: syntax error, unexpected 'echo' (T_ECHO), expecting identifier (T_STRING) or '(' in %s on line 9

14
Zend/tests/grammar/regression_005.phpt

@ -0,0 +1,14 @@
--TEST--
Test possible constant naming regression on procedural scope
--FILE--
<?php
class Obj
{
const return = 'yep';
}
const return = 'nope';
--EXPECTF--
Parse error: syntax error, unexpected 'return' (T_RETURN), expecting identifier (T_STRING) in %s on line 8

30
Zend/tests/grammar/regression_006.phpt

@ -0,0 +1,30 @@
--TEST--
Test to ensure const list syntax declaration works
--FILE--
<?php
class Obj
{
const DECLARE = 'declare',
RETURN = 'return',
FUNCTION = 'function',
USE = 'use';
}
echo Obj::DECLARE, PHP_EOL;
echo Obj::RETURN, PHP_EOL;
echo Obj::FUNCTION, PHP_EOL;
echo Obj::USE, PHP_EOL;
echo Obj::
USE, PHP_EOL;
echo "\nDone\n";
--EXPECTF--
declare
return
function
use
use
Done

44
Zend/tests/grammar/regression_007.phpt

@ -0,0 +1,44 @@
--TEST--
Test to ensure semi reserved words allow deference
--FILE--
<?php
class Foo {
const use = 'yay';
public static function new() {
echo __METHOD__, PHP_EOL;
return new static();
}
public function self() {
echo __METHOD__, PHP_EOL;
return $this;
}
}
Foo::new()::new()::new();
var_dump(
(new Foo)->self()::new()->self()->self()::use
);
Foo::{'new'}();
var_dump(Foo::use);
echo "\nDone\n";
--EXPECTF--
Foo::new
Foo::new
Foo::new
Foo::self
Foo::new
Foo::self
Foo::self
string(3) "yay"
Foo::new
string(3) "yay"
Done

21
Zend/tests/grammar/regression_008.phpt

@ -0,0 +1,21 @@
--TEST--
Test to check regressions on string interpolation with class members access
--FILE--
<?php
class Friday {
public $require = "fun";
}
$friday = new Friday;
echo "$friday->require ($friday->require) {$friday->require}", PHP_EOL;
echo "\nDone\n";
--EXPECTF--
fun (fun) fun
Done

18
Zend/tests/grammar/regression_009.phpt

@ -0,0 +1,18 @@
--TEST--
Test to check regressions on use statements and lexer state
--FILE--
<?php
use A\B\C\D;
class Foo
{
private static $foo;
}
echo PHP_EOL, "Done", PHP_EOL;
--EXPECTF--
Done

14
Zend/tests/grammar/regression_010.phpt

@ -0,0 +1,14 @@
--TEST--
Test to check regressions on T_IMPLEMENTS followed by a T_NS_SEPARATOR
--FILE--
<?php
interface A{}
class B implements\A {}
echo "Done", PHP_EOL;
--EXPECTF--
Done

18
Zend/tests/grammar/regression_011.phpt

@ -0,0 +1,18 @@
--TEST--
Testing instantiation using namespace:: prefix
--FILE--
<?php
namespace foo;
class bar {
}
class_alias('foo\bar', 'foo\baz');
var_dump(new namespace\baz);
?>
--EXPECTF--
object(foo\bar)#%d (0) {
}

13
Zend/tests/grammar/regression_012.phpt

@ -0,0 +1,13 @@
--TEST--
Testing for regression on const list syntax and arrays
--FILE--
<?php
class A {
const A = [1, FOREACH];
}
?>
--EXPECTF--
Parse error: syntax error, unexpected 'FOREACH' (T_FOREACH), expecting ']' in %s on line %d

13
Zend/tests/grammar/regression_013.phpt

@ -0,0 +1,13 @@
--TEST--
Testing for regression with encapsed variables in class declaration context
--FILE--
<?php
class A { function foo() { "{${$a}}"; } function list() {} }
echo "Done", PHP_EOL;
?>
--EXPECTF--
Done

188
Zend/tests/grammar/semi_reserved_001.phpt

@ -0,0 +1,188 @@
--TEST--
Test semi-reserved words as class methods
--FILE--
<?php
class Obj
{
function empty(){ echo __METHOD__, PHP_EOL; }
function callable(){ echo __METHOD__, PHP_EOL; }
function trait(){ echo __METHOD__, PHP_EOL; }
function extends(){ echo __METHOD__, PHP_EOL; }
function implements(){ echo __METHOD__, PHP_EOL; }
function const(){ echo __METHOD__, PHP_EOL; }
function enddeclare(){ echo __METHOD__, PHP_EOL; }
function endfor(){ echo __METHOD__, PHP_EOL; }
function endforeach(){ echo __METHOD__, PHP_EOL; }
function endif(){ echo __METHOD__, PHP_EOL; }
function endwhile(){ echo __METHOD__, PHP_EOL; }
function and(){ echo __METHOD__, PHP_EOL; }
function global(){ echo __METHOD__, PHP_EOL; }
function goto(){ echo __METHOD__, PHP_EOL; }
function instanceof(){ echo __METHOD__, PHP_EOL; }
function insteadof(){ echo __METHOD__, PHP_EOL; }
function interface(){ echo __METHOD__, PHP_EOL; }
function new(){ echo __METHOD__, PHP_EOL; }
function or(){ echo __METHOD__, PHP_EOL; }
function xor(){ echo __METHOD__, PHP_EOL; }
function try(){ echo __METHOD__, PHP_EOL; }
function use(){ echo __METHOD__, PHP_EOL; }
function var(){ echo __METHOD__, PHP_EOL; }
function exit(){ echo __METHOD__, PHP_EOL; }
function list(){ echo __METHOD__, PHP_EOL; }
function clone(){ echo __METHOD__, PHP_EOL; }
function include(){ echo __METHOD__, PHP_EOL; }
function include_once(){ echo __METHOD__, PHP_EOL; }
function throw(){ echo __METHOD__, PHP_EOL; }
function array(){ echo __METHOD__, PHP_EOL; }
function print(){ echo __METHOD__, PHP_EOL; }
function echo(){ echo __METHOD__, PHP_EOL; }
function require(){ echo __METHOD__, PHP_EOL; }
function require_once(){ echo __METHOD__, PHP_EOL; }
function return(){ echo __METHOD__, PHP_EOL; }
function else(){ echo __METHOD__, PHP_EOL; }
function elseif(){ echo __METHOD__, PHP_EOL; }
function default(){ echo __METHOD__, PHP_EOL; }
function break(){ echo __METHOD__, PHP_EOL; }
function continue(){ echo __METHOD__, PHP_EOL; }
function switch(){ echo __METHOD__, PHP_EOL; }
function yield(){ echo __METHOD__, PHP_EOL; }
function function(){ echo __METHOD__, PHP_EOL; }
function if(){ echo __METHOD__, PHP_EOL; }
function endswitch(){ echo __METHOD__, PHP_EOL; }
function finally(){ echo __METHOD__, PHP_EOL; }
function for(){ echo __METHOD__, PHP_EOL; }
function foreach(){ echo __METHOD__, PHP_EOL; }
function declare(){ echo __METHOD__, PHP_EOL; }
function case(){ echo __METHOD__, PHP_EOL; }
function do(){ echo __METHOD__, PHP_EOL; }
function while(){ echo __METHOD__, PHP_EOL; }
function as(){ echo __METHOD__, PHP_EOL; }
function catch(){ echo __METHOD__, PHP_EOL; }
function die(){ echo __METHOD__, PHP_EOL; }
function self(){ echo __METHOD__, PHP_EOL; }
function parent(){ echo __METHOD__, PHP_EOL; }
}
$obj = new Obj;
$obj->empty();
$obj->callable();
$obj->trait();
$obj->extends();
$obj->implements();
$obj->const();
$obj->enddeclare();
$obj->endfor();
$obj->endforeach();
$obj->endif();
$obj->endwhile();
$obj->and();
$obj->global();
$obj->goto();
$obj->instanceof();
$obj->insteadof();
$obj->interface();
$obj->new();
$obj->or();
$obj->xor();
$obj->try();
$obj->use();
$obj->var();
$obj->exit();
$obj->list();
$obj->clone();
$obj->include();
$obj->include_once();
$obj->throw();
$obj->array();
$obj->print();
$obj->echo();
$obj->require();
$obj->require_once();
$obj->return();
$obj->else();
$obj->elseif();
$obj->default();
$obj->break();
$obj->continue();
$obj->switch();
$obj->yield();
$obj->function();
$obj->if();
$obj->endswitch();
$obj->finally();
$obj->for();
$obj->foreach();
$obj->declare();
$obj->case();
$obj->do();
$obj->while();
$obj->as();
$obj->catch();
$obj->die();
$obj->self();
$obj->parent();
echo "\nDone\n";
--EXPECTF--
Obj::empty
Obj::callable
Obj::trait
Obj::extends
Obj::implements
Obj::const
Obj::enddeclare
Obj::endfor
Obj::endforeach
Obj::endif
Obj::endwhile
Obj::and
Obj::global
Obj::goto
Obj::instanceof
Obj::insteadof
Obj::interface
Obj::new
Obj::or
Obj::xor
Obj::try
Obj::use
Obj::var
Obj::exit
Obj::list
Obj::clone
Obj::include
Obj::include_once
Obj::throw
Obj::array
Obj::print
Obj::echo
Obj::require
Obj::require_once
Obj::return
Obj::else
Obj::elseif
Obj::default
Obj::break
Obj::continue
Obj::switch
Obj::yield
Obj::function
Obj::if
Obj::endswitch
Obj::finally
Obj::for
Obj::foreach
Obj::declare
Obj::case
Obj::do
Obj::while
Obj::as
Obj::catch
Obj::die
Obj::self
Obj::parent
Done

186
Zend/tests/grammar/semi_reserved_002.phpt

@ -0,0 +1,186 @@
--TEST--
Test semi-reserved words as static class methods
--FILE--
<?php
class Obj
{
static function empty(){ echo __METHOD__, PHP_EOL; }
static function callable(){ echo __METHOD__, PHP_EOL; }
static function trait(){ echo __METHOD__, PHP_EOL; }
static function extends(){ echo __METHOD__, PHP_EOL; }
static function implements(){ echo __METHOD__, PHP_EOL; }
static function const(){ echo __METHOD__, PHP_EOL; }
static function enddeclare(){ echo __METHOD__, PHP_EOL; }
static function endfor(){ echo __METHOD__, PHP_EOL; }
static function endforeach(){ echo __METHOD__, PHP_EOL; }
static function endif(){ echo __METHOD__, PHP_EOL; }
static function endwhile(){ echo __METHOD__, PHP_EOL; }
static function and(){ echo __METHOD__, PHP_EOL; }
static function global(){ echo __METHOD__, PHP_EOL; }
static function goto(){ echo __METHOD__, PHP_EOL; }
static function instanceof(){ echo __METHOD__, PHP_EOL; }
static function insteadof(){ echo __METHOD__, PHP_EOL; }
static function interface(){ echo __METHOD__, PHP_EOL; }
static function new(){ echo __METHOD__, PHP_EOL; }
static function or(){ echo __METHOD__, PHP_EOL; }
static function xor(){ echo __METHOD__, PHP_EOL; }
static function try(){ echo __METHOD__, PHP_EOL; }
static function use(){ echo __METHOD__, PHP_EOL; }
static function var(){ echo __METHOD__, PHP_EOL; }
static function exit(){ echo __METHOD__, PHP_EOL; }
static function list(){ echo __METHOD__, PHP_EOL; }
static function clone(){ echo __METHOD__, PHP_EOL; }
static function include(){ echo __METHOD__, PHP_EOL; }
static function include_once(){ echo __METHOD__, PHP_EOL; }
static function throw(){ echo __METHOD__, PHP_EOL; }
static function array(){ echo __METHOD__, PHP_EOL; }
static function print(){ echo __METHOD__, PHP_EOL; }
static function echo(){ echo __METHOD__, PHP_EOL; }
static function require(){ echo __METHOD__, PHP_EOL; }
static function require_once(){ echo __METHOD__, PHP_EOL; }
static function return(){ echo __METHOD__, PHP_EOL; }
static function else(){ echo __METHOD__, PHP_EOL; }
static function elseif(){ echo __METHOD__, PHP_EOL; }
static function default(){ echo __METHOD__, PHP_EOL; }
static function break(){ echo __METHOD__, PHP_EOL; }
static function continue(){ echo __METHOD__, PHP_EOL; }
static function switch(){ echo __METHOD__, PHP_EOL; }
static function yield(){ echo __METHOD__, PHP_EOL; }
static function function(){ echo __METHOD__, PHP_EOL; }
static function if(){ echo __METHOD__, PHP_EOL; }
static function endswitch(){ echo __METHOD__, PHP_EOL; }
static function finally(){ echo __METHOD__, PHP_EOL; }
static function for(){ echo __METHOD__, PHP_EOL; }
static function foreach(){ echo __METHOD__, PHP_EOL; }
static function declare(){ echo __METHOD__, PHP_EOL; }
static function case(){ echo __METHOD__, PHP_EOL; }
static function do(){ echo __METHOD__, PHP_EOL; }
static function while(){ echo __METHOD__, PHP_EOL; }
static function as(){ echo __METHOD__, PHP_EOL; }
static function catch(){ echo __METHOD__, PHP_EOL; }
static function die(){ echo __METHOD__, PHP_EOL; }
static function self(){ echo __METHOD__, PHP_EOL; }
static function parent(){ echo __METHOD__, PHP_EOL; }
}
Obj::empty();
Obj::callable();
Obj::trait();
Obj::extends();
Obj::implements();
Obj::const();
Obj::enddeclare();
Obj::endfor();
Obj::endforeach();
Obj::endif();
Obj::endwhile();
Obj::and();
Obj::global();
Obj::goto();
Obj::instanceof();
Obj::insteadof();
Obj::interface();
Obj::new();
Obj::or();
Obj::xor();
Obj::try();
Obj::use();
Obj::var();
Obj::exit();
Obj::list();
Obj::clone();
Obj::include();
Obj::include_once();
Obj::throw();
Obj::array();
Obj::print();
Obj::echo();
Obj::require();
Obj::require_once();
Obj::return();
Obj::else();
Obj::elseif();
Obj::default();
Obj::break();
Obj::continue();
Obj::switch();
Obj::yield();
Obj::function();
Obj::if();
Obj::endswitch();
Obj::finally();
Obj::for();
Obj::foreach();
Obj::declare();
Obj::case();
Obj::do();
Obj::while();
Obj::as();
Obj::catch();
Obj::die();
Obj::self();
Obj::parent();
echo "\nDone\n";
--EXPECTF--
Obj::empty
Obj::callable
Obj::trait
Obj::extends
Obj::implements
Obj::const
Obj::enddeclare
Obj::endfor
Obj::endforeach
Obj::endif
Obj::endwhile
Obj::and
Obj::global
Obj::goto
Obj::instanceof
Obj::insteadof
Obj::interface
Obj::new
Obj::or
Obj::xor
Obj::try
Obj::use
Obj::var
Obj::exit
Obj::list
Obj::clone
Obj::include
Obj::include_once
Obj::throw
Obj::array
Obj::print
Obj::echo
Obj::require
Obj::require_once
Obj::return
Obj::else
Obj::elseif
Obj::default
Obj::break
Obj::continue
Obj::switch
Obj::yield
Obj::function
Obj::if
Obj::endswitch
Obj::finally
Obj::for
Obj::foreach
Obj::declare
Obj::case
Obj::do
Obj::while
Obj::as
Obj::catch
Obj::die
Obj::self
Obj::parent
Done

210
Zend/tests/grammar/semi_reserved_003.phpt

@ -0,0 +1,210 @@
--TEST--
Test semi-reserved words as class properties
--FILE--
<?php
class Obj
{
var $empty = 'empty';
var $callable = 'callable';
var $class = 'class';
var $trait = 'trait';
var $extends = 'extends';
var $implements = 'implements';
var $static = 'static';
var $abstract = 'abstract';
var $final = 'final';
var $public = 'public';
var $protected = 'protected';
var $private = 'private';
var $const = 'const';
var $enddeclare = 'enddeclare';
var $endfor = 'endfor';
var $endforeach = 'endforeach';
var $endif = 'endif';
var $endwhile = 'endwhile';
var $and = 'and';
var $global = 'global';
var $goto = 'goto';
var $instanceof = 'instanceof';
var $insteadof = 'insteadof';
var $interface = 'interface';
var $namespace = 'namespace';
var $new = 'new';
var $or = 'or';
var $xor = 'xor';
var $try = 'try';
var $use = 'use';
var $var = 'var';
var $exit = 'exit';
var $list = 'list';
var $clone = 'clone';
var $include = 'include';
var $include_once = 'include_once';
var $throw = 'throw';
var $array = 'array';
var $print = 'print';
var $echo = 'echo';
var $require = 'require';
var $require_once = 'require_once';
var $return = 'return';
var $else = 'else';
var $elseif = 'elseif';
var $default = 'default';
var $break = 'break';
var $continue = 'continue';
var $switch = 'switch';
var $yield = 'yield';
var $function = 'function';
var $if = 'if';
var $endswitch = 'endswitch';
var $finally = 'finally';
var $for = 'for';
var $foreach = 'foreach';
var $declare = 'declare';
var $case = 'case';
var $do = 'do';
var $while = 'while';
var $as = 'as';
var $catch = 'catch';
var $die = 'die';
var $self = 'self';
}
$obj = new Obj;
echo $obj->empty, PHP_EOL;
echo $obj->callable, PHP_EOL;
echo $obj->class, 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->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 "\nDone\n";
?>
--EXPECTF--
empty
callable
class
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
if
endswitch
finally
for
foreach
declare
case
do
while
as
catch
die
self
Done

210
Zend/tests/grammar/semi_reserved_004.phpt

@ -0,0 +1,210 @@
--TEST--
Test semi-reserved words as static class properties
--FILE--
<?php
class Obj
{
static $empty = 'empty';
static $callable = 'callable';
static $class = 'class';
static $trait = 'trait';
static $extends = 'extends';
static $implements = 'implements';
static $static = 'static';
static $abstract = 'abstract';
static $final = 'final';
static $public = 'public';
static $protected = 'protected';
static $private = 'private';
static $const = 'const';
static $enddeclare = 'enddeclare';
static $endfor = 'endfor';
static $endforeach = 'endforeach';
static $endif = 'endif';
static $endwhile = 'endwhile';
static $and = 'and';
static $global = 'global';
static $goto = 'goto';
static $instanceof = 'instanceof';
static $insteadof = 'insteadof';
static $interface = 'interface';
static $namespace = 'namespace';
static $new = 'new';
static $or = 'or';
static $xor = 'xor';
static $try = 'try';
static $use = 'use';
static $var = 'var';
static $exit = 'exit';
static $list = 'list';
static $clone = 'clone';
static $include = 'include';
static $include_once = 'include_once';
static $throw = 'throw';
static $array = 'array';
static $print = 'print';
static $echo = 'echo';
static $require = 'require';
static $require_once = 'require_once';
static $return = 'return';
static $else = 'else';
static $elseif = 'elseif';
static $default = 'default';
static $break = 'break';
static $continue = 'continue';
static $switch = 'switch';
static $yield = 'yield';
static $function = 'function';
static $if = 'if';
static $endswitch = 'endswitch';
static $finally = 'finally';
static $for = 'for';
static $foreach = 'foreach';
static $declare = 'declare';
static $case = 'case';
static $do = 'do';
static $while = 'while';
static $as = 'as';
static $catch = 'catch';
static $die = 'die';
static $self = 'self';
static $parent = 'parent';
}
echo Obj::$empty, PHP_EOL;
echo Obj::$callable, PHP_EOL;
echo Obj::$class, 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::$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 "\nDone\n";
--EXPECTF--
empty
callable
class
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
if
endswitch
finally
for
foreach
declare
case
do
while
as
catch
die
self
parent
Done

189
Zend/tests/grammar/semi_reserved_005.phpt

@ -0,0 +1,189 @@
--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 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 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';
}
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::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::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 "\nDone\n";
--EXPECTF--
empty
callable
trait
extends
implements
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
if
endswitch
finally
for
foreach
declare
case
do
while
as
catch
die
self
parent
Done

80
Zend/tests/grammar/semi_reserved_006.phpt

@ -0,0 +1,80 @@
--TEST--
Test semi-reserved method and constant names and trait conflict resolution
--FILE--
<?php
trait TraitA
{
public function catch(){ echo __METHOD__, PHP_EOL; }
private function list(){ echo __METHOD__, PHP_EOL; }
}
trait TraitB
{
static $list = ['a' => ['b' => ['c']]];
public static function catch(){ echo __METHOD__, PHP_EOL; }
private static function throw(){ echo __METHOD__, PHP_EOL; }
private static function self(){ echo __METHOD__, PHP_EOL; }
}
trait TraitC
{
public static function exit(){ echo __METHOD__, PHP_EOL; }
protected static function try(){ echo __METHOD__, PHP_EOL; }
}
class Foo
{
use TraitA, TraitB {
TraitA
::
catch insteadof namespace\TraitB;
TraitA::list as public foreach;
TraitB::throw as public;
TraitB::self as public;
}
use TraitC {
try as public attempt;
exit as die;
\TraitC::exit as bye;
namespace\TraitC::exit as byebye;
TraitC
::
exit as farewell;
}
}
(new Foo)->catch();
(new Foo)->foreach();
Foo::throw();
Foo::self();
var_dump(Foo::$list['a']);
Foo::attempt();
Foo::die();
Foo::bye();
Foo::byebye();
Foo::farewell();
echo "\nDone\n";
--EXPECTF--
TraitA::catch
TraitA::list
TraitB::throw
TraitB::self
array(1) {
["b"]=>
array(1) {
[0]=>
string(1) "c"
}
}
TraitC::try
TraitC::exit
TraitC::exit
TraitC::exit
TraitC::exit
Done

37
Zend/tests/grammar/semi_reserved_007.phpt

@ -0,0 +1,37 @@
--TEST--
Edge case: self::self, self::parent, parent::self semi reserved constants access
--FILE--
<?php
class Foo {
const self = "self";
const parent = "parent";
public function __construct() {
echo "From ", __METHOD__, ":", PHP_EOL;
echo self::self, PHP_EOL;
echo self::parent, PHP_EOL;
}
}
class Bar extends Foo {
public function __construct() {
parent::__construct();
echo "From ", __METHOD__, ":", PHP_EOL;
echo parent::self, PHP_EOL;
echo parent::parent, PHP_EOL;
}
}
new Bar;
echo "\nDone\n";
--EXPECTF--
From Foo::__construct:
self
parent
From Bar::__construct:
self
parent
Done

68
Zend/tests/grammar/semi_reserved_008.phpt

@ -0,0 +1,68 @@
--TEST--
Testing with comments around semi-reserved names (not intended to be legible)
--FILE--
<?php
trait TraitA
{
public static function list(){ echo __METHOD__, PHP_EOL; }
public static function /* comment */ catch(){ echo __METHOD__, PHP_EOL; }
private static function // comment
throw(){ echo __METHOD__, PHP_EOL; }
private static function
# comment
self(){ echo __METHOD__, PHP_EOL; }
}
trait TraitB
{
public static function exit(){ echo __METHOD__, PHP_EOL; }
protected static function try(){ echo __METHOD__, PHP_EOL; }
}
class Foo
{
use TraitA {
TraitA::
//
/** doc comment */
#
catch /* comment */
// comment
# comment
insteadof TraitB;
TraitA::list as public /**/ foreach;
}
use TraitB {
try /*comment*/ as public attempt;
exit // comment
as/*comment*/die; // non qualified
\TraitB::exit as bye; // full qualified
namespace\TraitB::exit #
as byebye; // even more full qualified
TraitB
::
/** */
exit as farewell; // full qualified with weird spacing
}
}
Foo /**/
#
//
/** */
::
/**/
#
//
/** */
attempt();
echo PHP_EOL, "Done", PHP_EOL;
--EXPECTF--
TraitB::try
Done

25
Zend/tests/grammar/semi_reserved_009.phpt

@ -0,0 +1,25 @@
--TEST--
Edge case: T_STRING<as> as T_STRING<?>
--FILE--
<?php
trait TraitA
{
public static function as(){ echo __METHOD__, PHP_EOL; }
}
class Foo
{
use TraitA {
as as try;
}
}
Foo::try();
echo PHP_EOL, "Done", PHP_EOL;
--EXPECTF--
TraitA::as
Done

31
Zend/tests/grammar/semi_reserved_010.phpt

@ -0,0 +1,31 @@
--TEST--
Edge case: T_STRING<insteadof> insteadof T_STRING<?>
--FILE--
<?php
trait TraitA
{
public static function insteadof(){ echo __METHOD__, PHP_EOL; }
}
trait TraitB
{
public static function insteadof(){ echo __METHOD__, PHP_EOL; }
}
class Foo
{
use TraitA , TraitB {
TraitB::insteadof
insteadof TraitA;
}
}
Foo::insteadof();
echo PHP_EOL, "Done", PHP_EOL;
--EXPECTF--
TraitB::insteadof
Done

16
tests/basic/bug51709_1.phpt

@ -1,16 +0,0 @@
--TEST--
Bug #51709 (Can't use keywords as method names)
--FILE--
<?php
class foo {
static function for() {
echo "1";
}
}
?>
===DONE===
<?php exit(0); ?>
--EXPECTF--
Parse error: syntax error, unexpected %s, expecting %s in %sbug51709_1.php on line %d

16
tests/basic/bug51709_2.phpt

@ -1,16 +0,0 @@
--TEST--
Bug #51709 (Can't use keywords as method names)
--FILE--
<?php
class foo {
static function goto() {
echo "1";
}
}
?>
===DONE===
<?php exit(0); ?>
--EXPECTF--
Parse error: syntax error, unexpected %s, expecting %s in %sbug51709_2.php on line %d
Loading…
Cancel
Save