mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
Don't print preload warning for non-top-level classes
Dynamically declared classes categorically do not get linked during preloading, even if all their dependencies are known. The warning is misleading in this case, and there isn't anything the user can do to address it.
This commit is contained in:
parent
b5746a4c7f
commit
b1b0c81e39
8 changed files with 3 additions and 16 deletions
|
@ -4034,7 +4034,8 @@ static void preload_link(void)
|
||||||
if (ce->type == ZEND_INTERNAL_CLASS) {
|
if (ce->type == ZEND_INTERNAL_CLASS) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (!(ce->ce_flags & ZEND_ACC_LINKED)) {
|
if ((ce->ce_flags & (ZEND_ACC_TOP_LEVEL|ZEND_ACC_ANON_CLASS))
|
||||||
|
&& !(ce->ce_flags & ZEND_ACC_LINKED)) {
|
||||||
zend_string *key = zend_string_tolower(ce->name);
|
zend_string *key = zend_string_tolower(ce->name);
|
||||||
if (!(ce->ce_flags & ZEND_ACC_ANON_CLASS)
|
if (!(ce->ce_flags & ZEND_ACC_ANON_CLASS)
|
||||||
&& zend_hash_exists(EG(class_table), key)) {
|
&& zend_hash_exists(EG(class_table), key)) {
|
||||||
|
|
|
@ -18,8 +18,6 @@ class Bar {
|
||||||
var_dump(foo());
|
var_dump(foo());
|
||||||
?>
|
?>
|
||||||
--EXPECTF--
|
--EXPECTF--
|
||||||
Warning: Can't preload unlinked class Foo: Unknown parent Bar in %spreload_bug78937.inc on line 6
|
|
||||||
|
|
||||||
Warning: Can't preload unlinked class Bar@anonymous: Unknown parent Bar in %spreload_bug78937.inc on line 3
|
Warning: Can't preload unlinked class Bar@anonymous: Unknown parent Bar in %spreload_bug78937.inc on line 3
|
||||||
object(Bar@anonymous)#%d (0) {
|
object(Bar@anonymous)#%d (0) {
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,8 +19,6 @@ class Bar {
|
||||||
var_dump(foo());
|
var_dump(foo());
|
||||||
?>
|
?>
|
||||||
--EXPECTF--
|
--EXPECTF--
|
||||||
Warning: Can't preload unlinked class Foo: Unknown parent Bar in %spreload_bug78937.inc on line 6
|
|
||||||
|
|
||||||
Warning: Can't preload unlinked class Bar@anonymous: Unknown parent Bar in %spreload_bug78937.inc on line 3
|
Warning: Can't preload unlinked class Bar@anonymous: Unknown parent Bar in %spreload_bug78937.inc on line 3
|
||||||
object(Bar@anonymous)#%d (0) {
|
object(Bar@anonymous)#%d (0) {
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,8 +17,6 @@ include(__DIR__ . "/preload_bug78937.inc");
|
||||||
var_dump(foo());
|
var_dump(foo());
|
||||||
?>
|
?>
|
||||||
--EXPECTF--
|
--EXPECTF--
|
||||||
Warning: Can't preload unlinked class Foo: Unknown parent Bar in %spreload_bug78937.inc on line 6
|
|
||||||
|
|
||||||
Warning: Can't preload unlinked class Bar@anonymous: Unknown parent Bar in %spreload_bug78937.inc on line 3
|
Warning: Can't preload unlinked class Bar@anonymous: Unknown parent Bar in %spreload_bug78937.inc on line 3
|
||||||
|
|
||||||
Fatal error: Uncaught Error: Class "Bar" not found in %spreload_bug78937.inc:3
|
Fatal error: Uncaught Error: Class "Bar" not found in %spreload_bug78937.inc:3
|
||||||
|
|
|
@ -19,8 +19,6 @@ bar();
|
||||||
var_dump(new Foo);
|
var_dump(new Foo);
|
||||||
?>
|
?>
|
||||||
--EXPECTF--
|
--EXPECTF--
|
||||||
Warning: Can't preload unlinked class Foo: Unknown parent Bar in %spreload_bug78937.inc on line 6
|
|
||||||
|
|
||||||
Warning: Can't preload unlinked class Bar@anonymous: Unknown parent Bar in %spreload_bug78937.inc on line 3
|
Warning: Can't preload unlinked class Bar@anonymous: Unknown parent Bar in %spreload_bug78937.inc on line 3
|
||||||
object(Foo)#%d (0) {
|
object(Foo)#%d (0) {
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,8 +20,6 @@ bar();
|
||||||
var_dump(new Foo);
|
var_dump(new Foo);
|
||||||
?>
|
?>
|
||||||
--EXPECTF--
|
--EXPECTF--
|
||||||
Warning: Can't preload unlinked class Foo: Unknown parent Bar in %spreload_bug78937.inc on line 6
|
|
||||||
|
|
||||||
Warning: Can't preload unlinked class Bar@anonymous: Unknown parent Bar in %spreload_bug78937.inc on line 3
|
Warning: Can't preload unlinked class Bar@anonymous: Unknown parent Bar in %spreload_bug78937.inc on line 3
|
||||||
object(Foo)#%d (0) {
|
object(Foo)#%d (0) {
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,8 +18,6 @@ bar();
|
||||||
var_dump(new Foo);
|
var_dump(new Foo);
|
||||||
?>
|
?>
|
||||||
--EXPECTF--
|
--EXPECTF--
|
||||||
Warning: Can't preload unlinked class Foo: Unknown parent Bar in %spreload_bug78937.inc on line 6
|
|
||||||
|
|
||||||
Warning: Can't preload unlinked class Bar@anonymous: Unknown parent Bar in %spreload_bug78937.inc on line 3
|
Warning: Can't preload unlinked class Bar@anonymous: Unknown parent Bar in %spreload_bug78937.inc on line 3
|
||||||
|
|
||||||
Fatal error: Uncaught Error: Class "Bar" not found in %spreload_bug78937.inc:6
|
Fatal error: Uncaught Error: Class "Bar" not found in %spreload_bug78937.inc:6
|
||||||
|
|
|
@ -17,9 +17,7 @@ var_dump(MyEnum::Foo);
|
||||||
var_dump(MyEnum::Bar);
|
var_dump(MyEnum::Bar);
|
||||||
|
|
||||||
?>
|
?>
|
||||||
--EXPECTF--
|
--EXPECT--
|
||||||
enum(MyEnum::Bar)
|
enum(MyEnum::Bar)
|
||||||
|
|
||||||
Warning: Can't preload unlinked class MyEnum2: Unknown reason in %s on line %d
|
|
||||||
enum(MyEnum::Foo)
|
enum(MyEnum::Foo)
|
||||||
enum(MyEnum::Bar)
|
enum(MyEnum::Bar)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue