Stack name conflicts resolved?
Mark Waddingham
mark at livecode.com
Mon Nov 7 13:01:26 EST 2016
On 2016-11-05 19:28, Richard Gaskin wrote:
> I've grown weary of stack name conflict over the years, and this
> morning decided to take some time to assess where we're really at with
> that and see if perhaps there's a way to handle things more liberally
> than how the IDE does now.
>
> That is, once we modify the IDE to allow it.
>
> Is there something I've missed here?
The engine has always been 'okay' (I believe) with substacks of the same
name when they are owned by *different* mainstacks - the only rule you
must follow in your code is that if you are referencing a substack when
the 'defaultStack' is not the main stack owning it, then you must use:
stack ... of stack ...
Just as you would if you have two controls with the same name in two
different groups.
There is still the general problem of having multiple mainstacks with
the same name, or multiple substacks with the same name with the same
owner. Unfortunately, I'm not sure there is a general solution to that
(mainly because we use stack <name> as the reference for a specific
stack in script, and when you start making cross-stack references, any
search order is likely to cause 'surprising' results at unexpected
times).
I'd perhaps use the observation that you wouldn't expect to have two
files in the same folder with the same name on disk... So why expect to
be able to have two mainstacks with the same name in memory? (Or indeed,
two substacks with the same name owned by the same stack).
I think it would be generally true to say that in one project, you don't
want more than one (main) stack with the same name - as you would never
know what stack you were referring to in script. I'd actually propose
that the only use-case for multiple (main) stacks with the same name is
for the purposes of editing (in the IDE) - e.g. so you can compare and
contrast two revisions of the same stackfile. However, beyond opening
two instances of the IDE, that isn't possible at present.
I do wonder if the engine was a little bit more hard-line about stack
naming if some of the issues people find might go away. Also, it *might*
be reasonable for the engine to actually rename a stack when loaded if
there is already one with the same name in memory - so you can at least
access it; although it might not work because its scripts might still be
using 'stack <name>' to refer to itself (which, of course, would refer
to the originally opened stack and not itself).
In regards to the IDE as it is now - it uses long ids to reference
objects internally throughout - and because this means substacks are
always references as stack X of stack Y, it now does not break if you
have two substacks with the same name in memory. (However 'the finding
the right stack' problem still exists if you have a substack anywhere
with the same name as a mainstack).
Warmest Regards,
Mark.
--
Mark Waddingham ~ mark at livecode.com ~ http://www.livecode.com/
LiveCode: Everyone can create apps
More information about the use-livecode
mailing list