Math.cos example fails when targeting HashLink
Arazati opened this issue · 3 comments
While trying to follow the example code
var script = "
var sum = 0;
for( a in angles )
sum += Math.cos(a);
sum;
";
var parser = new hscript.Parser();
var program = parser.parseString(script);
var interp = new hscript.Interp();
interp.variables.set("Math",Math); // share the Math class
interp.variables.set("angles",[0,1,2,3]); // set the angles list
trace( interp.execute(program) );
with latest haxe 4.1.2 and hashlink 1.11.0, I get the error "Invalid function null" when it tries to find the cos function in Math. This -appears- to be a hashlink bug? But I'm not entirely sure if maybe there's a way around it that should be done in hscript instead.
The code executes as expected with both js and interp.
Reflect.getProperty(Math, "cos"); //null for HashLink target
Try with -dce no
maybe ?
-dce no
exposes random, min, and max, but not cos and others (specifically, none of the @:hlNative functions get reflection)
Was investigating this bug and found a 4 year unresolved issue, sad.
I discovered that interestingly you can get around this by creating a class that wraps the inaccessible functions and use it instead of std.Math
, like so:
class Mathf
{
public static function abs(a:Float):Float
{
return Math.abs(a);
}
}