Re: Attributes on property groups
| From: | tyson andre | Date: | Tue, 22 Sep 2020 16:50:40 +0000 |
| Subject: | Re: Attributes on property groups | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-111923@lists.php.net to get a copy of this message | ||
Hi Nikita,
> Hi internals,
>
> Currently, placing an attribute on property (or constant) groups is not
> allowed:
>
> class Foo {
> #[NonNegative]
> public int $x, $y, $z;
> }
> // Fatal error: Cannot apply attributes to a group of properties
>
> This is a case that was not explicitly mentioned in the RFC and we decided
> to be conversative when landing the initial implementation.
>
> However, this restriction seems pretty arbitrary to me, and I think we
> should remove it. While there is some potential ambiguity as to whether the
> attribute applies to all properties or only the first one, I think the
> general expectation is that it should apply to all properties, just like
> the property type does.
>
> PR to allow this: https://github.com/php/php-src/pull/6186
>
> Any thoughts on this?
That seems like a good idea and doesn't seem like an ABI change. I'm surprised this was a
special case in the original implementation.
I wouldn't consider it a BC break if code that was previously a CompileError no longer threw a
CompileError.
The attribute node occurs before property modifiers such as
private static, which
already pretty clearly apply
to all elements in an attribute group, not just the first element.
Regards,
- Tyson