mirror of
https://github.com/php/php-src.git
synced 2026-03-24 00:02:20 +01:00
gen_stub: ZEND_ACC_NODISCARD is for PHP 8.5+ (#18465)
This commit is contained in:
@@ -1390,7 +1390,13 @@ class FuncInfo {
|
|||||||
$name = "zim_" . $this->name->getDeclarationClassName() . "_" . $this->name->methodName;
|
$name = "zim_" . $this->name->getDeclarationClassName() . "_" . $this->name->methodName;
|
||||||
|
|
||||||
if ($isVanillaEntry) {
|
if ($isVanillaEntry) {
|
||||||
$functionEntryCode = "\tZEND_ME(" . $this->name->getDeclarationClassName() . ", " . $this->name->methodName . ", $argInfoName, " . implode("|", reset($flagsByPhpVersions)) . ")";
|
$template = "\tZEND_ME(" . $this->name->getDeclarationClassName() . ", " . $this->name->methodName . ", $argInfoName, %s)\n";
|
||||||
|
$flagsCode = generateVersionDependentFlagCode(
|
||||||
|
$template,
|
||||||
|
$flagsByPhpVersions,
|
||||||
|
$this->minimumPhpVersionIdCompatibility
|
||||||
|
);
|
||||||
|
$functionEntryCode = rtrim(implode("", $flagsCode));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1406,7 +1412,15 @@ class FuncInfo {
|
|||||||
$zendName = '"' . $functionName . '"';
|
$zendName = '"' . $functionName . '"';
|
||||||
$name = "zif_$declarationName";
|
$name = "zif_$declarationName";
|
||||||
|
|
||||||
if ($isVanillaEntry && reset($flagsByPhpVersions) === ["0"]) {
|
// Can only use ZEND_FE() if we have no flags for *all* versions
|
||||||
|
$hasFlags = false;
|
||||||
|
foreach ($flagsByPhpVersions as $flags) {
|
||||||
|
if ($flags !== ['0']) {
|
||||||
|
$hasFlags = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($isVanillaEntry && !$hasFlags) {
|
||||||
$functionEntryCode = "\tZEND_FE($declarationName, $argInfoName)";
|
$functionEntryCode = "\tZEND_FE($declarationName, $argInfoName)";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1523,9 +1537,6 @@ class FuncInfo {
|
|||||||
case "Deprecated":
|
case "Deprecated":
|
||||||
$flags[] = "ZEND_ACC_DEPRECATED";
|
$flags[] = "ZEND_ACC_DEPRECATED";
|
||||||
break;
|
break;
|
||||||
case "NoDiscard":
|
|
||||||
$flags[] = "ZEND_ACC_NODISCARD";
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1534,12 +1545,24 @@ class FuncInfo {
|
|||||||
$php82AndAboveFlags[] = "ZEND_ACC_COMPILE_TIME_EVAL";
|
$php82AndAboveFlags[] = "ZEND_ACC_COMPILE_TIME_EVAL";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$php85AndAboveFlags = $php82AndAboveFlags;
|
||||||
|
foreach ($this->attributes as $attr) {
|
||||||
|
switch ($attr->class) {
|
||||||
|
case "NoDiscard":
|
||||||
|
$php85AndAboveFlags[] = "ZEND_ACC_NODISCARD";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (empty($flags)) {
|
if (empty($flags)) {
|
||||||
$flags[] = "0";
|
$flags[] = "0";
|
||||||
}
|
}
|
||||||
if (empty($php82AndAboveFlags)) {
|
if (empty($php82AndAboveFlags)) {
|
||||||
$php82AndAboveFlags[] = "0";
|
$php82AndAboveFlags[] = "0";
|
||||||
}
|
}
|
||||||
|
if (empty($php85AndAboveFlags)) {
|
||||||
|
$php85AndAboveFlags[] = "0";
|
||||||
|
}
|
||||||
|
|
||||||
return [
|
return [
|
||||||
PHP_70_VERSION_ID => $flags,
|
PHP_70_VERSION_ID => $flags,
|
||||||
@@ -1548,7 +1571,7 @@ class FuncInfo {
|
|||||||
PHP_82_VERSION_ID => $php82AndAboveFlags,
|
PHP_82_VERSION_ID => $php82AndAboveFlags,
|
||||||
PHP_83_VERSION_ID => $php82AndAboveFlags,
|
PHP_83_VERSION_ID => $php82AndAboveFlags,
|
||||||
PHP_84_VERSION_ID => $php82AndAboveFlags,
|
PHP_84_VERSION_ID => $php82AndAboveFlags,
|
||||||
PHP_85_VERSION_ID => $php82AndAboveFlags,
|
PHP_85_VERSION_ID => $php85AndAboveFlags,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
12
ext/zend_test/test_arginfo.h
generated
12
ext/zend_test/test_arginfo.h
generated
@@ -368,14 +368,22 @@ static const zend_function_entry ext_functions[] = {
|
|||||||
ZEND_RAW_FENTRY("zend_test_deprecated_attr", zif_zend_test_deprecated_attr, arginfo_zend_test_deprecated_attr, ZEND_ACC_DEPRECATED)
|
ZEND_RAW_FENTRY("zend_test_deprecated_attr", zif_zend_test_deprecated_attr, arginfo_zend_test_deprecated_attr, ZEND_ACC_DEPRECATED)
|
||||||
#endif
|
#endif
|
||||||
#if (PHP_VERSION_ID >= 80400)
|
#if (PHP_VERSION_ID >= 80400)
|
||||||
|
#if (PHP_VERSION_ID >= 80500)
|
||||||
ZEND_RAW_FENTRY("zend_test_nodiscard", zif_zend_test_nodiscard, arginfo_zend_test_nodiscard, ZEND_ACC_NODISCARD, NULL, NULL)
|
ZEND_RAW_FENTRY("zend_test_nodiscard", zif_zend_test_nodiscard, arginfo_zend_test_nodiscard, ZEND_ACC_NODISCARD, NULL, NULL)
|
||||||
|
#elif (PHP_VERSION_ID >= 80400)
|
||||||
|
ZEND_RAW_FENTRY("zend_test_nodiscard", zif_zend_test_nodiscard, arginfo_zend_test_nodiscard, 0, NULL, NULL)
|
||||||
|
#endif
|
||||||
#else
|
#else
|
||||||
ZEND_RAW_FENTRY("zend_test_nodiscard", zif_zend_test_nodiscard, arginfo_zend_test_nodiscard, ZEND_ACC_NODISCARD)
|
ZEND_RAW_FENTRY("zend_test_nodiscard", zif_zend_test_nodiscard, arginfo_zend_test_nodiscard, 0)
|
||||||
#endif
|
#endif
|
||||||
#if (PHP_VERSION_ID >= 80400)
|
#if (PHP_VERSION_ID >= 80400)
|
||||||
|
#if (PHP_VERSION_ID >= 80500)
|
||||||
ZEND_RAW_FENTRY("zend_test_deprecated_nodiscard", zif_zend_test_deprecated_nodiscard, arginfo_zend_test_deprecated_nodiscard, ZEND_ACC_DEPRECATED|ZEND_ACC_NODISCARD, NULL, NULL)
|
ZEND_RAW_FENTRY("zend_test_deprecated_nodiscard", zif_zend_test_deprecated_nodiscard, arginfo_zend_test_deprecated_nodiscard, ZEND_ACC_DEPRECATED|ZEND_ACC_NODISCARD, NULL, NULL)
|
||||||
|
#elif (PHP_VERSION_ID >= 80400)
|
||||||
|
ZEND_RAW_FENTRY("zend_test_deprecated_nodiscard", zif_zend_test_deprecated_nodiscard, arginfo_zend_test_deprecated_nodiscard, ZEND_ACC_DEPRECATED, NULL, NULL)
|
||||||
|
#endif
|
||||||
#else
|
#else
|
||||||
ZEND_RAW_FENTRY("zend_test_deprecated_nodiscard", zif_zend_test_deprecated_nodiscard, arginfo_zend_test_deprecated_nodiscard, ZEND_ACC_DEPRECATED|ZEND_ACC_NODISCARD)
|
ZEND_RAW_FENTRY("zend_test_deprecated_nodiscard", zif_zend_test_deprecated_nodiscard, arginfo_zend_test_deprecated_nodiscard, ZEND_ACC_DEPRECATED)
|
||||||
#endif
|
#endif
|
||||||
#if (PHP_VERSION_ID >= 80400)
|
#if (PHP_VERSION_ID >= 80400)
|
||||||
ZEND_RAW_FENTRY("zend_test_aliased", zif_zend_test_void_return, arginfo_zend_test_aliased, 0, NULL, NULL)
|
ZEND_RAW_FENTRY("zend_test_aliased", zif_zend_test_void_return, arginfo_zend_test_aliased, 0, NULL, NULL)
|
||||||
|
|||||||
Reference in New Issue
Block a user