Re: Possible bug in NativeCall CStruct

2015-06-02 Thread Tobias Leich
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!



Re: Possible bug in NativeCall CStruct

2015-06-02 Thread Douglas E. Miles

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!