Revert "Fix PHP parameter type declarations compatibility"
I missed that this change breaks cpp_static, which seems to be to do
with handling the combined getter and setter we emit for static
member variables. Reverting while I figure out how to handle that.
This reverts commit a277748870.
This commit is contained in:
parent
a277748870
commit
d43d62cd7a
2 changed files with 34 additions and 156 deletions
|
|
@ -1,79 +0,0 @@
|
|||
<?php
|
||||
require "tests.php";
|
||||
|
||||
// No new functions
|
||||
check::functions(array());
|
||||
// New classes
|
||||
check::classes(array('director_classes', 'Base', 'BaseClass', 'Caller', 'Derived', 'DerivedClass', 'DoubleHolder'));
|
||||
// New vars
|
||||
check::globals(array('PrintDebug'));
|
||||
|
||||
class PHPDerived extends Base {
|
||||
function Val(DoubleHolder $x) { return $x; }
|
||||
function Ref(DoubleHolder $x) { return $x; }
|
||||
function Ptr(?DoubleHolder $x) { var_dump($x); return $x; }
|
||||
function ConstPtrRef(?DoubleHolder $x) { return $x; }
|
||||
function FullyOverloaded($x) {
|
||||
$rv = parent::FullyOverloaded($x);
|
||||
$rv = preg_replace('/Base/', 'PHPDerived', $rv);
|
||||
return $rv;
|
||||
}
|
||||
function SemiOverloaded($x) {
|
||||
# this is going to be awkward because we can't really
|
||||
# semi-overload in PHP, but we can sort of fake it.
|
||||
if (!is_int($x)) {
|
||||
return parent::SemiOverloaded($x);
|
||||
}
|
||||
$rv = parent::SemiOverloaded($x);
|
||||
$rv = preg_replace('/Base/', 'PHPDerived', $rv);
|
||||
return $rv;
|
||||
}
|
||||
function DefaultParms(int $x, float $y = 1.1) {
|
||||
$rv = parent::DefaultParms($x, $y);
|
||||
$rv = preg_replace('/Base/', 'PHPDerived', $rv);
|
||||
return $rv;
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
$c = new Caller();
|
||||
makeCalls($c, new Base(100.0));
|
||||
makeCalls($c, new Derived(200.0));
|
||||
makeCalls($c, new PHPDerived(300.0));
|
||||
}
|
||||
|
||||
function makeCalls($caller, $base) {
|
||||
$bname = get_class($base);
|
||||
if ($bname == 'PHPDerived') {
|
||||
// TODO: Debug and make this work:
|
||||
return;
|
||||
}
|
||||
$caller->set($base);
|
||||
$dh = new DoubleHolder(444.555);
|
||||
check::equal($caller->ValCall($dh)->val, $dh->val, "$bname.Val");
|
||||
check::equal($caller->RefCall($dh)->val, $dh->val, "$bname.Ref");
|
||||
check::equal($caller->PtrCall($dh)->val, $dh->val, "$bname.Ptr");
|
||||
check::equal($caller->ConstPtrRefCall($dh)->val, $dh->val, "$bname.ConstPtrRef");
|
||||
check::equal($caller->FullyOverloadedCall(1),
|
||||
"${bname}::FullyOverloaded(int)",
|
||||
"$bname.FullyOverloaded(int)");
|
||||
check::equal($caller->FullyOverloadedCall(false),
|
||||
"${bname}::FullyOverloaded(bool)",
|
||||
"$bname.FullyOverloaded(bool)");
|
||||
// This next one is TODO for Perl with PerlDerived.
|
||||
check::equal($caller->SemiOverloadedCall(-678),
|
||||
"${bname}::SemiOverloaded(int)",
|
||||
"$bname.SemiOverloaded(int)");
|
||||
check::equal($caller->SemiOverloadedCall(false),
|
||||
"Base::SemiOverloaded(bool)",
|
||||
"$bname.SemiOverloaded(bool)");
|
||||
check::equal($caller->DefaultParmsCall(10, 2.2),
|
||||
"${bname}::DefaultParms(int, double)",
|
||||
"$bname.DefaultParms(int, double)");
|
||||
check::equal($caller->DefaultParmsCall(10),
|
||||
"${bname}::DefaultParms(int)",
|
||||
"$bname.DefaultParms(int)");
|
||||
$caller->reset();
|
||||
}
|
||||
|
||||
check::done();
|
||||
Loading…
Add table
Add a link
Reference in a new issue