On Friday 18 January 2008 20:12, John Stoneham wrote: [Ada package system] > However, you can also do: > with Unit_1; use Unit_1; > This imports the namespace of Unit_1 into the current file so that > now you *can* refernce "foo" without a qualifier. It's as if all the > identifiers in Unit_1 were defined in the current file (and so yes, > you can get conflicts).
Yes, and that's what "uses Unit_1;" in Pascal does. The only difference between Pascal and Ada is that Ada complains about ambiguities (same identifier in different modules) while Pascal's "scope model" just uses the identifier from the last used module (while you're still able to overwrite that behaviour by prefixing the identifier just like you're required to do in Ada in case of ambiguities). So, the only difference is that Ada plays it safe and complains about ambiguities while a Pascal compiler tries to resolve the ambiguity by itself (and sometimes fails in a horrible way - I still remember the issue I once had, when I just reordered the "used" units and without changing any code, the application suddenly started crashing, because it used a different "DisposeStr" then. BTW, that's one of the reasons why I always use prefixed notation in Pascal now, just like I do in Ada). (As written before, this explanation is more from a user's point of view than from the view of a compiler writer.) Vinzent. _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal