Oh, for me I just moved on to a proper bit of code.
I filed the bug for the perfection of the parser so
it's less exploitable.  :)

"I code therefore I am!"

On 1/26/19 8:17 PM, Timo Paulssen via RT wrote:
> I believe the problem comes from `"{"` which actually starts an
> interpolated code block containing a string immediately. That's also why
> it doesn't complain about the "else" being in an odd place; it's also
> inside the string!
> 
> So here's an equivalent piece of code that shows what's wrong:
> 
> if request.body[0] == "" ~ do { qq⟨{ say "JSON"} else {say "NOTJSON"};
> # my %bb = 1234 => 99;
> (and here comes the closing quote for the qq that was missing in the original 
> code: ⟩
> 
> Simplifying a tiny bit more:
> 
> if request.body[0] == "" ~ (say "JSON") ~ " else " ~ (say "NOTJSON") ~ ";
> # my %bb = 1234 => 99;
> again no closing double-quotes
> 
> Does that help?
> 
> On 25/01/2019 07:20, Aleks-Daniel Jakimenko-Aleksejev via RT wrote:
>> Usually this happens when you have an unclosed string somewhere earlier in 
>> your
>> code.
>>
>> That is:
>>
>> say "foo; ← oops! Forgot the closing "
>>
>> # $a ← we think that this is a comment, but actually it's part of the string
>> above!
>> On 2019-01-23 01:27:08, warren.mu...@gmail.com wrote:
>>> Hello:
>>>
>>> I ran into this while setting up a post test for json
>>> in bailador. While compiling it flags the commented
>>> line at the end as bad when the fail should be on the
>>> check of request.body[0].
>>>
>>> It happened with the latest rakudo built from scratch
>>> as of Jan 23rd 2019 as well as rakudo-star 2018.10.
>>>
>>> Linux Mint system, 64 bit.
>>>
>>>
>>>
>>>
>>> # --->perl6 t1.pl6
>>> # ===SORRY!=== Error while compiling
>>> /home/userx/p6d/tests/latester/t1.pl6
>>> # Variable '%bb' is not declared
>>> # at /home/userx/p6d/tests/latester/t1.pl6:97
>>> # ------> #pukes here #say ⏏%bb{"name"};
>>>
>>> # code snippet that causes the parser to think
>>> # the commented code below is not commented
>>> if request.body[0] == "{" { say "JSON"} else {say "NOTJSON"};
>>>
>>> # #my %bb = from-json(request.body);
>>> #
>>> # this one pukes
>>> #pukes here #say %bb{"name"};
> 

Reply via email to