Here, I found this on page 107 (second-last paragraph) of the ref.pdf document that comes with FPC v2.0.0:

The uses clause serves to identify all units that are needed by the program. The system unit doesn?¢_Tt have to be in this list, since it is always loaded by the compiler. The order in which the units appear is significant, it determines in which order they are initialized. Units are initialized in the same order as they appear in the uses clause. Identifiers are searched in the opposite order, i.e. when the compiler searches for an identifier, then it looks first in the last unit in the uses clause, then the last but one, and so on.
This explains the behaviour we are seeing. In the source code above, when the compiler encounters TPoint in the testunit.pas file, it first looks in Classes, which is the last unit in the uses clause and where it finds the definition of TPoint, at which point it complains about incompatible types.

I will look at my earlier versions of this document to see if it's different.