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 reprCStruct { 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!