lysis-java
lysis-java copied to clipboard
Missing braces around else statements in nested if-else decompilation
The else block in a nested if-else is missing braces around its statements in the decompilation, which means those statements will always execute even if the if condition is true. Seems to only affect second level if-else nesting. Example:
#pragma semicolon 1;
#include <sourcemod>
public OnPluginStart()
{
new i = 1, j = 2, k = 3;
// case 1
if (i == 1)
LogMessage("if 1");
else
LogMessage("else 1");
// case 2
if (i == 1)
{
if (j == 2)
LogMessage("if 2");
else
LogMessage("else 2 bad");
}
// case 3
if (i == 1)
{
if (j == 2)
{
LogMessage("if 3");
}
else
{
LogMessage("else 3 bad");
}
}
// case 4
if (i == 1)
{
if (j == 2)
{
if (k == 3)
LogMessage("if 4");
else
LogMessage("else 4");
}
else
{
LogMessage("else 4 bad");
}
}
// case 5
if (i == 1)
{
if (j == 2)
{
if (k == 3)
{
LogMessage("if 5");
}
else
{
LogMessage("else 5");
}
}
else
{
if (k == 3)
{
LogMessage("if 5");
}
else
{
LogMessage("else 5 bad");
}
}
}
}
Decompilation:
public void:OnPluginStart()
{
new i = 1;
new j = 2;
new k = 3;
if (i == 1)
{
LogMessage("if 1");
}
else
{
LogMessage("else 1");
}
if (i == 1)
{
if (j == 2)
{
LogMessage("if 2");
}
LogMessage("else 2 bad");
}
if (i == 1)
{
if (j == 2)
{
LogMessage("if 3");
}
LogMessage("else 3 bad");
}
if (i == 1)
{
if (j == 2)
{
if (k == 3)
{
LogMessage("if 4");
}
else
{
LogMessage("else 4");
}
}
LogMessage("else 4 bad");
}
if (i == 1)
{
if (j == 2)
{
if (k == 3)
{
LogMessage("if 5");
}
else
{
LogMessage("else 5");
}
}
if (k == 3)
{
LogMessage("if 5");
}
LogMessage("else 5 bad");
}
return void:0;
}