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


Given the following (somewhat unusual) file layout:

-- lib/Program.pm6 --
use Vector; # included in lib/Java
class Program { }
-- cut here --

-- lib/Java/Vector.pm6 --
use String; # Included in lib/Java
class Vector { }
-- cut here --

-- lib/Java/String.pm6 --
class String { }
-- cut here --

invoke with:

perl6 -c -Ilib -Ilib/Java lib/Program.pm6

Resolution order *should* go something like this (though I'm aware that 
@INC is an old-fashioned notion):

read lib/Program.pm, attempt to resolve Vector.
readdir lib/, find no Vector.pm or .pm6
readdir lib/Java, find Vector.pm6
Read lib/Java/Vector.pm6, attempt to resolve String.
readdir lib/, find no String.pm or .pm6
readdir lib/Java, find String.pm6
Compile.

I'd accept OOM or looping (I've seen both behaviors while playing with 
this) if I were foolish enough to create mutually-recursive includes, 
although I would be surprised. There is no recursion, mutual or 
otherwise, going on here though. lib/Java is a subdirectory of lib/ and 
I'm well aware that could be playing havoc with file includes. I'm also 
aware that ordinarily lib/Java/Vector.pm6 would contain a class called 
'class Java::Vector { }', but I wanted to experiment with a slightly 
different kind of include style and ran across what appears to me to be 
a quirk.

Reply via email to