The code below runs on Icarus (and ModelSim), reporting 'Hello world'. However, it is rejected as invalid by Riviera-PRO, Incisive, and VCS. Note that 'top.foo.foo.baz' is not a valid path to 'baz':
module foo;
task baz;
$write("Hello world!\n");
endtask
endmodule
module bar;
initial begin
top.foo.foo.baz;
$finish;
end
endmodule
module top;
foo foo();
bar bar();
endmodule
See also https://www.edaplayground.com/x/4hFf.
Also - getting confused - presumably v10 is still the latest-and-greatest? And is the search working? 'reported_by:EML' returns nothing.
The hierarchical search algorithm is indeed broken - it matches module names as well as instance names at intermediate levels in the hierarchy.
Setting target to devel, as that is where this will be fixed first.
v10.2 is the latest stable release - see https://github.com/steveicarus/iverilog/releases. v10.3 is coming soon.