I have the following code:
if (g_serverDisplayNameTask.HasSucceeded) {
g_serverDisplayName = g_serverDisplayNameTask.GetDisplayName(g_serverDisplayID);
I get a failed assertion in "asCCompiler::CompileStatementBlock": "tempVariables.GetLength() == 0". If I inspect the "node->tokenPos" there it points me to the 2nd line in the above snippet. Perhaps this means that the return value of get_HasSucceeded is getting leaked or so?
HasSucceeded is defined as "bool get_HasSucceeded()" and "void set_HasSucceeded(bool)", both with asCALL_GENERIC.
If I change the condition to be like "if (!x.y) {" then it doesn't happen. It also doesn't happen if I change it to "if (!x.y && true) {".
It also happens with much smaller similar pieces of code:
if (root.IsVisible) {
root.Hide();
} else {
root.Show();
}
It doesn't seem to happen with classes written in scripts, only from application registration.
This issue might be related, however I did add a set_X() function that simply throws an exception to work around the failed assertion: