When a Lingo void is TRUE and when it is FALSE...

From a recent message by Emmanuel Beuque:

So has anyone been able to say in which case a <void> value could evaluate as TRUE ? At the beginning, Kerry suggested it was a Windows only thing but I today encountered this on a Mac.

In my case, the value was the result of a sendAllSprites() call with D8.5.0 authoring on MacOS9. I think Kerry was also using a call to a list of instances or something similar.

-- this was done in a MIAW closeWindow handler BTW
tResult = sendAllSprites(#event)

if tResult then
   put tResult, "is TRUE"
else
   put tResult, "is FALSE"
end if

only one sprite had a behavior with this handler and it might return TRUE or exit (could "exit" be considered the same as return(VOID) ?)

and I get in the message window :

-- <void> "is TRUE"

If I simply add one line :

tResult = sendAllSprites(#event)

if voidP(tResult) then tResult = VOID
if tResult then
   put tResult, "is TRUE"
else
   put tResult, "is FALSE"
end if

then I get :

-- <void> "is FALSE"

Notice how I had reset tResult to VOID, not to FALSE, if voidP(tResult).

So there must be 2 kind of <void> values in Lingo, some might be considered as TRUE, most are considered as FALSE.

Is this a bug? Is this a feature? Has you found this in your Lingo code?

To determine what is really happenning behind the scene, I have crafted a little (worthless) Xtra that will help you determine what is the real value of your variables, and to test whether your <void> is false in the true sense or true (in a false sense).