This works now: $ $ perl6 -e 'class A {has Str $.n; has Str @.m}; for A.^attributes -> $attr {say $attr.name, $attr.type};' $!n(Str) @!m(Positional[Str])
It looks like the problem back then was related to using gist. I tried with an older rakudo: $ $ ./perl6-m --version This is Rakudo version 2015.12-60-g37e998d built on MoarVM version 2015.12 implementing Perl 6.c. $ ./perl6-m -e 'class A {has Str @.array}; say A.^attributes[0].type.gist' Method 'shortname' not found for invocant of class 'Perl6::Metamodel::CurriedRoleHOW' in block <unit> at -e line 1 $ ./perl6-m -e 'class A {has Str @.array}; say A.^attributes[0].type.perl' Positional[Str] I added a test to S12-introspection/attributes.t with commit https://github.com/perl6/roast/commit/b06e156032 I'm closing this ticket as 'resolved'.