How can I kind of “override” a function in an extern class please ?
Let say I have that, initially the function wants a NativeArray but I want to pass it a Haxe Array which I converts then into NativeArray … :
public inline function setFoo( a : Array<String> ) : Void {
#if php
setFoo( php.Lib.toPhpArray( a ) );
#end
}
Ok my bad, I think I haven’t understand well how overload works…
So is it the right way to do that please ? :
overload public function setFoo( a : php.NativeArray ) : Void;
overload inline function setFoo( a : Array<String> ) : Void{
#if php
setFoo( php.Lib.toPhpArray( a ) );
#end
}
All overloads of a same function need to be overload extern inline, not only the new one. I suppose you can indeed skip the extern keyword in an extern class, but not the inline keyword.
This should work for your use case:
@:noCompletion @:native('setFoo') function _setFoo(a:php.NativeArray):Void;
overload inline function setFoo(a:php.NativeArray):Void _setFoo(a);
overload inline function setFoo(a:Array<String>):Void {
#if php _setFoo(php.Lib.toPhpArray(a)); #end
}
(not sure how the #if php is useful since it’s overloading a function using php.NativeArray as argument…)
But I can confirm you that it works as I wrote (so the native one without inline keyword…), I’ll rewrite it as it is in my code and I’ve just tested it like that (it takes the right overload function with 2 different arguments…) :
@:native('Google_Client')
extern class Client {
public function new():Void;
public function useApplicationDefaultCredentials( ?b : Bool ):Void;
public function getConfig( s : String ) : Dynamic;
overload public function setScopes( a : php.NativeArray ) : Void;
overload inline function setScopes( a : Array<String> ) : Void{
#if php
setScopes( php.Lib.toPhpArray( a ) );
#end
}
public function addScope( e : String ):Void;
public function setSubject( s : String ):Void;
public function setDefer( b : Bool ):Void;
...
}