# New Ticket Created by  Peter Pentchev 
# Please include the string:  [perl #127315]
# in the subject line of all future correspondence about this issue. 
# <URL: https://rt.perl.org/Ticket/Display.html?id=127315 >


Hi,

First of all, thanks a lot for everything you've all done so far and keep doing!


Now, I'm the author of the Serialize::Naive module (and, yeah, I guess I should 
rename the Serialize-Naive distribution to use "::" and not "-"), and it has a 
documented inability to serialize and deserialize classes with attributes 
declared with the @. or %. twigils.  Of course, this can be worked around by 
"has Array[Str] $.foo", but still it feels somewhat incomplete to me :)

I've attached a sample file that demonstrates the several ways I've tried to do 
that; I'm somewhat baffled by the "expected Str but got Array[Str]" error - it 
looks like something tries to interpret the hash element's value as a sequence 
containing a single array, while it should interpret it as, well, an array, and 
get the values from it... I think.

A minimum viable problem in case you don't want to slog through all the 
diagnostics and conditionals:

perl6 -e 'use v6; use strict; class Foo { has Str @.bar; }; my $f1 = 
Foo.new(bar => <a b c>); say $f1.perl;  my %data = bar => <a b c>; my $f2 = 
Foo.new(|%data); say $f2.perl;'

Foo.new(bar => Array[Str].new("a", "b", "c"))
Type check failed in assignment to @!bar; expected Str but got List
  in block <unit> at -e line 1

Both this one-liner and the attached file fail in the same way in 2015.12 and 
in:
This is Rakudo version 2015.12-213-g770d109 built on MoarVM version 
2015.12-29-g8079ca5
implementing Perl 6.c.

Thanks in advance for any advice or assistance, and keep up the great work!

Attachment: class-assign.p6
Description: Binary data

Reply via email to