diff options
author | Dmitry Stogov <dmitry@zend.com> | 2016-06-16 02:32:02 +0300 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2016-06-16 02:32:02 +0300 |
commit | ff363e2e7c58353b7e2751d1ca4d7bf616862aae (patch) | |
tree | 318bcb9b453c607f1d49c114999895748903b3da /ext/reflection/tests | |
parent | a9512af8109e889eb2c6042c57797184930667cd (diff) | |
download | php-git-ff363e2e7c58353b7e2751d1ca4d7bf616862aae.tar.gz |
Implemented RFC: Replace "Missing argument" warning with "Too few arguments" exception
Squashed commit of the following:
commit 8b45fa2acb8cd92542a39e1e4720fe1f4fabc26c
Author: Dmitry Stogov <dmitry@zend.com>
Date: Thu Jun 16 01:52:50 2016 +0300
Separate slow path of ZEND_RECV into a cold function.
commit 9e18895ee59c64c93a96b1ba3061355c4663e962
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Jun 15 23:26:28 2016 +0300
Required argument can't be IS_UNDEF anymore.
commit 662db66e3943d4455c65e4f987bb54abf724ecb2
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue May 31 17:14:50 2016 +0300
Replace "Missing argument" warning by "Too few arguments" exception.
Diffstat (limited to 'ext/reflection/tests')
-rw-r--r-- | ext/reflection/tests/007.phpt | 14 | ||||
-rw-r--r-- | ext/reflection/tests/ReflectionClass_newInstanceArgs_001.phpt | 40 | ||||
-rw-r--r-- | ext/reflection/tests/ReflectionClass_newInstance_001.phpt | 25 | ||||
-rw-r--r-- | ext/reflection/tests/ReflectionMethod_invokeArgs_error1.phpt | 15 | ||||
-rw-r--r-- | ext/reflection/tests/ReflectionMethod_invoke_error2.phpt | 15 | ||||
-rw-r--r-- | ext/reflection/tests/bug38217.phpt | 14 |
6 files changed, 56 insertions, 67 deletions
diff --git a/ext/reflection/tests/007.phpt b/ext/reflection/tests/007.phpt index 004158ccff..d9204171b5 100644 --- a/ext/reflection/tests/007.phpt +++ b/ext/reflection/tests/007.phpt @@ -25,6 +25,10 @@ function test($class) { var_dump($e->getMessage()); } + catch (Throwable $e) + { + echo "Exception: " . $e->getMessage() . "\n"; + } echo "====>newInstance(25)\n"; try @@ -129,15 +133,7 @@ object(WithCtor)#%d (0) { ====>WithCtorWithArgs ====>newInstance() - -Warning: Missing argument 1 for WithCtorWithArgs::__construct() in %s007.php on line %d - -Notice: Undefined variable: arg in %s007.php on line %d -WithCtorWithArgs::__construct() -array(0) { -} -object(WithCtorWithArgs)#%d (0) { -} +Exception: Too few arguments to function WithCtorWithArgs::__construct(), 0 passed and exactly 1 expected ====>newInstance(25) WithCtorWithArgs::__construct(25) array(1) { diff --git a/ext/reflection/tests/ReflectionClass_newInstanceArgs_001.phpt b/ext/reflection/tests/ReflectionClass_newInstanceArgs_001.phpt index d3a426de4c..3ad654dd84 100644 --- a/ext/reflection/tests/ReflectionClass_newInstanceArgs_001.phpt +++ b/ext/reflection/tests/ReflectionClass_newInstanceArgs_001.phpt @@ -38,13 +38,27 @@ $rcC = new ReflectionClass('C'); $rcD = new ReflectionClass('D'); $rcE = new ReflectionClass('E'); -$a1 = $rcA->newInstanceArgs(); -$a2 = $rcA->newInstanceArgs(array('x')); -var_dump($a1, $a2); +try { + var_dump($rcA->newInstanceArgs()); +} catch (Throwable $e) { + echo "Exception: " . $e->getMessage() . "\n"; +} +try { + var_dump($rcA->newInstanceArgs(array('x'))); +} catch (Throwable $e) { + echo "Exception: " . $e->getMessage() . "\n"; +} -$b1 = $rcB->newInstanceArgs(); -$b2 = $rcB->newInstanceArgs(array('x', 123)); -var_dump($b1, $b2); +try { + var_dump($rcB->newInstanceArgs()); +} catch (Throwable $e) { + echo "Exception: " . $e->getMessage() . "\n"; +} +try { + var_dump($rcB->newInstanceArgs(array('x', 123))); +} catch (Throwable $e) { + echo "Exception: " . $e->getMessage() . "\n"; +} try { $rcC->newInstanceArgs(); @@ -73,25 +87,15 @@ try { --EXPECTF-- Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; A has a deprecated constructor in %s on line %d In constructor of class A -In constructor of class A object(A)#%d (0) { } +In constructor of class A object(A)#%d (0) { } - -Warning: Missing argument 1 for B::__construct() in %s on line 9 - -Warning: Missing argument 2 for B::__construct() in %s on line 9 - -Notice: Undefined variable: a in %s on line 10 - -Notice: Undefined variable: b in %s on line 10 -In constructor of class B with args , +Exception: Too few arguments to function B::__construct(), 0 passed and exactly 2 expected In constructor of class B with args x, 123 object(B)#%d (0) { } -object(B)#%d (0) { -} Access to non-public constructor of class C Access to non-public constructor of class D object(E)#%d (0) { diff --git a/ext/reflection/tests/ReflectionClass_newInstance_001.phpt b/ext/reflection/tests/ReflectionClass_newInstance_001.phpt index afa278a9a1..e29cc8734f 100644 --- a/ext/reflection/tests/ReflectionClass_newInstance_001.phpt +++ b/ext/reflection/tests/ReflectionClass_newInstance_001.phpt @@ -42,9 +42,16 @@ $a1 = $rcA->newInstance(); $a2 = $rcA->newInstance('x'); var_dump($a1, $a2); -$b1 = $rcB->newInstance(); -$b2 = $rcB->newInstance('x', 123); -var_dump($b1, $b2); +try { + var_dump($rcB->newInstance()); +} catch (Throwable $e) { + echo "Exception: " . $e->getMessage() . "\n"; +} +try { + var_dump($rcB->newInstance('x', 123)); +} catch (Throwable $e) { + echo "Exception: " . $e->getMessage() . "\n"; +} try { $rcC->newInstance(); @@ -78,20 +85,10 @@ object(A)#%d (0) { } object(A)#%d (0) { } - -Warning: Missing argument 1 for B::__construct() in %s on line 9 - -Warning: Missing argument 2 for B::__construct() in %s on line 9 - -Notice: Undefined variable: a in %s on line 10 - -Notice: Undefined variable: b in %s on line 10 -In constructor of class B with args , +Exception: Too few arguments to function B::__construct(), 0 passed and exactly 2 expected In constructor of class B with args x, 123 object(B)#%d (0) { } -object(B)#%d (0) { -} Access to non-public constructor of class C Access to non-public constructor of class D object(E)#%d (0) { diff --git a/ext/reflection/tests/ReflectionMethod_invokeArgs_error1.phpt b/ext/reflection/tests/ReflectionMethod_invokeArgs_error1.phpt index ac97e3ed2a..c9d1e6379a 100644 --- a/ext/reflection/tests/ReflectionMethod_invokeArgs_error1.phpt +++ b/ext/reflection/tests/ReflectionMethod_invokeArgs_error1.phpt @@ -25,12 +25,9 @@ var_dump($methodWithArgs->invokeArgs($testClassInstance, array())); --EXPECTF-- Method with args: -Warning: Missing argument 1 for TestClass::methodWithArgs() in %s on line %d - -Warning: Missing argument 2 for TestClass::methodWithArgs() in %s on line %d - -Notice: Undefined variable: a in %s on line %d - -Notice: Undefined variable: b in %s on line %d -Called methodWithArgs(, ) -NULL +Fatal error: Uncaught Error: Too few arguments to function TestClass::methodWithArgs(), 0 passed and exactly 2 expected in %sReflectionMethod_invokeArgs_error1.php:5 +Stack trace: +#0 [internal function]: TestClass->methodWithArgs() +#1 %sReflectionMethod_invokeArgs_error1.php(19): ReflectionMethod->invokeArgs(Object(TestClass), Array) +#2 {main} + thrown in %sReflectionMethod_invokeArgs_error1.php on line 5 diff --git a/ext/reflection/tests/ReflectionMethod_invoke_error2.phpt b/ext/reflection/tests/ReflectionMethod_invoke_error2.phpt index a070c8f583..60a9ebae97 100644 --- a/ext/reflection/tests/ReflectionMethod_invoke_error2.phpt +++ b/ext/reflection/tests/ReflectionMethod_invoke_error2.phpt @@ -21,12 +21,9 @@ var_dump($methodWithArgs->invoke($testClassInstance)); --EXPECTF-- Method with args: -Warning: Missing argument 1 for TestClass::methodWithArgs() in %s on line %d - -Warning: Missing argument 2 for TestClass::methodWithArgs() in %s on line %d - -Notice: Undefined variable: a in %s on line %d - -Notice: Undefined variable: b in %s on line %d -Called methodWithArgs(, ) -NULL +Fatal error: Uncaught Error: Too few arguments to function TestClass::methodWithArgs(), 0 passed and exactly 2 expected in %sReflectionMethod_invoke_error2.php:5 +Stack trace: +#0 [internal function]: TestClass->methodWithArgs() +#1 %sReflectionMethod_invoke_error2.php(15): ReflectionMethod->invoke(Object(TestClass)) +#2 {main} + thrown in %sReflectionMethod_invoke_error2.php on line 5 diff --git a/ext/reflection/tests/bug38217.phpt b/ext/reflection/tests/bug38217.phpt index cf007d9547..988f1c8953 100644 --- a/ext/reflection/tests/bug38217.phpt +++ b/ext/reflection/tests/bug38217.phpt @@ -18,7 +18,11 @@ class Object1 { } $class= new ReflectionClass('Object1'); -var_dump($class->newInstanceArgs()); +try { + var_dump($class->newInstanceArgs()); +} catch (Throwable $e) { + echo "Exception: " . $e->getMessage() . "\n"; +} var_dump($class->newInstanceArgs(array('test'))); @@ -27,13 +31,7 @@ echo "Done\n"; --EXPECTF-- object(Object)#%d (0) { } - -Warning: Missing argument 1 for Object1::__construct() in %s on line %d - -Notice: Undefined variable: var in %s on line %d -NULL -object(Object1)#%d (0) { -} +Exception: Too few arguments to function Object1::__construct(), 0 passed and exactly 1 expected string(4) "test" object(Object1)#%d (0) { } |