On Thu, Jul 30, 2020 at 6:19 PM guilhermebla...@gmail.com < guilhermebla...@gmail.com> wrote:
> Question: The key factor of not using @ is due to conflict of > suppression symbol. > While we are in a major (where BC breaks are not encourage, but > tolerable), have we considered the possibility of BC breaking > suppression symbol (@ would become @@) and using @ for Attributes? > no chance, it needs at lesat 1 major release of deprecation before a syntax should be reusable for something else. > > I bet a search/replace wouldn't be that hard to be achieved, and it > would function even today (as @@ is acceptable). Basically, it's a BC > break where code needs to be changed, but backwards compatible as new > suppressor symbol is backwards compatible with previous versions of > PHP. > > Just some food for thought.... > > On Thu, Jul 30, 2020 at 11:57 AM Rowan Tommins <rowan.coll...@gmail.com> > wrote: > > > > On Thu, 30 Jul 2020 at 14:28, Joe Ferguson <j...@joeferguson.me> wrote: > > > > > ... I'm still here wanting us to talk about the > > > impact of @@ on static analysis tools. Apparently, internals doesn't > care > > > about these projects. > > > > > > > > > I don't think that's a reasonable summary of this thread at all. I've > seen > > three main types of response: > > > > 1) "I haven't followed the discussion about PHPCS, please could you > > summarise the problem." > > 2) "I don't understand why tools running on PHP 7.x need to parse PHP 8.x > > syntax." > > 3) "I think #[] will cause as many problems for such tools as @@, just in > > different places." > > > > Maybe they weren't always as polite or succinct as that, but not agreeing > > with you is not the same as not caring. > > > > > > As far as I can make out, attributes that appear entirely on a single > line > > with no other text are trivial to ignore in any parser whatever the > syntax. > > That trivial case is slightly more trivial with #[] because a PHP 7 > parser > > will treat it as a line comment; but add a rule to your parser to also > > treat "@@" as a line comment, and you're done. > > > > The problems come when you have a) an attribute definition spanning > > multiple lines, and/or b) an attribute definition inline with other code. > > As soon as you have that, you have no choice but to parse the code > entirely > > according to the grammar of PHP 8, not as "PHP 7 with some warts". > > > > If detecting the end of annotation tokens is really that difficult, would > > it suffice to make the () mandatory (i.e. @@Deprecated() rather than > > @@Deprecated)? The rules for what could appear between @@ and ( are > pretty > > simple, and finding the correct ending ) should be pretty much the same > > effort as finding the correct ending ], since both can occur in matching > > pairs inside the argument list. > > > > Regards, > > -- > > Rowan Tommins > > [IMSoP] > > > > -- > Guilherme Blanco > SVP Technology at Statflo Inc. > Mobile: +1 647 232 5599 > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: https://www.php.net/unsub.php > >