Niels Dossche
f0f666ba3f
Fix GH-16601: Memory leak in Reflection constructors
...
Additionally fixes wrong behaviour in ReflectionParameter when you first
have a construction that uses an object and the subsequent doesn't.
Closes GH-16672.
2024-11-02 19:35:20 +01:00
Daniel Scherzer
331da7e869
Fix GH-16187: ReflectionClass::__toString() with packed properties hash table
...
Closes GH-16192.
2024-10-05 10:18:11 +02:00
Niels Dossche
552ea62e1f
Fix GH-13517: Multiple test failures when building with --with-expat
...
The reflection failure is because the XML extension is used to check the
module dependency information, but that extension can be configured to
not depend on ext/libxml, resulting in a different output. The solution
is to check another extension instead.
The test failures in ext/xml/tests are because of different behaviour
between libxml2 and Expat error handling. These are expected differences
and the solution is to split the tests.
Closes GH-13522.
2024-02-27 21:49:01 +01:00
Niels Dossche
d8cd0f4ba0
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
Fix GH-12392: Segmentation fault on SoapClient::__getTypes
Fix GH-11121: ReflectionFiber segfault
[ci skip] NEWS
2023-10-11 17:23:17 +02:00
Daniil Gentili
71f14510f6
Fix GH-11121: ReflectionFiber segfault
...
Closes GH-12391.
Co-authored-by: Aaron Piotrowski <aaron@trowski.com >
2023-10-11 17:19:01 +02:00
Ilija Tovilo
9437aa9a8e
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
Fix segfault in format_default_value due to unexpected enum/object
2023-08-17 18:43:49 +02:00
Ilija Tovilo
f78d1d0d10
Fix segfault in format_default_value due to unexpected enum/object
...
Evaluating constants at comptime can result in arrays that contain objects. This
is problematic for printing the default value of constant ASTs containing
objects, because we don't actually know what the constructor arguments were.
Avoid this by not propagating array constants.
Fixes GH-11937
Closes GH-11947
2023-08-17 18:43:11 +02:00
Ilija Tovilo
f1818d726f
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
Fix segfault when using ReflectionFiber (fixes #10439 )
2023-02-23 23:27:55 +01:00
Daniil Gentili
8d1c0a1403
Fix segfault when using ReflectionFiber ( fixes #10439 )
...
Closes GH-10478
2023-02-23 23:20:27 +01:00
David Carlier
2f4ba1b1fb
Merge branch 'PHP-8.1' into PHP-8.2
2023-02-19 20:30:59 +00:00
Niels Dossche
ae16471628
Fix GH-10623: ReflectionFunction::getClosureUsedVariables() returns empty array in presence of variadic arguments
...
The code was missing the handling for the RECV_VARIADIC instruction.
Additional regression test for GH-10623
Co-authored-by: Fabio Ivona <fabio.ivona@defstudio.it >
2023-02-19 20:18:28 +00:00
George Peter Banyard
0b0259a418
Convert Implicitly nullable pure intersection types to DNF
...
If we don't then Reflection would give us a ReflectionIntersectionType even if the type is currently displayed as (X&Y)|null
2022-10-24 11:39:54 +01:00
Ilija Tovilo
a85c757dcb
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
Private method incorrectly marked as "overwrites" in reflection
2022-09-08 10:44:32 +02:00
Ilija Tovilo
a795f3ebc6
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
Private method incorrectly marked as "overwrites" in reflection
2022-09-08 10:44:13 +02:00
Ilija Tovilo
1435fc6262
Private method incorrectly marked as "overwrites" in reflection
...
Fix GH-9409
Closes GH-9469
2022-09-08 10:43:25 +02:00
Arnaud Le Blanc
dcde9b85a6
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
[ci skip] NEWS
[ci skip] NEWS
Add tests
Fix GH-8932: Provide a way to get the called-scope of closures (#9299 )
2022-09-02 13:55:57 +02:00
Arnaud Le Blanc
409baac29c
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
[ci skip] NEWS
Add tests
Fix GH-8932: Provide a way to get the called-scope of closures (#9299 )
2022-09-02 13:53:14 +02:00
Arnaud Le Blanc
db1ef97209
Add tests
2022-09-02 13:33:21 +02:00
Nicolas Grekas
93f11d8429
Fix GH-8932: Provide a way to get the called-scope of closures ( #9299 )
...
Co-authored-by: Christoph M. Becker <cmbecker69@gmx.de >
2022-09-02 13:32:50 +02:00
Ilija Tovilo
d36874d002
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
Fix class name FQN when AST dumping new and class const
2022-09-02 08:58:27 +02:00
Ilija Tovilo
2cfb028e22
Fix class name FQN when AST dumping new and class const
...
Fixes GH-9447
Closes GH-9462
2022-09-02 08:57:26 +02:00
Ilija Tovilo
2152bb2dfa
Merge branch 'PHP-8.1'
...
* PHP-8.1:
Fix attribute target validation on fake closures
2022-07-29 12:15:38 +02:00
Ilija Tovilo
565a416e87
Fix attribute target validation on fake closures
...
Fixes GH-8982
Closes GH-9173
2022-07-29 12:14:44 +02:00
Dmitry Stogov
c6eb5dc5fd
Fix possible crash in case of exception
...
Fixes oss-fuzz #49068
2022-07-18 15:40:11 +03:00
George Peter Banyard
f905590764
Add support for Disjoint Normal Form (DNF) types ( #8725 )
...
RFC: https://wiki.php.net/rfc/dnf_types
This allows to combine union and intersection types together in the following form (A&B)|(X&Y)|T but not of the form (X|A)&(Y|B) or (X|A)&(Y|B)|T.
* Improve union type parsing
Co-authored-by: Sara Golemon <pollita@php.net >
2022-07-08 11:30:23 +01:00
Pierrick Charron
4dd66b8ce0
Merge branch 'PHP-8.1'
...
* PHP-8.1:
Fixed bug GH-8943 Reflection::getModifiersNames() with readonly modifier
2022-07-07 17:03:25 -04:00
Pierrick Charron
c650e67c90
Fixed bug GH-8943 Reflection::getModifiersNames() with readonly modifier
2022-07-07 16:59:54 -04:00
George Peter Banyard
0ae6a67550
Add true as a type ( #8326 )
...
RFC: https://wiki.php.net/rfc/true-type
2022-06-12 23:28:19 +01:00
George Peter Banyard
b40ae80804
Convert iterable into an internal alias for Traversable|array ( #7309 )
...
This does a compile time transformation of ``iterable`` into ``Traversable|array`` which simplifies some of the LSP variance handling.
The arginfo generation script from stubs is updated to produce a union type when it encounters the type ``iterable``
Extension functions which do not regenerate the arginfo, or write them manually are still supported by mimicking the compile time transformation while registering the function.
Type Reflection is preserved for single ``iterable`` (and ``?iterable``) to produce a ReflectionNamedType with name ``iterable``, however usage of ``iterable`` in union types will be converted to ``array|Traversable``
2022-06-07 13:35:34 +01:00
Dmitry Stogov
7451b8b6b0
Merge branch 'PHP-8.1'
...
* PHP-8.1:
Fix memory leak
2022-06-06 11:38:37 +03:00
Dmitry Stogov
74744f3c0d
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
Fix memory leak
2022-06-06 11:38:29 +03:00
Dmitry Stogov
088e5677fb
Fix memory leak
...
This fixes oss-fuzz #47791
2022-06-06 11:35:01 +03:00
Máté Kocsis
7850c10389
Add support for readonly classes ( #7305 )
...
RFC: https://wiki.php.net/rfc/readonly_classes
2022-05-16 20:40:23 +02:00
Ollie Read
f590782b60
Add ReflectionMethod::hasPrototype method
...
Closes GH-8487.
2022-05-09 16:48:54 +02:00
Nicolas Grekas
be11bcb0b1
Add ReflectionFunction::isAnonymous()
...
Closes GH-8499.
2022-05-09 12:56:10 +02:00
Máté Kocsis
fc04a6ebdd
Throw when calling ReflectionAttribute::__construct()
...
ReflectionAttribute::__construct() accepted any number of parameters until now, because parameter validation was missing. Even though this was unlikely to be an issue in practice (since the method is private), the problem is fixed by always throwing an exception.
2022-05-03 21:23:22 +02:00
Ilija Tovilo
90a845c13f
Merge branch 'PHP-8.1'
...
* PHP-8.1:
Fix ReflectionProperty::__toString() of properties containing enums
2022-04-29 10:22:08 +02:00
Ilija Tovilo
1944c14ce7
Fix ReflectionProperty::__toString() of properties containing enums
...
Fix GH-8444
2022-04-28 19:48:23 +02:00
George Peter Banyard
6039c07a3a
Allow `null and false` as standalone types ( #7546 )
...
RFC: https://wiki.php.net/rfc/null-standalone-type
Also a drive-by consistency fix for error messages.
2022-04-08 17:23:52 +01:00
Christoph M. Becker
c8720568ec
Merge branch 'PHP-8.1'
...
* PHP-8.1:
Fix GH-8080: ReflectionClass::getConstants() depends on def. order
2022-02-28 10:12:23 +01:00
Christoph M. Becker
27d2fddf6a
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
Fix GH-8080: ReflectionClass::getConstants() depends on def. order
2022-02-28 10:11:29 +01:00
Christoph M. Becker
0d266a24d6
Fix GH-8080: ReflectionClass::getConstants() depends on def. order
...
When we need to evaluate constant ASTs, we always have to do that in
the scope where the constant has been defined, which may be a parent
of the `ReflectionClass`'s scope.
Closes GH-8106.
2022-02-28 10:08:47 +01:00
Christoph M. Becker
2658925e60
Merge branch 'PHP-8.1'
...
* PHP-8.1:
Fix #81681 : ReflectionEnum throwing exceptions
2021-12-02 23:22:47 +01:00
Christoph M. Becker
59dd4fd742
Fix #81681 : ReflectionEnum throwing exceptions
...
Enums are neither instantiable nor cloneable.
Closes GH-7707.
2021-12-02 23:22:07 +01:00
Nikita Popov
902d64390e
Deprecate implicit dynamic properties
...
Writing to a proprety that hasn't been declared is deprecated,
unless the class uses the #[AllowDynamicProperties] attribute or
defines __get()/__set().
RFC: https://wiki.php.net/rfc/deprecate_dynamic_properties
2021-11-26 14:10:11 +01:00
Nikita Popov
f51eb15799
Merge branch 'PHP-8.1'
...
* PHP-8.1:
Fix bug #81611
Extract code for reporting a zend_fetch_class() error
2021-11-16 14:40:37 +01:00
Cameron Porter
812df2bd8a
Fix bug #81611
...
Add zend_fetch_class_with_scope() which accepts a scope to use for
self/parent, and use that during constant expression evaluation.
Closes GH-7649.
2021-11-16 14:40:06 +01:00
Nikita Popov
d362caed2c
Merge branch 'PHP-8.1'
...
* PHP-8.1:
Fix generation of property with class union type
Replace SKIPIF with EXTENSIONS
2021-11-15 11:05:52 +01:00
Nikita Popov
68ca3879d7
Fix generation of property with class union type
...
The generated type was missing the UNION bit. Add a ZEND_TYPE_INIT_UNION
macro to hide the implementation details.
2021-11-15 11:04:48 +01:00
Nikita Popov
c0441f9377
Replace SKIPIF with EXTENSIONS
2021-11-15 10:45:25 +01:00