# New Ticket Created by  Patrick R. Michaud 
# Please include the string:  [perl #58932]
# in the subject line of all future correspondence about this issue. 
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=58932 >


Sometime after the 0.7.1 release, the P6object library will change
so that double-colons will be treated as separators in class names
passed to the 'new_class' method.

Consider the following code:

    .local pmc p6meta
    p6meta = get_hll_global 'P6metaclass'
    p6meta.'new_class'('Foo::Bar')

Previously this would create a class ['Foo::Bar'] that
would look for its methods in the ['Foo::Bar'] namespace.
At some point after 0.7.1, the above will instead create
a class ['Foo';'Bar'] that looks for its methods in the ['Foo';'Bar']
namespace.

A method that is guaranteed to always bind the new class properly
to the namespace (even for other HLLs) is to pass the namespace 
itself as the first parameter to new_class:

    .local pmc p6meta, classns
    p6meta = get_hll_global 'P6metaclass'
    classns = get_hll_global ['Foo';'Bar']
    p6meta.'new_class'(classns)

If there is a case where the class name really needs to contain
double-colons, this can be done via a namespace parameter (above)
or by placing the name into an array of some sort:

    classns = get_hll_global ['Foo::Bar']
    p6meta.'new_class'(classns)

  or

    $P0 = split(' ', 'Foo::Bar')
    p6meta.'new_class'($P0)

Pm

Reply via email to