Hi,

the patch I provided has not yet been reviewed or applied. Could anybody
have a look at it? It'll only take 5 minutes or so. If it's ok, it can
be applied before this month's release, and this ticket can be closed.

Thanks in advance,

kjs

On Mon Oct 08 06:50:29 2007, kjs wrote:
> On 10/8/07, Klaas-Jan Stol <[EMAIL PROTECTED]> wrote:
> >
> >
> >
> > On 10/8/07, Allison Randal <[EMAIL PROTECTED]> wrote:
> > >
> > > Klaas-Jan Stol wrote:
> > > > I think it should be something like this:
> > > >
> > > >       /* RT46099 Check we don't already have this parent. */
> > > >
> > > >          /* If we have already added a method with this name... */
> > > >         if (VTABLE_exists_keyed_str(interp, _class->all_parents,
> > > > VTABLE_name(interp, parent))) {
> > > >             real_exception(interp, NULL, E_NotImplementedError,
> > > >                 "This class already has this parent.");
> > > >         }
> > >
> > > Great start. Change "method" to "parent" in the comment. You'll
want to
> > > check the immediate parents of the class, not all inherited
parents, so
> > > you need to be looking at _class->parents, instead of
> > > _class->all_parents. And, unlike methods, parents are stored as an
array
> > > of class objects, not a hash keyed by class name, so you'll need
to loop
> > > over the parents array and check 'VTABLE_is_same' on each.
> > >
> > > Also, it'd be good to add more information to the real_exception
> > > message, like:
> > >
> > >              real_exception(interp, NULL, E_NotImplementedError,
> > >                  "The class '%S' already has a parent class '%S'. "
> > >                  "It may have been supplied by a role.",
> > >                  VTABLE_get_string(interp, SELF),
> > >                  VTABLE_get_string(interp, parent));
> >
> >
> > thanks for your pointers.
> >
> > > can't test this, parrot does not build in pdd15 branch.
> > > > it should be more or less like this, based on impl of add_attribute.
> > > >
> > > > the headerfile classobject.h is missing in the branch, while it is
> > > there in
> > > > trunk. Is this right?
> > >
> > > The pdd15oo branch does build (since Saturday), and passes most of its
> > > tests. Try 'make realclean', as some files have moved ( classobject.h,
> > > for example, is now include/parrot/oo_private.h).
> >
> >
> > thanks, works!
> >
> > Attached a patch  that should do the trick. I could not get
VTABLE_is_same
> > working, some error about parrot_string_t not having a member
'vtable' or
> > something like that. Instead I  looked around and found some other
> > comparison function.
> >
> > > btw, the type of exception should be changed, also for other methods.
> > >
> > > Agreed.
> >
> >
> > but not sure which type yet. for now I didn't change it, they can be all
> > reviewed in one go I think.
> >
> 
> whoops, I meant I did change it, to INVALID_OPERATION, but I think that's
> not really descriptive too. Let's change them all at once, later.
> 
> kjs
> >
> >



Reply via email to