Index: src/string/api.c =================================================================== --- src/string/api.c (revision 39843) +++ src/string/api.c (working copy) @@ -3361,7 +3361,7 @@ if (STRING_IS_NULL(delim) || STRING_IS_NULL(str)) return PMCNULL; - res = pmc_new(interp, enum_class_ResizableStringArray); + res = pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_ResizableStringArray)); slen = Parrot_str_byte_length(interp, str); if (!slen) Index: t/op/string.t =================================================================== --- t/op/string.t (revision 39843) +++ t/op/string.t (working copy) @@ -7,7 +7,7 @@ use lib qw( . lib ../lib ../../lib ); use Test::More; -use Parrot::Test tests => 165; +use Parrot::Test tests => 166; use Parrot::Config; =head1 NAME @@ -2639,6 +2639,41 @@ OUTPUT +pir_output_is( <<'CODE', <<'OUTPUT', 'split HLL mapped' ); +.HLL 'foohll' +.sub main + .local pmc RSA, fooRSA + RSA = get_class ['ResizableStringArray'] + fooRSA = subclass ['ResizableStringArray'], 'fooRSA' + .local pmc interp + interp = getinterp + interp.'hll_map'(RSA, fooRSA) + .local pmc a + split a, "a", "afooabara" + .local string t + t = typeof a + say t + .local int n, i + n = a + say n + i = 0 +loop: + .local string s + s = a[i] + say s + inc i + if i != n goto loop +.end +CODE +fooRSA +5 + +foo +b +r + +OUTPUT + pasm_output_is( <<'CODE', <<'OUTPUT', 'join' ); _main: new P0, 'ResizablePMCArray'