Resolution Difficulties
Having sketched a basic picture of how terminology is resolved, we can proceed to cover various complications that occasionally arise.
Conflict Resolution
Terms are sought in the dictionaries of the innermost application, of AppleScript itself, and of all scripting additions, as well as in the script. Given such a large namespace involving multiple independent entities, it is possible for conflicts to arise. Such a conflict is called a terminology clash. Either the programmer generates the clash by an unwise choice of variable names, or different dictionaries generate it by defining the same term in different ways.
Clash caused by the programmer
When the programmer causes a terminology clash, various things can happen. Sometimes the code won’t compile; sometimes it won’t run; sometimes it runs but gets an unexpected result; sometimes the clash is resolved sensibly and there’s no problem.
When the compiler stops you from using a term, it is generally because the term is defined elsewhere as a certain “part of speech” and you’re trying to use it in a different way. For example, this won’t compile:
local container
tell application "Finder" to set container to 7 -- compile-time errorWithin the context of a tell directed at the
Finder, container is resolved as the
Finder’s term container, which is
a class name; that’s not something that can be
assigned to, so the compiler balks.
You may be wondering what happened to rule 1 under Section 19.1.2.2. Rule 1 didn’t ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access