diff options
author | Fabien Villepinte <fabien.villepinte@gmail.com> | 2019-10-19 21:27:37 +0200 |
---|---|---|
committer | Joe Watkins <krakjoe@php.net> | 2019-10-21 09:22:09 +0200 |
commit | bea2ff88c9536ffd157c5fa304bd29a9cee85524 (patch) | |
tree | 82cc3fdab898f9876750c716b5fb27e7fbd1073b /ext/reflection | |
parent | 45a7723267741be4867306d18b15a4a27d67b0f7 (diff) | |
download | php-git-bea2ff88c9536ffd157c5fa304bd29a9cee85524.tar.gz |
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 012f23982d..fe5f2178c6 100644 --- a/ext/reflection/php_reflection.c +++ b/ext/reflection/php_reflection.c @@ -5140,7 +5140,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 |