Ups, looks that part of the message has been lost, let's try again
> As you are the designer of xHarbour pp (as per copyright), could you
> please give us hints how to correct this situation without
> reengineering with object related things?
There is no way to fix it and keep current WITH OBJECT functionality
because exactly the same code can have different meaning, i.e.:
PROC main()
LOCAL obj := foo(), go := bar()
WITH OBJECT obj
go:recno() // execute GO command with :recno() parameter
from WITH OBJECT obj
go:recno() // execute recno() method in GO object
END
RETURN
I created current PP uses by Harbour and xHarbour anyhow I'm really
sorry but I cannot create code clever enough to guess what programmer
needs and decode the same line in different ways. So far we do not
have hardware interface with programmer brain to extract informations
necessary for proper decision ;-)
The only one thing I can propose is hack which reduces the conflict in
the situations when there is no space before ':'
Just simply when there is no space before ':' then it cannot be
accepted as PP expression so in example above in both cases we will
have go object method call and if programmer wants to execute GO
command with :recno() value from WITH OBJECT obj then he has to use:
go :recno()
I already implemented it in Harbour and xHarbour to reduce the problem
(which still exists because Clipper behaves differently) but few years
ago Ron removed it from xHarbour. You can ask him why. Probably he
didn't know problems he created with this ill WITH OBJECT syntax.
If you can agree what to do with it then you can restore it. For me
this subject is closed and I only hope that in the future new
'features' will be better designed.
best regards,
Przemek