Am Montag, 23. Oktober 2006 15:14 schrieb Patrick R. Michaud:
> >   .HLL 'pge', ''
> >   ...
> >   cl = newclass 'Exp'     # ['pge'; 'Exp']
> >   ...
> >   .namespace ['Exp']      # ['pge'; 'Exp']
> >   ...
> >   scl = subclass 'Exp', ['Exp'; 'Closure']  # ['pge'; 'Exp'; 'Closure']
> >   ...
>
> It's the ['Exp'; 'Closure'] that bothers me here -- I don't think
> that a subclass should have to include the name of its parent in
> the class name.  It should be:
>
>     scl = subclass 'Exp', 'Closure'    # ['pge'; 'Closure']

I'm of course seeing your point, but the implementation differs. I'll try to 
summarize all the guts with more details:

1) a class hasa namespace

This means that namespace names and class names are fully independent.

2) Above newclass/subclass actually are doing this:

(with names abbreviated for line-length's sake)

  opcode / directive             # Namespace          Class
  ---------------------------------------------------------------   
  .HLL 'p', ''                   # 'p'  (or ['p'])    --- (1)
  cl = newclass 'E'              # ['p'; 'E']         'E'  
  scl = subclass 'E', ['E'; 'C'] # ['p'; 'E'; 'C']    ['E' 'C']

3) when a class is created, the code in (2) tries to find a matching namespace 
in the current namespace then in the HLL namespace else a new namespace is 
created.

4) Summary - if you don't qualify the 'Closure' it just collides with the 
existing class of that name - that's it.

(1) no effect
(2) src/objects.c:577 ff

leo

Reply via email to