hi!
well argv, after reconsideration i'm going to conclude that you're right, but for the wrong reasons ;P in your example, i would have said yes.. $ans should be checked for being a potential variable name. i would have reasoned that the , is strictly part of /var syntax just as commas are also a part of identifier syntax, and should be treated as such. if the scripter didn't want to indicate a new variable declaration they could just as easily escape it with something like $chr() as usual
i can't actually think of any examples in which the outcome would be non-deterministic, but the mere fact that the decision making can get quite confusing, more so when considering the =, makes me second guess the suggestion (in retrospect, i guess it was more of a suggestion than a bug report ;P)
a better example of potential confusion would be here:
//var %a = % $+ x, $+(%a,b) something
so, what should happen if i had my way? mirc would see the , and then try to figure out if the next piece of code was a variable name. it would have to evaluate $+(), but which value should it use for %a? if it is indeed a new variable declaration, then it should use the value of %a that was just declared, "%x", and as such it would consider it a new declaration. i'm thinking it should 'try' the new value of %a, if the result turns out to be a variable name.. go with it. if not, then reverse your steps to the comma, re-evaluate it the way it does now
even in that case though, the result would be completely deterministic. but the series of rules i described above might just be too obscure to be considered
qwerty, i hadn't realized "" was also treated as $null during evaluation as well as assignment, that's just plain wrong :P i mean, if the scripter managed to assign "" to a variable, as you said it could only have been done explicitly through the scripts editor. for mirc to not honor that is quite inconsiderate indeed!
i'm not sure what you mean by storing additional information, the logical fix here is to adapt the assignment side of things slightly: give only /set -n the ability to store "". but the evaluation side of things should be changed completely, "" should not be evaluated as $null at all, since if it exists in a variable then it had to have been put there with great intent