1
0
mirror of https://github.com/php/php-src.git synced 2026-03-24 08:12:21 +01:00

Typed constants in reflection extension (#12378)

This commit is contained in:
Jorg Adam Sowa
2023-10-28 09:47:19 +02:00
committed by GitHub
parent b6bf7a0faf
commit e8d8a5fe69
3 changed files with 66 additions and 124 deletions

View File

@@ -139,6 +139,9 @@ PHP 8.4 UPGRADE NOTES
- Spl:
. The class constants are typed now.
- Reflection:
. The class constants are typed now.
========================================
10. New Global Constants
========================================

View File

@@ -116,11 +116,8 @@ abstract class ReflectionFunctionAbstract implements Reflector
class ReflectionFunction extends ReflectionFunctionAbstract
{
/**
* @var int
* @cvalue ZEND_ACC_DEPRECATED
*/
public const IS_DEPRECATED = UNKNOWN;
/** @cvalue ZEND_ACC_DEPRECATED */
public const int IS_DEPRECATED = UNKNOWN;
public function __construct(Closure|string $function) {}
@@ -170,36 +167,18 @@ final class ReflectionGenerator
class ReflectionMethod extends ReflectionFunctionAbstract
{
/**
* @var int
* @cvalue ZEND_ACC_STATIC
*/
public const IS_STATIC = UNKNOWN;
/**
* @var int
* @cvalue ZEND_ACC_PUBLIC
*/
public const IS_PUBLIC = UNKNOWN;
/**
* @var int
* @cvalue ZEND_ACC_PROTECTED
*/
public const IS_PROTECTED = UNKNOWN;
/**
* @var int
* @cvalue ZEND_ACC_PRIVATE
*/
public const IS_PRIVATE = UNKNOWN;
/**
* @var int
* @cvalue ZEND_ACC_ABSTRACT
*/
public const IS_ABSTRACT = UNKNOWN;
/**
* @var int
* @cvalue ZEND_ACC_FINAL
*/
public const IS_FINAL = UNKNOWN;
/** @cvalue ZEND_ACC_STATIC */
public const int IS_STATIC = UNKNOWN;
/** @cvalue ZEND_ACC_PUBLIC */
public const int IS_PUBLIC = UNKNOWN;
/** @cvalue ZEND_ACC_PROTECTED */
public const int IS_PROTECTED = UNKNOWN;
/** @cvalue ZEND_ACC_PRIVATE */
public const int IS_PRIVATE = UNKNOWN;
/** @cvalue ZEND_ACC_ABSTRACT */
public const int IS_ABSTRACT = UNKNOWN;
/** @cvalue ZEND_ACC_FINAL */
public const int IS_FINAL = UNKNOWN;
public string $class;
@@ -258,26 +237,16 @@ class ReflectionMethod extends ReflectionFunctionAbstract
class ReflectionClass implements Reflector
{
/**
* @var int
* @cvalue ZEND_ACC_IMPLICIT_ABSTRACT_CLASS
* @todo deprecate
*/
public const IS_IMPLICIT_ABSTRACT = UNKNOWN;
/**
* @var int
* @cvalue ZEND_ACC_EXPLICIT_ABSTRACT_CLASS
*/
public const IS_EXPLICIT_ABSTRACT = UNKNOWN;
/**
* @var int
* @cvalue ZEND_ACC_FINAL
*/
public const IS_FINAL = UNKNOWN;
/**
* @var int
* @cvalue ZEND_ACC_READONLY_CLASS
*/
public const IS_READONLY = UNKNOWN;
public const int IS_IMPLICIT_ABSTRACT = UNKNOWN;
/** @cvalue ZEND_ACC_EXPLICIT_ABSTRACT_CLASS */
public const int IS_EXPLICIT_ABSTRACT = UNKNOWN;
/** @cvalue ZEND_ACC_FINAL */
public const int IS_FINAL = UNKNOWN;
/** @cvalue ZEND_ACC_READONLY_CLASS */
public const int IS_READONLY = UNKNOWN;
public string $name;
@@ -455,31 +424,16 @@ class ReflectionObject extends ReflectionClass
/** @not-serializable */
class ReflectionProperty implements Reflector
{
/**
* @var int
* @cvalue ZEND_ACC_STATIC
*/
public const IS_STATIC = UNKNOWN;
/**
* @var int
* @cvalue ZEND_ACC_READONLY
*/
public const IS_READONLY = UNKNOWN;
/**
* @var int
* @cvalue ZEND_ACC_PUBLIC
*/
public const IS_PUBLIC = UNKNOWN;
/**
* @var int
* @cvalue ZEND_ACC_PROTECTED
*/
public const IS_PROTECTED = UNKNOWN;
/**
* @var int
* @cvalue ZEND_ACC_PRIVATE
*/
public const IS_PRIVATE = UNKNOWN;
/** @cvalue ZEND_ACC_STATIC */
public const int IS_STATIC = UNKNOWN;
/** @cvalue ZEND_ACC_READONLY */
public const int IS_READONLY = UNKNOWN;
/** @cvalue ZEND_ACC_PUBLIC */
public const int IS_PUBLIC = UNKNOWN;
/** @cvalue ZEND_ACC_PROTECTED */
public const int IS_PROTECTED = UNKNOWN;
/** @cvalue ZEND_ACC_PRIVATE */
public const int IS_PRIVATE = UNKNOWN;
public string $name;
public string $class;
@@ -551,26 +505,14 @@ class ReflectionProperty implements Reflector
/** @not-serializable */
class ReflectionClassConstant implements Reflector
{
/**
* @var int
* @cvalue ZEND_ACC_PUBLIC
*/
public const IS_PUBLIC = UNKNOWN;
/**
* @var int
* @cvalue ZEND_ACC_PROTECTED
*/
public const IS_PROTECTED = UNKNOWN;
/**
* @var int
* @cvalue ZEND_ACC_PRIVATE
*/
public const IS_PRIVATE = UNKNOWN;
/**
* @var int
* @cvalue ZEND_ACC_FINAL
*/
public const IS_FINAL = UNKNOWN;
/** @cvalue ZEND_ACC_PUBLIC */
public const int IS_PUBLIC = UNKNOWN;
/** @cvalue ZEND_ACC_PROTECTED */
public const int IS_PROTECTED = UNKNOWN;
/** @cvalue ZEND_ACC_PRIVATE */
public const int IS_PRIVATE = UNKNOWN;
/** @cvalue ZEND_ACC_FINAL */
public const int IS_FINAL = UNKNOWN;
public string $name;
public string $class;
@@ -819,11 +761,8 @@ final class ReflectionReference
/** @not-serializable */
class ReflectionAttribute implements Reflector
{
/**
* @var int
* @cvalue REFLECTION_ATTRIBUTE_IS_INSTANCEOF
*/
public const IS_INSTANCEOF = UNKNOWN;
/** @cvalue REFLECTION_ATTRIBUTE_IS_INSTANCEOF */
public const int IS_INSTANCEOF = UNKNOWN;
public function getName(): string {}
public function getTarget(): int {}

View File

@@ -1,5 +1,5 @@
/* This is a generated file, edit the .stub.php file instead.
* Stub hash: 5781d892d122912b19d530a72f9023cced814064 */
* Stub hash: 11fcaa654fc0442e8338f6849b91aa2970b211b9 */
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_Reflection_getModifierNames, 0, 1, IS_ARRAY, 0)
ZEND_ARG_TYPE_INFO(0, modifiers, IS_LONG, 0)
@@ -1268,7 +1268,7 @@ static zend_class_entry *register_class_ReflectionFunction(zend_class_entry *cla
zval const_IS_DEPRECATED_value;
ZVAL_LONG(&const_IS_DEPRECATED_value, ZEND_ACC_DEPRECATED);
zend_string *const_IS_DEPRECATED_name = zend_string_init_interned("IS_DEPRECATED", sizeof("IS_DEPRECATED") - 1, 1);
zend_declare_class_constant_ex(class_entry, const_IS_DEPRECATED_name, &const_IS_DEPRECATED_value, ZEND_ACC_PUBLIC, NULL);
zend_declare_typed_class_constant(class_entry, const_IS_DEPRECATED_name, &const_IS_DEPRECATED_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
zend_string_release(const_IS_DEPRECATED_name);
return class_entry;
@@ -1295,37 +1295,37 @@ static zend_class_entry *register_class_ReflectionMethod(zend_class_entry *class
zval const_IS_STATIC_value;
ZVAL_LONG(&const_IS_STATIC_value, ZEND_ACC_STATIC);
zend_string *const_IS_STATIC_name = zend_string_init_interned("IS_STATIC", sizeof("IS_STATIC") - 1, 1);
zend_declare_class_constant_ex(class_entry, const_IS_STATIC_name, &const_IS_STATIC_value, ZEND_ACC_PUBLIC, NULL);
zend_declare_typed_class_constant(class_entry, const_IS_STATIC_name, &const_IS_STATIC_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
zend_string_release(const_IS_STATIC_name);
zval const_IS_PUBLIC_value;
ZVAL_LONG(&const_IS_PUBLIC_value, ZEND_ACC_PUBLIC);
zend_string *const_IS_PUBLIC_name = zend_string_init_interned("IS_PUBLIC", sizeof("IS_PUBLIC") - 1, 1);
zend_declare_class_constant_ex(class_entry, const_IS_PUBLIC_name, &const_IS_PUBLIC_value, ZEND_ACC_PUBLIC, NULL);
zend_declare_typed_class_constant(class_entry, const_IS_PUBLIC_name, &const_IS_PUBLIC_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
zend_string_release(const_IS_PUBLIC_name);
zval const_IS_PROTECTED_value;
ZVAL_LONG(&const_IS_PROTECTED_value, ZEND_ACC_PROTECTED);
zend_string *const_IS_PROTECTED_name = zend_string_init_interned("IS_PROTECTED", sizeof("IS_PROTECTED") - 1, 1);
zend_declare_class_constant_ex(class_entry, const_IS_PROTECTED_name, &const_IS_PROTECTED_value, ZEND_ACC_PUBLIC, NULL);
zend_declare_typed_class_constant(class_entry, const_IS_PROTECTED_name, &const_IS_PROTECTED_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
zend_string_release(const_IS_PROTECTED_name);
zval const_IS_PRIVATE_value;
ZVAL_LONG(&const_IS_PRIVATE_value, ZEND_ACC_PRIVATE);
zend_string *const_IS_PRIVATE_name = zend_string_init_interned("IS_PRIVATE", sizeof("IS_PRIVATE") - 1, 1);
zend_declare_class_constant_ex(class_entry, const_IS_PRIVATE_name, &const_IS_PRIVATE_value, ZEND_ACC_PUBLIC, NULL);
zend_declare_typed_class_constant(class_entry, const_IS_PRIVATE_name, &const_IS_PRIVATE_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
zend_string_release(const_IS_PRIVATE_name);
zval const_IS_ABSTRACT_value;
ZVAL_LONG(&const_IS_ABSTRACT_value, ZEND_ACC_ABSTRACT);
zend_string *const_IS_ABSTRACT_name = zend_string_init_interned("IS_ABSTRACT", sizeof("IS_ABSTRACT") - 1, 1);
zend_declare_class_constant_ex(class_entry, const_IS_ABSTRACT_name, &const_IS_ABSTRACT_value, ZEND_ACC_PUBLIC, NULL);
zend_declare_typed_class_constant(class_entry, const_IS_ABSTRACT_name, &const_IS_ABSTRACT_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
zend_string_release(const_IS_ABSTRACT_name);
zval const_IS_FINAL_value;
ZVAL_LONG(&const_IS_FINAL_value, ZEND_ACC_FINAL);
zend_string *const_IS_FINAL_name = zend_string_init_interned("IS_FINAL", sizeof("IS_FINAL") - 1, 1);
zend_declare_class_constant_ex(class_entry, const_IS_FINAL_name, &const_IS_FINAL_value, ZEND_ACC_PUBLIC, NULL);
zend_declare_typed_class_constant(class_entry, const_IS_FINAL_name, &const_IS_FINAL_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
zend_string_release(const_IS_FINAL_name);
zval property_class_default_value;
@@ -1349,25 +1349,25 @@ static zend_class_entry *register_class_ReflectionClass(zend_class_entry *class_
zval const_IS_IMPLICIT_ABSTRACT_value;
ZVAL_LONG(&const_IS_IMPLICIT_ABSTRACT_value, ZEND_ACC_IMPLICIT_ABSTRACT_CLASS);
zend_string *const_IS_IMPLICIT_ABSTRACT_name = zend_string_init_interned("IS_IMPLICIT_ABSTRACT", sizeof("IS_IMPLICIT_ABSTRACT") - 1, 1);
zend_declare_class_constant_ex(class_entry, const_IS_IMPLICIT_ABSTRACT_name, &const_IS_IMPLICIT_ABSTRACT_value, ZEND_ACC_PUBLIC, NULL);
zend_declare_typed_class_constant(class_entry, const_IS_IMPLICIT_ABSTRACT_name, &const_IS_IMPLICIT_ABSTRACT_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
zend_string_release(const_IS_IMPLICIT_ABSTRACT_name);
zval const_IS_EXPLICIT_ABSTRACT_value;
ZVAL_LONG(&const_IS_EXPLICIT_ABSTRACT_value, ZEND_ACC_EXPLICIT_ABSTRACT_CLASS);
zend_string *const_IS_EXPLICIT_ABSTRACT_name = zend_string_init_interned("IS_EXPLICIT_ABSTRACT", sizeof("IS_EXPLICIT_ABSTRACT") - 1, 1);
zend_declare_class_constant_ex(class_entry, const_IS_EXPLICIT_ABSTRACT_name, &const_IS_EXPLICIT_ABSTRACT_value, ZEND_ACC_PUBLIC, NULL);
zend_declare_typed_class_constant(class_entry, const_IS_EXPLICIT_ABSTRACT_name, &const_IS_EXPLICIT_ABSTRACT_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
zend_string_release(const_IS_EXPLICIT_ABSTRACT_name);
zval const_IS_FINAL_value;
ZVAL_LONG(&const_IS_FINAL_value, ZEND_ACC_FINAL);
zend_string *const_IS_FINAL_name = zend_string_init_interned("IS_FINAL", sizeof("IS_FINAL") - 1, 1);
zend_declare_class_constant_ex(class_entry, const_IS_FINAL_name, &const_IS_FINAL_value, ZEND_ACC_PUBLIC, NULL);
zend_declare_typed_class_constant(class_entry, const_IS_FINAL_name, &const_IS_FINAL_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
zend_string_release(const_IS_FINAL_name);
zval const_IS_READONLY_value;
ZVAL_LONG(&const_IS_READONLY_value, ZEND_ACC_READONLY_CLASS);
zend_string *const_IS_READONLY_name = zend_string_init_interned("IS_READONLY", sizeof("IS_READONLY") - 1, 1);
zend_declare_class_constant_ex(class_entry, const_IS_READONLY_name, &const_IS_READONLY_value, ZEND_ACC_PUBLIC, NULL);
zend_declare_typed_class_constant(class_entry, const_IS_READONLY_name, &const_IS_READONLY_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
zend_string_release(const_IS_READONLY_name);
zval property_name_default_value;
@@ -1401,31 +1401,31 @@ static zend_class_entry *register_class_ReflectionProperty(zend_class_entry *cla
zval const_IS_STATIC_value;
ZVAL_LONG(&const_IS_STATIC_value, ZEND_ACC_STATIC);
zend_string *const_IS_STATIC_name = zend_string_init_interned("IS_STATIC", sizeof("IS_STATIC") - 1, 1);
zend_declare_class_constant_ex(class_entry, const_IS_STATIC_name, &const_IS_STATIC_value, ZEND_ACC_PUBLIC, NULL);
zend_declare_typed_class_constant(class_entry, const_IS_STATIC_name, &const_IS_STATIC_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
zend_string_release(const_IS_STATIC_name);
zval const_IS_READONLY_value;
ZVAL_LONG(&const_IS_READONLY_value, ZEND_ACC_READONLY);
zend_string *const_IS_READONLY_name = zend_string_init_interned("IS_READONLY", sizeof("IS_READONLY") - 1, 1);
zend_declare_class_constant_ex(class_entry, const_IS_READONLY_name, &const_IS_READONLY_value, ZEND_ACC_PUBLIC, NULL);
zend_declare_typed_class_constant(class_entry, const_IS_READONLY_name, &const_IS_READONLY_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
zend_string_release(const_IS_READONLY_name);
zval const_IS_PUBLIC_value;
ZVAL_LONG(&const_IS_PUBLIC_value, ZEND_ACC_PUBLIC);
zend_string *const_IS_PUBLIC_name = zend_string_init_interned("IS_PUBLIC", sizeof("IS_PUBLIC") - 1, 1);
zend_declare_class_constant_ex(class_entry, const_IS_PUBLIC_name, &const_IS_PUBLIC_value, ZEND_ACC_PUBLIC, NULL);
zend_declare_typed_class_constant(class_entry, const_IS_PUBLIC_name, &const_IS_PUBLIC_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
zend_string_release(const_IS_PUBLIC_name);
zval const_IS_PROTECTED_value;
ZVAL_LONG(&const_IS_PROTECTED_value, ZEND_ACC_PROTECTED);
zend_string *const_IS_PROTECTED_name = zend_string_init_interned("IS_PROTECTED", sizeof("IS_PROTECTED") - 1, 1);
zend_declare_class_constant_ex(class_entry, const_IS_PROTECTED_name, &const_IS_PROTECTED_value, ZEND_ACC_PUBLIC, NULL);
zend_declare_typed_class_constant(class_entry, const_IS_PROTECTED_name, &const_IS_PROTECTED_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
zend_string_release(const_IS_PROTECTED_name);
zval const_IS_PRIVATE_value;
ZVAL_LONG(&const_IS_PRIVATE_value, ZEND_ACC_PRIVATE);
zend_string *const_IS_PRIVATE_name = zend_string_init_interned("IS_PRIVATE", sizeof("IS_PRIVATE") - 1, 1);
zend_declare_class_constant_ex(class_entry, const_IS_PRIVATE_name, &const_IS_PRIVATE_value, ZEND_ACC_PUBLIC, NULL);
zend_declare_typed_class_constant(class_entry, const_IS_PRIVATE_name, &const_IS_PRIVATE_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
zend_string_release(const_IS_PRIVATE_name);
zval property_name_default_value;
@@ -1455,25 +1455,25 @@ static zend_class_entry *register_class_ReflectionClassConstant(zend_class_entry
zval const_IS_PUBLIC_value;
ZVAL_LONG(&const_IS_PUBLIC_value, ZEND_ACC_PUBLIC);
zend_string *const_IS_PUBLIC_name = zend_string_init_interned("IS_PUBLIC", sizeof("IS_PUBLIC") - 1, 1);
zend_declare_class_constant_ex(class_entry, const_IS_PUBLIC_name, &const_IS_PUBLIC_value, ZEND_ACC_PUBLIC, NULL);
zend_declare_typed_class_constant(class_entry, const_IS_PUBLIC_name, &const_IS_PUBLIC_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
zend_string_release(const_IS_PUBLIC_name);
zval const_IS_PROTECTED_value;
ZVAL_LONG(&const_IS_PROTECTED_value, ZEND_ACC_PROTECTED);
zend_string *const_IS_PROTECTED_name = zend_string_init_interned("IS_PROTECTED", sizeof("IS_PROTECTED") - 1, 1);
zend_declare_class_constant_ex(class_entry, const_IS_PROTECTED_name, &const_IS_PROTECTED_value, ZEND_ACC_PUBLIC, NULL);
zend_declare_typed_class_constant(class_entry, const_IS_PROTECTED_name, &const_IS_PROTECTED_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
zend_string_release(const_IS_PROTECTED_name);
zval const_IS_PRIVATE_value;
ZVAL_LONG(&const_IS_PRIVATE_value, ZEND_ACC_PRIVATE);
zend_string *const_IS_PRIVATE_name = zend_string_init_interned("IS_PRIVATE", sizeof("IS_PRIVATE") - 1, 1);
zend_declare_class_constant_ex(class_entry, const_IS_PRIVATE_name, &const_IS_PRIVATE_value, ZEND_ACC_PUBLIC, NULL);
zend_declare_typed_class_constant(class_entry, const_IS_PRIVATE_name, &const_IS_PRIVATE_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
zend_string_release(const_IS_PRIVATE_name);
zval const_IS_FINAL_value;
ZVAL_LONG(&const_IS_FINAL_value, ZEND_ACC_FINAL);
zend_string *const_IS_FINAL_name = zend_string_init_interned("IS_FINAL", sizeof("IS_FINAL") - 1, 1);
zend_declare_class_constant_ex(class_entry, const_IS_FINAL_name, &const_IS_FINAL_value, ZEND_ACC_PUBLIC, NULL);
zend_declare_typed_class_constant(class_entry, const_IS_FINAL_name, &const_IS_FINAL_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
zend_string_release(const_IS_FINAL_name);
zval property_name_default_value;
@@ -1610,7 +1610,7 @@ static zend_class_entry *register_class_ReflectionAttribute(zend_class_entry *cl
zval const_IS_INSTANCEOF_value;
ZVAL_LONG(&const_IS_INSTANCEOF_value, REFLECTION_ATTRIBUTE_IS_INSTANCEOF);
zend_string *const_IS_INSTANCEOF_name = zend_string_init_interned("IS_INSTANCEOF", sizeof("IS_INSTANCEOF") - 1, 1);
zend_declare_class_constant_ex(class_entry, const_IS_INSTANCEOF_name, &const_IS_INSTANCEOF_value, ZEND_ACC_PUBLIC, NULL);
zend_declare_typed_class_constant(class_entry, const_IS_INSTANCEOF_name, &const_IS_INSTANCEOF_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
zend_string_release(const_IS_INSTANCEOF_name);
return class_entry;