package python; import python.lib.Builtin.list; /** This type represents python `*args` feature, supporting passing arbitrary number of arguments to a function. Example: function f(args:VarArgs) {} f([1, 2, 3]); **/ @:analyzer(no_simplification) abstract VarArgs(Dynamic) { inline function new(d:Array) { this = d; } inline function raw():Dynamic { return this; } @:to public inline function toArray():Array { return if (!Std.is(raw(), Array)) list(raw()) else (raw() : Array); } @:from static inline function fromArray(d:Array):VarArgs { return new VarArgs(d); } }