# New Ticket Created by Jens Rieks
# Please include the string: [perl #27391]
# in the subject line of all future correspondence about this issue.
# <URL: http://rt.perl.org:80/rt3/Ticket/Display.html?id=27391 >
Hi,
The following code crashes parrot if run with -t (trace).
It seems to be due to an unused .param, see line marked with XXX.
jens
.sub main
__create_class( "A" )
__create_class( "B" )
find_type I0, "A"
print "type1:"
print I0
print "\n"
new P0, I0
typeof I0, P0
print "type2:"
print I0
print "\n"
end
.end
.sub _A::__init
.local pmc temp
print "_A::__init()\n"
find_type I0, "B"
new temp, I0
__add_method( "A", "f1" )
__add_method( "A", "f2" )
__add_method( "A", "f3" )
.pcc_begin_return
.pcc_end_return
.end
.sub _B::__init
print "_B::__init()\n"
__add_method( "B", "f1" )
.pcc_begin_return
.pcc_end_return
.end
.sub _A::f1
.pcc_begin_return
.pcc_end_return
.end
.sub _A::f2
.pcc_begin_return
.pcc_end_return
.end
.sub _A::f3
.pcc_begin_return
.pcc_end_return
.end
.sub _B::f1
.pcc_begin_return
.pcc_end_return
.end
.sub __add_method
.param string class
.param string method
.local string tmp
.local pmc sub
# construct the class'es method name
set tmp, "_"
concat tmp, class
concat tmp, "::"
concat tmp, method
# find the sub
find_global sub, tmp
# store it as the method sub
store_global class, method, sub
.pcc_begin_return
.pcc_end_return
.end
.sub __create_class
.param string name
.param pmc base
.local pmc ret
# XXX: it works if you remove the (unused) parameter "base"
newclass ret, name
# add the constructor
__add_method( name, "__init" )
.pcc_begin_return
.return ret
.pcc_end_return
.end