This is a known deficiency for which we actually have TODO’d tests

RT #124454
RT #124496

ObjAt currently just being a Str is a hack that will need to have some VM 
support to be fixable.

> On 15 Aug 2016, at 15:48, Zefram (via RT) <[email protected]> 
> wrote:
> 
> # New Ticket Created by  Zefram 
> # Please include the string:  [perl #128947]
> # in the subject line of all future correspondence about this issue. 
> # <URL: https://rt.perl.org/Ticket/Display.html?id=128947 >
> 
> 
>> ("a|Str|b" => "c").perl
> "a|Str|b" => "c"
>> ("a" => "b|Str|c").perl
> :a("b|Str|c")
>> ("a|Str|b" => "c").WHICH
> Pair|Str|a|Str|b|Str|c
>> ("a" => "b|Str|c").WHICH
> Pair|Str|a|Str|b|Str|c
>> ("a|Str|b" => "c").WHICH === ("a" => "b|Str|c").WHICH
> True
>> ("a|Str|b" => "c") === ("a" => "b|Str|c")
> True
>> ("a|Str|b" => "c") cmp ("a" => "b|Str|c")
> More
> 
> These two pairs are behaviourally distinct, as shown by their .perl
> outputs, but they get the same .WHICH strings.  Presumably as a result,
> === claims them to be equivalent, though cmp correctly shows them to
> be different.  This is all very similar to [perl #128943] concerning
> the Set class.  Also, like Set.WHICH, Pair.WHICH on these pairs returns
> plain strings as Str objects, rather than ObjAt objects.
> 
> -zefram

Reply via email to