On 25 Jun 2009, at 20:58, Inoussa OUEDRAOGO wrote:

2009/6/25 Jonas Maebe <jonas.ma...@elis.ugent.be>:

It's equally accurate. A hex number does not contain any sign information,
so both interpretations are valid.

so it could be parsed as QWord accurately and assigned to a QWord
(typed) variable without warning, as it is an assignment between two
QWORD values.

Pascal is a context-insensitive language, which means that the type of an expression does not depend on the context in which it is used. The types always fully depend on the expression itself. Therefore the parser cannot parse it as "int64 or qword", it has to pick one. So a choice has to be made between int64 and qword, and this choice has to be the same for every usage of such an expression. The choice has been, from the very beginning, int64.

Therefore, while the compiler could be changed to parse it as qword instead, it is not possible (without violating the spirit of the Pascal language and complicating the compiler) to make the compiler decide "this expression originally came from a hex value and it was possible to interpret it both as an int64 and a qword, and now I see it is used as a qword, so let us assume that the programmer meant it to represent a qword".

 * I do want to understand the basics, the fondaments of such a
decision ( to parsed as Int64 )

The original reasons were
a) FPC only supported int64 and no qword for a while, so when qword support was added the behaviour was kept the same for backward compatibility
b) Delphi compatibility


Jonas
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to