bug60573.phpt 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. --TEST--
  2. Bug #60573 (type hinting with "self" keyword causes weird errors)
  3. --FILE--
  4. <?php
  5. class Foo1 {
  6. public function setSelf(self $s) { }
  7. }
  8. class Bar1 extends Foo1 {
  9. public function setSelf(parent $s) { }
  10. }
  11. class Foo2 {
  12. public function setSelf(Foo2 $s) { }
  13. }
  14. class Bar2 extends Foo2 {
  15. public function setSelf(parent $s) { }
  16. }
  17. class Base {
  18. }
  19. class Foo3 extends Base{
  20. public function setSelf(parent $s) { }
  21. }
  22. class Bar3 extends Foo3 {
  23. public function setSelf(Base $s) { }
  24. }
  25. class Foo4 {
  26. public function setSelf(self $s) { }
  27. }
  28. class Bar4 extends Foo4 {
  29. public function setSelf(self $s) { }
  30. }
  31. class Foo5 extends Base {
  32. public function setSelf(parent $s) { }
  33. }
  34. class Bar5 extends Foo5 {
  35. public function setSelf(parent $s) { }
  36. }
  37. abstract class Foo6 extends Base {
  38. abstract public function setSelf(parent $s);
  39. }
  40. class Bar6 extends Foo6 {
  41. public function setSelf(Foo6 $s) { }
  42. }
  43. --EXPECTF--
  44. Warning: Declaration of Bar4::setSelf(Bar4 $s) should be compatible with Foo4::setSelf(Foo4 $s) in %sbug60573.php on line %d
  45. Warning: Declaration of Bar5::setSelf(Foo5 $s) should be compatible with Foo5::setSelf(Base $s) in %sbug60573.php on line %d
  46. Fatal error: Declaration of Bar6::setSelf(Foo6 $s) must be compatible with Foo6::setSelf(Base $s) in %sbug60573.php on line %d