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 ~ m...@livecode.com ~ http://www.livecode.com/
LiveCode: Everyone can create apps


_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to