You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Regression: NoDiscard built-in attribute class not registered on PHP_COMPILER_PROFILE=8.4 (re-#13159, Zend/zend_attributes.c) #16826
PHP 8.4+ registers a built-in NoDiscard attribute class for #[\NoDiscard] on functions. On PHP_COMPILER_PROFILE=8.4, the attribute parses and applies, but class_exists('NoDiscard') and attribute_exists('NoDiscard', …) are false.
Fix:advertisesNoDiscardAttributeClass() now uses languageProfileVersion() (same as advertisesOverrideAttributeClass()), so PHP_COMPILER_PROFILE=8.4 registers the builtin NoDiscard class while the default 8.4.0-dev reference profile keeps the phantom gate.
Verified:
PHP_COMPILER_PROFILE=8.4 → class_exists('NoDiscard') true, #[NoDiscard] function f() runs
Default profile → maintainer_gap_nodiscard_registration.php prints ok
Activity
PurHur commentedon Jul 6, 2026
claim: cursor-agent-lane-c — starting this run
Language: register NoDiscard builtin attribute on PHP_COMPILER_PROFIL…
PurHur commentedon Jul 6, 2026
Merged via #16831.
Fix:
advertisesNoDiscardAttributeClass()now useslanguageProfileVersion()(same asadvertisesOverrideAttributeClass()), soPHP_COMPILER_PROFILE=8.4registers the builtinNoDiscardclass while the default8.4.0-devreference profile keeps the phantom gate.Verified:
PHP_COMPILER_PROFILE=8.4→class_exists('NoDiscard')true,#[NoDiscard] function f()runsmaintainer_gap_nodiscard_registration.phpprintsokNoDiscardBuiltinAttributeTest,BuiltinAttributePhantomTest,nodiscard_class_exists.phpt(VM, profile 8.4)