Thanks FROGGS! I got that to work after updating MoarVM.

On 06/02/2015 01:21 PM, Tobias Leich wrote:
Hi, when you install latest MoarVM, you can do this:

$ perl6 -e 'use NativeCall; class Foo is repr<CStruct> { has str $.bar
is rw }; my $foo = Foo.new(bar => "bar"); say $foo; $foo.bar = "baz";
say $foo'
Foo.new(bar => "bar")
Foo.new(bar => "baz")

Note the lowercase str type.
The normal Str type can be set by binding to the $!bar attribute from
within the class, but not from the outside via arguments to .new sadly.

Cheers, FROGGS

Am 02.06.2015 um 19:38 schrieb Douglas E. Miles:
Hi all!

I just started learning Perl 6 about 5 days ago, so I may not know
what I'm talking about, but I may have found a bug. I posted to #perl6
with my original code, and raydiak and timotimo were nice enough to
golf it down for me:

Str in CStruct blows up:
$ perl6
use NativeCall; class Foo is repr('CStruct') { has Str $.str }; my
$foo = Foo.new(str => 'bar');
Cannot modify an immutable Str
   in block <unit> at <unknown file>:1
   in any <unit-outer> at <unknown file>:1

int32 in CStruct works fine:
$ perl6
use NativeCall; class Foo is repr('CStruct') { has int32 $.i }; my
$foo = Foo.new(i => 42);
Foo.new(i => 42)
say $foo.i
42

Please let me know if I'm doing something wrong, or if this is a legit
bug. Thanks!

Reply via email to