I noticed this problem when using pike -M in 7.6 and I guess its known, since it does not occur anymore in pike 7.8. Consider this situation:
one has some module directory and a class from that module is used somewhere in module.pmod. Using these examples
* dir/module.pmod
string h(int i) { return .A()->h(i); }
* dir/A.pike
string h(int i) { return String.int2char(i); }
Now, when using pike -M dir/ I get the following error:
dir/A.pike:2:Got placeholder object (resolver problem) when resolving 'String'. dir/A.pike:2:Undefined identifier "String". dir/A.pike:2:Got placeholder object (resolver problem) when resolving 'String'. dir/A.pike:2:Undefined identifier "String". dir/module.pmod:2:Error looking up 'A' in module '.'. Attempt to call the NULL-value Unknown program: 0()
The problem goes away either by using A() instead of .A() or by using pike -M dir without the "/". Is this a bug or am I doing something wrong here?
arne
It's a bug, of course. Errors saying "resolver problem" shouldn't really occur at all (unless the resolver in the master has been replaced, perhaps).
The architecture in the compiler and resolver is unfortunately flawed so all those cases cannot be fixed without a major rewrite, but in this case it looks like a simple path trimming bug.
pike-devel@lists.lysator.liu.se