If the same method name is implemented in a parent class then the subclass can't have more required parameters than that or else we get a compatibility error when the module is loaded. The testsuite wasn't catching this problem because it was no longer trying to load the modules for testcases without _runme.php, because the mechanism to do that relied on there being a generated .php wrapper, which we no longer have by default. Fix that to provide a regression test for this fix. See #2151
58 lines
851 B
PHP
58 lines
851 B
PHP
<?php
|
|
|
|
require "tests.php";
|
|
|
|
// No new functions
|
|
check::functions(array());
|
|
// New classes
|
|
check::classes(array('Foo'));
|
|
// No new vars
|
|
check::globals(array());
|
|
|
|
class MyFoo extends Foo {
|
|
function ping($s) {
|
|
return "MyFoo::ping():" . $s;
|
|
}
|
|
|
|
function pident($arg) {
|
|
return $arg;
|
|
}
|
|
|
|
function vident($v) {
|
|
return $v;
|
|
}
|
|
|
|
function vidents($v) {
|
|
return $v;
|
|
}
|
|
|
|
function vsecond($v1, $v2 = NULL) {
|
|
return $v2;
|
|
}
|
|
}
|
|
|
|
$a = new MyFoo();
|
|
|
|
$a->tping("hello");
|
|
$a->tpong("hello");
|
|
|
|
# TODO: automatic conversion between PHP arrays and std::pair or
|
|
# std::vector is not yet implemented.
|
|
/*$p = array(1, 2);
|
|
$a->pident($p);
|
|
$v = array(3, 4);
|
|
$a->vident($v);
|
|
|
|
$a->tpident($p);
|
|
$a->tvident($v);
|
|
|
|
$v1 = array(3, 4);
|
|
$v2 = array(5, 6);
|
|
|
|
$a->tvsecond($v1, $v2);
|
|
|
|
$vs = array("hi", "hello");
|
|
$vs;
|
|
$a->tvidents($vs);*/
|
|
|
|
check::done();
|