[php] Use -prefix setting in type declarations
This commit is contained in:
parent
c417250b4e
commit
d43f28a666
3 changed files with 16 additions and 3 deletions
|
|
@ -2,10 +2,10 @@
|
||||||
|
|
||||||
require "tests.php";
|
require "tests.php";
|
||||||
|
|
||||||
// No new functions
|
// New functions
|
||||||
check::functions(array());
|
check::functions(array('self'));
|
||||||
// New classes
|
// New classes
|
||||||
check::classes(array('ProjectBar','ProjectFoo'));
|
check::classes(array('Project','ProjectBar','ProjectFoo'));
|
||||||
// No new vars
|
// No new vars
|
||||||
check::globals(array());
|
check::globals(array());
|
||||||
|
|
||||||
|
|
@ -13,4 +13,6 @@ $f = new ProjectFoo();
|
||||||
// This resulted in "Fatal error: Class 'Foo' not found"
|
// This resulted in "Fatal error: Class 'Foo' not found"
|
||||||
$f->get_self();
|
$f->get_self();
|
||||||
|
|
||||||
|
Project::self(new ProjectBar());
|
||||||
|
|
||||||
check::done();
|
check::done();
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,16 @@ public:
|
||||||
// __set and __isset methods weren't getting the prefix.
|
// __set and __isset methods weren't getting the prefix.
|
||||||
class Bar : public Foo {
|
class Bar : public Foo {
|
||||||
public:
|
public:
|
||||||
|
Bar *get_self() {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// This failed in git pre 4.1.0 with PHP 8.x because we weren't adding the
|
||||||
|
// prefix to class names in type declarations. Error was at extension load
|
||||||
|
// time:
|
||||||
|
//
|
||||||
|
// Fatal error: Bar must be registered before ProjectBar in Unknown on line 0
|
||||||
|
Bar* self(Bar* bar) { return bar->get_self(); }
|
||||||
|
|
||||||
%}
|
%}
|
||||||
|
|
|
||||||
|
|
@ -246,6 +246,7 @@ public:
|
||||||
Append(result, c);
|
Append(result, c);
|
||||||
} else {
|
} else {
|
||||||
if (Len(classtypes) > 0) Append(classtypes, "|");
|
if (Len(classtypes) > 0) Append(classtypes, "|");
|
||||||
|
Append(classtypes, prefix);
|
||||||
Append(classtypes, i.item);
|
Append(classtypes, i.item);
|
||||||
}
|
}
|
||||||
prev = i.item;
|
prev = i.item;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue