[prev in list] [next in list] [prev in thread] [next in thread]
List: php-cvs
Subject: [PHP-CVS] com php-src: add tests for semi reserved words and remove obsolete ones: =?UTF-8?Q?Zend/te
From: Bob Weinand <bwoebi () php ! net>
Date: 2015-04-30 6:03:29
Message-ID: php-mail-99c4449bf86cd370e4e893b5672e1fae853046908 () git ! php ! net
[Download RAW message or body]
Commit: a54e1237ec7d51e063f8bbf7c94241245573dd9e
Author: Márcio Almada <marcio3w@gmail.com> Sat, 7 Mar 2015 02:29:16 -0300
Parents: 972e94a24d46ccabb0b78623c1598c4998c26a76
Branches: master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=a54e1237ec7d51e063f8bbf7c94241245573dd9e
Log:
add tests for semi reserved words and remove obsolete ones
Changed paths:
A Zend/tests/grammar/regression_001.phpt
A Zend/tests/grammar/regression_002.phpt
A Zend/tests/grammar/regression_003.phpt
A Zend/tests/grammar/regression_004.phpt
A Zend/tests/grammar/regression_005.phpt
A Zend/tests/grammar/regression_006.phpt
A Zend/tests/grammar/regression_007.phpt
A Zend/tests/grammar/regression_008.phpt
A Zend/tests/grammar/regression_009.phpt
A Zend/tests/grammar/regression_010.phpt
A Zend/tests/grammar/regression_011.phpt
A Zend/tests/grammar/regression_012.phpt
A Zend/tests/grammar/regression_013.phpt
A Zend/tests/grammar/semi_reserved_001.phpt
A Zend/tests/grammar/semi_reserved_002.phpt
A Zend/tests/grammar/semi_reserved_003.phpt
A Zend/tests/grammar/semi_reserved_004.phpt
A Zend/tests/grammar/semi_reserved_005.phpt
A Zend/tests/grammar/semi_reserved_006.phpt
A Zend/tests/grammar/semi_reserved_007.phpt
A Zend/tests/grammar/semi_reserved_008.phpt
A Zend/tests/grammar/semi_reserved_009.phpt
A Zend/tests/grammar/semi_reserved_010.phpt
D tests/basic/bug51709_1.phpt
D tests/basic/bug51709_2.phpt
["diff_a54e1237ec7d51e063f8bbf7c94241245573dd9e.txt" (text/plain)]
diff --git a/Zend/tests/grammar/regression_001.phpt \
b/Zend/tests/grammar/regression_001.phpt new file mode 100644
index 0000000..73d5eac
--- /dev/null
+++ b/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
diff --git a/Zend/tests/grammar/regression_002.phpt \
b/Zend/tests/grammar/regression_002.phpt new file mode 100644
index 0000000..dd307c9
--- /dev/null
+++ b/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"
diff --git a/Zend/tests/grammar/regression_003.phpt \
b/Zend/tests/grammar/regression_003.phpt new file mode 100644
index 0000000..7213ca3
--- /dev/null
+++ b/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
diff --git a/Zend/tests/grammar/regression_004.phpt \
b/Zend/tests/grammar/regression_004.phpt new file mode 100644
index 0000000..e95674d
--- /dev/null
+++ b/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
diff --git a/Zend/tests/grammar/regression_005.phpt \
b/Zend/tests/grammar/regression_005.phpt new file mode 100644
index 0000000..7704375
--- /dev/null
+++ b/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
diff --git a/Zend/tests/grammar/regression_006.phpt \
b/Zend/tests/grammar/regression_006.phpt new file mode 100644
index 0000000..6aae0ba
--- /dev/null
+++ b/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
diff --git a/Zend/tests/grammar/regression_007.phpt \
b/Zend/tests/grammar/regression_007.phpt new file mode 100644
index 0000000..92b2253
--- /dev/null
+++ b/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
diff --git a/Zend/tests/grammar/regression_008.phpt \
b/Zend/tests/grammar/regression_008.phpt new file mode 100644
index 0000000..7741ed0
--- /dev/null
+++ b/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
diff --git a/Zend/tests/grammar/regression_009.phpt \
b/Zend/tests/grammar/regression_009.phpt new file mode 100644
index 0000000..589d903
--- /dev/null
+++ b/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
diff --git a/Zend/tests/grammar/regression_010.phpt \
b/Zend/tests/grammar/regression_010.phpt new file mode 100644
index 0000000..5dc90f2
--- /dev/null
+++ b/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
diff --git a/Zend/tests/grammar/regression_011.phpt \
b/Zend/tests/grammar/regression_011.phpt new file mode 100644
index 0000000..c79c077
--- /dev/null
+++ b/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) {
+}
diff --git a/Zend/tests/grammar/regression_012.phpt \
b/Zend/tests/grammar/regression_012.phpt new file mode 100644
index 0000000..3b4925a
--- /dev/null
+++ b/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
diff --git a/Zend/tests/grammar/regression_013.phpt \
b/Zend/tests/grammar/regression_013.phpt new file mode 100644
index 0000000..1c60ffc
--- /dev/null
+++ b/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
diff --git a/Zend/tests/grammar/semi_reserved_001.phpt \
b/Zend/tests/grammar/semi_reserved_001.phpt new file mode 100644
index 0000000..06b2532
--- /dev/null
+++ b/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
diff --git a/Zend/tests/grammar/semi_reserved_002.phpt \
b/Zend/tests/grammar/semi_reserved_002.phpt new file mode 100644
index 0000000..e4c49cd
--- /dev/null
+++ b/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
diff --git a/Zend/tests/grammar/semi_reserved_003.phpt \
b/Zend/tests/grammar/semi_reserved_003.phpt new file mode 100644
index 0000000..fe2c44d
--- /dev/null
+++ b/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
diff --git a/Zend/tests/grammar/semi_reserved_004.phpt \
b/Zend/tests/grammar/semi_reserved_004.phpt new file mode 100644
index 0000000..40c5df1
--- /dev/null
+++ b/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
diff --git a/Zend/tests/grammar/semi_reserved_005.phpt \
b/Zend/tests/grammar/semi_reserved_005.phpt new file mode 100644
index 0000000..dcd4018
--- /dev/null
+++ b/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
diff --git a/Zend/tests/grammar/semi_reserved_006.phpt \
b/Zend/tests/grammar/semi_reserved_006.phpt new file mode 100644
index 0000000..334d09a
--- /dev/null
+++ b/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
diff --git a/Zend/tests/grammar/semi_reserved_007.phpt \
b/Zend/tests/grammar/semi_reserved_007.phpt new file mode 100644
index 0000000..5105629
--- /dev/null
+++ b/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
\ No newline at end of file
diff --git a/Zend/tests/grammar/semi_reserved_008.phpt \
b/Zend/tests/grammar/semi_reserved_008.phpt new file mode 100644
index 0000000..43218b1
--- /dev/null
+++ b/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
diff --git a/Zend/tests/grammar/semi_reserved_009.phpt \
b/Zend/tests/grammar/semi_reserved_009.phpt new file mode 100644
index 0000000..1a7b0fc
--- /dev/null
+++ b/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
diff --git a/Zend/tests/grammar/semi_reserved_010.phpt \
b/Zend/tests/grammar/semi_reserved_010.phpt new file mode 100644
index 0000000..508a786
--- /dev/null
+++ b/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
diff --git a/tests/basic/bug51709_1.phpt b/tests/basic/bug51709_1.phpt
deleted file mode 100644
index 3f2d544..0000000
--- a/tests/basic/bug51709_1.phpt
+++ /dev/null
@@ -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
diff --git a/tests/basic/bug51709_2.phpt b/tests/basic/bug51709_2.phpt
deleted file mode 100644
index bb1f91c..0000000
--- a/tests/basic/bug51709_2.phpt
+++ /dev/null
@@ -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
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic