diff options
| author | Joe Watkins <krakjoe@php.net> | 2019-10-21 09:23:44 +0200 |
|---|---|---|
| committer | Joe Watkins <krakjoe@php.net> | 2019-10-21 09:24:41 +0200 |
| commit | 1ac961bea85930d9c71bcca349ee4b9d84edd3b8 (patch) | |
| tree | 6e933ddeaf6a6d86c115639021320ec96e5e10a5 /ext/reflection | |
| parent | d517c559fcd1e2746476c0a4cab0ecd7a6f075b2 (diff) | |
| parent | 1c9b62fbd43599528d016f190ef2d25446db0051 (diff) | |
| download | php-git-1ac961bea85930d9c71bcca349ee4b9d84edd3b8.tar.gz | |
Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3:
Fix bug #78697: inaccurate error message
Diffstat (limited to 'ext/reflection')
| -rw-r--r-- | ext/reflection/php_reflection.c | 2 | ||||
| -rw-r--r-- | ext/reflection/tests/ReflectionClass_implementsInterface_001.phpt | 60 | ||||
| -rw-r--r-- | ext/reflection/tests/bug78697.phpt | 14 |
3 files changed, 45 insertions, 31 deletions
diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c index e7df9bfa61..94b2709763 100644 --- a/ext/reflection/php_reflection.c +++ b/ext/reflection/php_reflection.c @@ -5020,7 +5020,7 @@ ZEND_METHOD(reflection_class, implementsInterface) if (!(interface_ce->ce_flags & ZEND_ACC_INTERFACE)) { zend_throw_exception_ex(reflection_exception_ptr, 0, - "Interface %s is a Class", ZSTR_VAL(interface_ce->name)); + "%s is not an interface", ZSTR_VAL(interface_ce->name)); return; } RETURN_BOOL(instanceof_function(ce, interface_ce)); diff --git a/ext/reflection/tests/ReflectionClass_implementsInterface_001.phpt b/ext/reflection/tests/ReflectionClass_implementsInterface_001.phpt index 91398867ec..d1cbc8ae47 100644 --- a/ext/reflection/tests/ReflectionClass_implementsInterface_001.phpt +++ b/ext/reflection/tests/ReflectionClass_implementsInterface_001.phpt @@ -67,14 +67,14 @@ try { ?> --EXPECTF-- Does A implement A? - - Using object argument: Interface A is a Class - - Using string argument: Interface A is a Class + - Using object argument: A is not an interface + - Using string argument: A is not an interface Does A implement B? - - Using object argument: Interface B is a Class - - Using string argument: Interface B is a Class + - Using object argument: B is not an interface + - Using string argument: B is not an interface Does A implement C? - - Using object argument: Interface C is a Class - - Using string argument: Interface C is a Class + - Using object argument: C is not an interface + - Using string argument: C is not an interface Does A implement I1? - Using object argument: bool(true) - Using string argument: bool(true) @@ -82,14 +82,14 @@ Does A implement I2? - Using object argument: bool(false) - Using string argument: bool(false) Does B implement A? - - Using object argument: Interface A is a Class - - Using string argument: Interface A is a Class + - Using object argument: A is not an interface + - Using string argument: A is not an interface Does B implement B? - - Using object argument: Interface B is a Class - - Using string argument: Interface B is a Class + - Using object argument: B is not an interface + - Using string argument: B is not an interface Does B implement C? - - Using object argument: Interface C is a Class - - Using string argument: Interface C is a Class + - Using object argument: C is not an interface + - Using string argument: C is not an interface Does B implement I1? - Using object argument: bool(true) - Using string argument: bool(true) @@ -97,14 +97,14 @@ Does B implement I2? - Using object argument: bool(false) - Using string argument: bool(false) Does C implement A? - - Using object argument: Interface A is a Class - - Using string argument: Interface A is a Class + - Using object argument: A is not an interface + - Using string argument: A is not an interface Does C implement B? - - Using object argument: Interface B is a Class - - Using string argument: Interface B is a Class + - Using object argument: B is not an interface + - Using string argument: B is not an interface Does C implement C? - - Using object argument: Interface C is a Class - - Using string argument: Interface C is a Class + - Using object argument: C is not an interface + - Using string argument: C is not an interface Does C implement I1? - Using object argument: bool(true) - Using string argument: bool(true) @@ -112,14 +112,14 @@ Does C implement I2? - Using object argument: bool(true) - Using string argument: bool(true) Does I1 implement A? - - Using object argument: Interface A is a Class - - Using string argument: Interface A is a Class + - Using object argument: A is not an interface + - Using string argument: A is not an interface Does I1 implement B? - - Using object argument: Interface B is a Class - - Using string argument: Interface B is a Class + - Using object argument: B is not an interface + - Using string argument: B is not an interface Does I1 implement C? - - Using object argument: Interface C is a Class - - Using string argument: Interface C is a Class + - Using object argument: C is not an interface + - Using string argument: C is not an interface Does I1 implement I1? - Using object argument: bool(true) - Using string argument: bool(true) @@ -127,14 +127,14 @@ Does I1 implement I2? - Using object argument: bool(false) - Using string argument: bool(false) Does I2 implement A? - - Using object argument: Interface A is a Class - - Using string argument: Interface A is a Class + - Using object argument: A is not an interface + - Using string argument: A is not an interface Does I2 implement B? - - Using object argument: Interface B is a Class - - Using string argument: Interface B is a Class + - Using object argument: B is not an interface + - Using string argument: B is not an interface Does I2 implement C? - - Using object argument: Interface C is a Class - - Using string argument: Interface C is a Class + - Using object argument: C is not an interface + - Using string argument: C is not an interface Does I2 implement I1? - Using object argument: bool(true) - Using string argument: bool(true) diff --git a/ext/reflection/tests/bug78697.phpt b/ext/reflection/tests/bug78697.phpt new file mode 100644 index 0000000000..b35d0f4d4e --- /dev/null +++ b/ext/reflection/tests/bug78697.phpt @@ -0,0 +1,14 @@ +--TEST-- +Bug #78697: ReflectionClass::implementsInterface - inaccurate error message with traits +--FILE-- +<?php +trait T {} + +try { + (new ReflectionClass(new stdClass))->implementsInterface(T::class); +} catch (ReflectionException $e) { + echo $e->getMessage(); +} +?> +--EXPECT-- +T is not an interface |
