1
0
mirror of https://github.com/php/php-src.git synced 2026-04-24 16:38:25 +02:00
Commit Graph

107 Commits

Author SHA1 Message Date
Pierrick Charron 6fd2b39397 Indent with TAB in .h files generated by gen_stub 2022-06-13 08:55:54 -04: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
Máté Kocsis b2ed625de1 A few cleanup changes for gen_stub.php 2022-06-06 07:43:56 +02:00
Máté Kocsis debd38f851 Add support for sensitive parameters in stubs 2022-06-04 18:15:05 +02:00
Máté Kocsis a420ee6c34 Update PHP-Parser to 4.14
It supports readonly classes
2022-06-01 16:09:57 +02:00
Máté Kocsis b7b5ad7169 Make ini_set invocation compatible with PHP 8.0 2022-05-31 08:52:35 +02:00
Máté Kocsis 14da1cb909 Add support for class constants in stubs (#7434) 2022-05-22 22:27:23 +02: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
Ilija Tovilo 9a90bd7054 Deprecate ${} string interpolation
https://wiki.php.net/rfc/deprecate_dollar_brace_string_interpolation
2022-05-05 10:14:56 +02:00
Máté Kocsis c345b6ee72 Remove unused variable from gen_stub.php 2022-04-13 09:24:08 +02:00
George Peter Banyard 7710f9946b Fix generation of arginfo if type is just null 2022-04-11 16:58:13 +01:00
George Peter Banyard c12da039b5 Add null and false support to gen_stubs 2022-04-11 14:04:37 +01:00
Derick Rethans 0e65e433a9 Merge branch 'PHP-8.1' 2022-02-15 13:28:07 +00:00
Tyson Andre 0fab520ded Fix zend_register_internal_class_ex alias generation (#8091)
This wouldn't work for creating aliases in a namespace.

It would create the class alias "MyNS_ClassName" instead of
"MyNS\\ClassName"
2022-02-14 17:58:26 -05:00
Tyson Andre b27d2fffbc Update php-parser to 4.13.2 in build/gen_stub.php (#7989)
v4.13.2 fixes a deprecation notice in php 8.2 for namespacedName
2022-01-22 12:34:50 -05:00
Máté Kocsis 266667c234 Merge branch 'PHP-8.1'
* PHP-8.1:
  Add support for custom property links
2022-01-07 08:29:22 +01:00
Máté Kocsis 62e4ac9439 Add support for custom property links
Closes GH-7892
2022-01-07 08:28:26 +01:00
Máté Kocsis b9e8d93a5c Merge branch 'PHP-8.1'
* PHP-8.1:
  Fix class synopsis generation
2022-01-06 18:32:43 +01:00
Máté Kocsis 0462719999 Fix class synopsis generation
Closes GH-7891
2022-01-06 18:31:21 +01:00
Tyson Andre 32e2d97a26 Allow internal functions to declare if they support compile-time evaluation, add functions. (#7780)
https://wiki.php.net/rfc/strtolower-ascii means that these functions no longer
depend on the current locale in php 8.2. Before that, this was unsafe to
evaluate at compile time.

Followup to GH-7506

Add strcmp/strcasecmp/strtolower/strtoupper functions

Add bin2hex/hex2bin and related functions

Update test of garbage collection using strtolower to use something else to create a refcounted string
2021-12-20 09:27:06 -05:00
Máté Kocsis baac970817 Add the --generate-optimizer-info option to the help of gen_stub.php 2021-11-17 10:56:27 +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 dd0ec7a554 Update PHP-Parser version in gen_stub
This should address the octal issue encountered in #7610.
2021-11-03 12:41:26 +01:00
Máté Kocsis 8168d312f9 Fix a few more classsynopsis generation issues
Closes GH-7480
2021-09-22 23:09:43 +02:00
Máté Kocsis ea9f943d33 Change gen-stub.php to gen_stub.php in help text 2021-09-12 17:09:56 +02:00
Máté Kocsis 73063db5c8 Fix documentation generation when legacy arginfo is generated
When legacy arginfo is generated, all the type info gets lost. Since this task is performed before any other additional functionalities of gen_stub.php (e.g. verification, method synopsis and class synopsis generation), these fail as they would require the missing type information.

The issue is fixed by deep cloning the file info objects (albeit only their affected properties), so that we use those for legacy arginfo generation, leaving the original ones untouched.
2021-09-12 11:42:22 +02:00
Máté Kocsis 4c9892d1e3 Fix class synopsis generation for interfaces
We have to generate <ooclass> elements for interfaces (rather than <oointerface>) in a number of places: directly inside the <classsynopsis> element and in the extends list.
2021-09-08 12:23:00 +02:00
Máté Kocsis f588764292 Improve class synopsis root element generation
Besides classrefs, we also have exceptionrefs. Also, the 4th capture group replacement used to be unintentionally duplicated.
2021-09-08 10:40:14 +02:00
Máté Kocsis 4483ecf5a9 Properly escape the default value of string properties and enum cases 2021-09-02 16:53:31 +02:00
Máté Kocsis edf2947a5d Remove unused variable from property generation code 2021-08-31 14:44:41 +02:00
Máté Kocsis 39ede67e17 Fix typo in method name in gen_stub.php 2021-08-31 14:43:11 +02:00
Nikita Popov 32d48212ea Support generating internal enum decl from stubs 2021-08-31 14:19:37 +02:00
Go Kudo eaac77f4e7 Fix nested namespaced typed property in gen_stub.php (#7418)
Property escape namespaced class name in property types.
2021-08-31 11:56:39 +02:00
Nikita Popov 52d3af1790 Minor cleanup in gen_stubs
Unshare the stmt flag handling code, as this does not always
generalize (e.g. to enum cases, which have no visibility or flags
at all).
2021-08-31 11:44:14 +02:00
Nikita Popov c1c1822e8c Fix type hint in gen_stub.php
There is no ClassType class, only SimpleType.

[ci skip]
2021-08-31 10:11:15 +02:00
Máté Kocsis a57b713d66 Fix typo in gen_stub.php 2021-08-30 16:09:10 +02:00
Máté Kocsis c19e4b9997 Generate optimizer func info from stubs for ext/standard - part 3 (#7426) 2021-08-30 15:56:47 +02:00
Máté Kocsis 8e6e9838b0 Add support for generating MAY_BE_ARRAY_OF_REF func info flag (#7416) 2021-08-30 13:50:34 +02:00
Nikita Popov fab1222128 Ensure stub files are processed in predictable order
The zend_func_infos.h file was generated in a different order for
me.
2021-08-30 10:28:22 +02:00
Peter Cowburn 36e88a0066 Use &Properties; entity in xpointer for inherited properties in class synopses (#7400)
This changes ClassInfo::createIncludeElement() such that it takes the $query
argument as-is for the xpointer attribute value. Special characters, like
" and &, are used as-is so be careful not to break the resulting XML.
2021-08-25 12:14:03 +02:00
Máté Kocsis 4a7a414735 Fix callable and iterable handling 2021-08-25 10:37:43 +02:00
Máté Kocsis d0897b3602 Clean up function map production slightly
There's no need to iterate over $fileInfos again while generating the class map
2021-08-24 19:30:00 +02:00
Máté Kocsis e35a7fe919 Fix function map production 2021-08-24 18:45:31 +02:00
Máté Kocsis 2141bee69d Add more specific array type hints 2021-08-24 18:40:36 +02:00
Máté Kocsis b1822899fc Add support for generating optimizer function info from stubs (#7367) 2021-08-24 16:35:33 +02:00
Máté Kocsis 076f2899ba Add support for replacing class synopses based on stubs (#7340) 2021-08-13 15:03:31 +02:00
Máté Kocsis ac17b3646d Add support for generating classynopses from stubs
Closes GH-7310
2021-08-02 17:56:22 +02:00
Máté Kocsis fc56de113c Add support for generating readonly properties via stubs (#7297) 2021-07-22 11:09:10 +02:00
Máté Kocsis 23b1c4a982 Migrate to PHP-Parser 4.12.0 and regenerate some arginfos 2021-07-22 09:40:16 +02:00
Nikita Popov 814a932734 Add ZEND_ACC_NOT_SERIALIZABLE flag
This prevents serialization and unserialization of a class and its
children in a way that does not depend on the zend_class_serialize_deny
and zend_class_unserialize_deny handlers that will be going away
in PHP 9 together with the Serializable interface.

In stubs, `@not-serializable` can be used to set this flag.

This patch only uses the new flag for a handful of Zend classes,
converting the remainder is left for later.

Closes GH-7249.
Fixes bug #81111.
2021-07-19 15:59:11 +02:00