ProjectXMLParser: handle Std.parseInt() returning null

Previously, null was propagated, which could lead to confusing errors from arithmetic operations. Now, it is ignored, and a warning is displayed that says where the invalid value can be found.
This commit is contained in:
Josh Tynjala
2024-05-22 09:09:50 -07:00
parent d2ea41570b
commit ac4039d849

View File

@@ -1361,12 +1361,28 @@ class ProjectXMLParser extends HXProject
if (element.has.width)
{
splashScreen.width = Std.parseInt(substitute(element.att.width));
var parsedValue = Std.parseInt(substitute(element.att.width));
if (parsedValue == null)
{
Log.warn("Ignoring unknown width=\"" + element.att.width + "\"");
}
else
{
splashScreen.width = parsedValue;
}
}
if (element.has.height)
{
splashScreen.height = Std.parseInt(substitute(element.att.height));
var parsedValue = Std.parseInt(substitute(element.att.height));
if (parsedValue == null)
{
Log.warn("Ignoring unknown height=\"" + element.att.height + "\"");
}
else
{
splashScreen.height = parsedValue;
}
}
splashScreens.push(splashScreen);
@@ -1446,8 +1462,30 @@ class ProjectXMLParser extends HXProject
var name = substitute(childElement.att.name);
var imageset = new LaunchStoryboard.ImageSet(name);
if (childElement.has.width) imageset.width = Std.parseInt(substitute(childElement.att.width));
if (childElement.has.height) imageset.height = Std.parseInt(substitute(childElement.att.height));
if (childElement.has.width)
{
var parsedValue = Std.parseInt(substitute(childElement.att.width));
if (parsedValue == null)
{
Log.warn("Ignoring unknown width=\"" + element.att.width + "\"");
}
else
{
imageset.width = parsedValue;
}
}
if (childElement.has.height)
{
var parsedValue = Std.parseInt(substitute(childElement.att.height));
if (parsedValue == null)
{
Log.warn("Ignoring unknown height=\"" + element.att.height + "\"");
}
else
{
imageset.height = parsedValue;
}
}
launchStoryboard.assets.push(imageset);
}
@@ -1470,22 +1508,54 @@ class ProjectXMLParser extends HXProject
if (element.has.size)
{
icon.size = icon.width = icon.height = Std.parseInt(substitute(element.att.size));
var parsedValue = Std.parseInt(substitute(element.att.size));
if (parsedValue == null)
{
Log.warn("Ignoring unknown size=\"" + element.att.size + "\"");
}
else
{
icon.size = icon.width = icon.height = parsedValue;
}
}
if (element.has.width)
{
icon.width = Std.parseInt(substitute(element.att.width));
var parsedValue = Std.parseInt(substitute(element.att.width));
if (parsedValue == null)
{
Log.warn("Ignoring unknown width=\"" + element.att.width + "\"");
}
else
{
icon.width = parsedValue;
}
}
if (element.has.height)
{
icon.height = Std.parseInt(substitute(element.att.height));
var parsedValue = Std.parseInt(substitute(element.att.height));
if (parsedValue == null)
{
Log.warn("Ignoring unknown height=\"" + element.att.height + "\"");
}
else
{
icon.height = parsedValue;
}
}
if (element.has.priority)
{
icon.priority = Std.parseInt(substitute(element.att.priority));
var parsedValue = Std.parseInt(substitute(element.att.priority));
if (parsedValue == null)
{
Log.warn("Ignoring unknown priority=\"" + element.att.priority + "\"");
}
else
{
icon.priority = parsedValue;
}
}
icons.push(icon);
@@ -1786,10 +1856,26 @@ class ProjectXMLParser extends HXProject
switch (name)
{
case "minimum-sdk-version":
config.set("android.minimum-sdk-version", Std.parseInt(value));
var parsedValue = Std.parseInt(value);
if (parsedValue == null)
{
Log.warn("Ignoring unknown " + name + "=\"" + value + "\"");
}
else
{
config.set("android.minimum-sdk-version", parsedValue);
}
case "target-sdk-version":
config.set("android.target-sdk-version", Std.parseInt(value));
var parsedValue = Std.parseInt(value);
if (parsedValue == null)
{
Log.warn("Ignoring unknown " + name + "=\"" + value + "\"");
}
else
{
config.set("android.target-sdk-version", parsedValue);
}
case "install-location":
config.set("android.install-location", value);
@@ -1960,7 +2046,15 @@ class ProjectXMLParser extends HXProject
if (element.has.id)
{
id = Std.parseInt(substitute(element.att.id));
var parsedValue = Std.parseInt(substitute(element.att.id));
if (parsedValue == null)
{
Log.warn("Ignoring unknown id=\"" + element.att.id + "\"");
}
else
{
id = parsedValue;
}
}
while (id >= windows.length)
@@ -1992,7 +2086,15 @@ class ProjectXMLParser extends HXProject
}
else
{
windows[id].background = Std.parseInt(value);
var parsedValue = Std.parseInt(value);
if (parsedValue == null)
{
Log.warn("Ignoring unknown " + name + "=\"" + value + "\"");
}
else
{
windows[id].background = parsedValue;
}
}
}
@@ -2005,7 +2107,15 @@ class ProjectXMLParser extends HXProject
}
case "height", "width", "fps", "antialiasing":
Reflect.setField(windows[id], name, Std.parseInt(value));
var parsedValue = Std.parseInt(value);
if (parsedValue == null)
{
Log.warn("Ignoring unknown " + name + "=\"" + value + "\"");
}
else
{
Reflect.setField(windows[id], name, parsedValue);
}
case "parameters", "title":
Reflect.setField(windows[id], name, Std.string(value));
@@ -2014,7 +2124,15 @@ class ProjectXMLParser extends HXProject
Reflect.setField(windows[id], "allowHighDPI", value == "true");
case "color-depth":
Reflect.setField(windows[id], "colorDepth", Std.parseInt(value));
var parsedValue = Std.parseInt(value);
if (parsedValue == null)
{
Log.warn("Ignoring unknown " + name + "=\"" + value + "\"");
}
else
{
Reflect.setField(windows[id], "colorDepth", parsedValue);
}
default:
if (Reflect.hasField(WindowData.expectedFields, name))