On Wed, Dec 10, 2014 at 10:59 AM, Andrea Faulds <a...@ajf.me> wrote:
>> On 10 Dec 2014, at 18:55, Sara Golemon <poll...@php.net> wrote:
>> I was just updating my HHVM patch to match your PHP implementation and
>> an issue came up.  The following code, which is valid in PHP5:
>>
>> <?php
>> echo json_decode("\"ma\u00F1ana\"");
>>
>> Will throw a fatal compiler error as "\u00F1" is an invalid unicode
>> escape sequence.  Since this represents an unnecessary BC break, I'd
>> like to propose the error handling be modified to match \x, which is
>> to say: Pass the value through unmodified.
>
> I was wondering about that case. Previously, the patch just raised a warning
> but let it through unmodified. But then old code would be littered with 
> warnings,
> and I felt it was better just to throw an error. Part of the problem is that 
> I’d rather
> mistakes in string literals be caught at compile time, to prevent someone
> accidentally echoing ‘\u00F1’ somewhere.
>
Well, consistency would be not raising a warning at all (like with \x
or unknown \ sequences), but I get your concern with helping coders
catch mistakes early.

I don't have the stats on how many projects are using \uXXXX sequences
(with the json_decode() or similar hack to parse them), but I know
FB's codebase is absolutely covered in them.

> A possible compromise might be to let ‘\u’ through but not ‘\u{‘.
>
Still don't like it from the inconsistency with existing escape
sequence handlers pov, but it'd cover the biggest set of BC issues, so
I'd be happy with it.

-Sara

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to