Yes, they can be seen as bugs, or perhaps misfeatures. As I said, if someone really _fixes_ the problem and do away with dir- and joinnodes completely so that the objects returned by the resolver actually implement the real modules, then by all means should -> work as it does on nonjoined file modules.
But until then, those objects are there and one better be aware of them. Trying to cheat around with `-> only adds confusion and complicates things.
Why should the user be forced to distinguish between dir and joinnodes,
I assume you mean distinguish between these objects and real modules which you'd get for nonjoined file pmod:s.
Most of the time the user doesn't have to bother if (s)he sticks to either . or []. [] works fine on real file pmods.
But in other cases: Because, with the current implementation, (s)he has to - see above.
especially as there is no way to actually know which is which without looking at them rather closely in hilfe.
Is done in the same way as most other object recognitions: foo->is_resolv_dirnode or foo->is_resolv_joinnode.
It's not in the documentation.
You're probably right. The documentation can be improved.