I've narrowed down the issue to this condition: if the package's name is part 
something that we already have in core, then this bug (is it a bug?) appears:

No names to clash with core types; everything works:
    $ cat Foo.pm6 
    unit package Bar;
    class Ber {}
    $ perl6 -I. -MFoo -e 'say Bar::Ber'
    (Ber)

Now package, as Op's, clashes with core Pod:: namespace the issue is there:
    $ cat Foo.pm6 
    unit package Pod;
    class Ber {}
    $ perl6 -I. -MFoo -e 'say Pod::Ber'
    Could not find symbol '&Ber'
    in block <unit> at -e line 1

And this can be reproduced if we clash with something else, like IO role:
    $ cat Foo.pm6 
    unit package IO;
    class Ber {}
    $ perl6 -I. -MFoo -e 'say IO::Ber'
    Could not find symbol '&Ber'
    in block <unit> at -e line 1



On Wed Oct 12 07:07:19 2016, mt1...@gmail.com wrote:
> Hi,
> 
> I wanted to define a class in the 'Pod' package like so (in file 
> lib/Pod/Render.pm6)
> 
> 
> use Pod::To::HTML;
> unit package Pod;
> class Render {
>    # ...
> }
> 
> 
> Then use it
> 
> use Pod::Render;
> my Pod::Render $pr .= new;
> 
> Throws the exception
> 
> ===SORRY!===
> Type 'Pod::Render' is not declared
> at /home/marcel/Languages/Perl6/Projects/pod-render/bin/pod-render.pl6:10
> ------>   my Pod::Render⏏ $pr .= new;
> Malformed my
> at /home/marcel/Languages/Perl6/Projects/pod-render/bin/pod-render.pl6:10
> ------>   my Pod::⏏Render $pr .= new;
> 
> 
> I expect it to instantiate without problems as seen in my other projects.
> 
> When the declaration becomes like below, everything goes well.
> 
> use Pod::To::HTML;
> class Pod::Render {
> 
> }
> 
> 
> Greetings,
> Marcel
> 



Reply via email to